когда использовать MVC на PHP? - PullRequest
8 голосов
/ 30 июля 2010

Ладно, я думаю, что я далеко зашёл здесь, я создаю проект в своем собственном MVC, даже если я не знаю, что такое MVS,

<?php    

class init
    {
        function __construct()
        {
            $this->enviroment();
            $this->start();
        }

        function enviroment()
        {
            /* Required Classes */  
            require_once( ROOTPATH . BOOTSTRAP . REDENGINE . '/class.debug.php');
            require_once( ROOTPATH . BOOTSTRAP . REDENGINE . '/class.theme.php');
            require_once( ROOTPATH . BOOTSTRAP . REDENGINE . '/class.url.php');
            require_once( ROOTPATH . BOOTSTRAP . REDENGINE . '/language/class.lang.php');
            require_once( ROOTPATH . BOOTSTRAP . REDENGINE . '/class.sessions.php');
        }
        function start()
        {   
            /* Start Classes */
            $uSys = new Urlsystem;
            $fragments = $uSys->getFragments();
            $tSys = new ThemeSystem;
            $lSys = new LanguageSystem;
            $sSys = new Sessions;   

            /* defineing APPVIEWS & APPCONTROLLER */        
            define( 'APPVIEWS', '/appviews' );
            define( 'APPCONTROLLER', '/appcontroller' );

            if ( empty($fragments) )
            {
                require_once( ROOTPATH . APPCONTROLLER . '/app.home.php'); /* default app controller page */
                require_once( ROOTPATH . APPVIEWS . '/view.home.php'); /* default app views page */
            }

            if ( !empty($fragments) )
            {
                // Start ENGINE
                if ( !file_exists(ROOTPATH . APPCONTROLLER . '/app' . $fragments . '.php') &&
                     !file_exists(ROOTPATH . APPVIEWS . '/view' . $fragments. '.php')
                ) {

                            if ( file_exists(ROOTPATH . APPCONTROLLER . '/app.404.php') &&
                                 file_exists(ROOTPATH . APPVIEWS . '/view.404.php')
                             ) {
                                require ROOTPATH . APPCONTROLLER . '/app.404.php';
                                require ROOTPATH . APPVIEWS . '/view.404.php';
                            }
                            else {
                                echo "NO 404 APP || VIEW";
                            }
                }           
                if ( file_exists(ROOTPATH . APPCONTROLLER . '/app' .  $fragments . '.php') ) 
                {
                    require ROOTPATH . APPCONTROLLER . '/app' . $fragments . '.php'; // load application

                    if ( file_exists(ROOTPATH . APPVIEWS . '/view' .  $fragments . '.php') ) {
                        require ROOTPATH . APPVIEWS . '/view' .  $fragments . '.php';// load view
                    } 
                }
                // End ENGINE
            }       
        }
    } ?>

Хорошо, как вы видитемой фронт-контроллер, поэтому я знаю, что он выходит из строя, я просто замечаю свой сбой после того, как я почти закончу свой проект, особенно когда мне нужно сделать www.someurl.com /? $ getuser или www.someurl.com / myname или пользователь.

В любом случае, мой вопрос, когда нам действительно нужен MVC для PHP?

Я смотрю на Facebook и т. д.

Они по-прежнему используют ?this=blabla get, поэтому они не MVC, верно?В любом случае, я все еще не понимаю, как Facebook обходится без www.facebook.com / myname .(htaccess?)

Если они не используют MVC, то когда нам это действительно нужно?

Примечание:

Я читал много веток о том, когда использовать MVC, но я не нашел ни одной в своей проблеме, если есть, пожалуйста, оставьте комментарий такЯ умею читать :)

Спасибо большое.

Ответы [ 8 ]

5 голосов
/ 30 июля 2010

Я полагаю, что вы путаетесь между MVC и RESTful-схемой URL (http://en.wikipedia.org/wiki/Representational_State_Transfer#RESTful_web_services).

MVC - это просто шаблон кодирования, который разделяет сущности и модули. Как и логика приложения из шаблонов GUI, а шаблон URL - это совсем другое. URL-адреса предназначены только для доступа к веб-ресурсу. Фреймворки MVC, такие как CodeIgnitor, могут по-прежнему давать вам «некрасивые» URL, если вы не работаете с .htaccess

2 голосов
/ 31 июля 2010

Сохранение вашего кода, HTML и данных в разных папках - это самый простой способ структурирования вашего приложения - и это основная причина реализации MVC: организация.

Другие шаблоны проектирования, представленные в большинстве сред, дополняютMVC, и они способствуют повторному использованию кода, быстрой разработке и т. Д. Но вы можете сделать последнее даже без MVC - все, что нужно, это библиотека кода!Большинство фреймворков используют шаблон проектирования MVC, но MVC! = Frameworks.

Некоторые фреймворки требуют настройки Apache (Lighty, Nginx и т. Д.), Чтобы сделать его расширением фреймворка.Красивые URL-адреса - это просто способ представления входных данных (представления), которые потребляются контроллером, чтобы последний мог направить к соответствующему обработчику.В этом свете .htaccess является неотъемлемой частью MVC для таких фреймворков.

Прежде чем углубиться в свой проект, он поможет немного больше исследовать.В большинстве фреймворков используется запутанный подход к MVC, что привело многих в замешательство. Обезжиренная структура использует более прямой и простой для понимания путь.

2 голосов
/ 30 июля 2010

Кажется, ваш вопрос смешивает две разные темы.Model View Controller (MVC) и красивые URL.

Model View Controller - это парадигма дизайна, которая позволяет вам отделить логику (модель), шаблоны (представления) и направляющий ввод/output(controller).

Красивые URL-адреса , с другой стороны, позволяют перенаправлять URL-адреса на основе правил форматирования ( обычно .htaccess rules ).

Model-View-Controller - информация о парадигме проектирования.

Учебное пособие по симпатичным URL-адресам - реализация использования Apachemod_rewrite.

mod_rewrite - информация о том, что такое механизм перезаписи.

2 голосов
/ 30 июля 2010

Я думаю, что вы путаете MVC с параметрами запроса. Они не обязательно связаны между собой, хотя это правда, что более популярные платформы PHP MVC маскируют параметры, используя mod_rewrite или эквивалентный метод.

MVC - это просто способ отделить логику представления от бизнес-логики. Подумайте об этом так: если у вас есть сайт, использующий MVC, вы можете легко создать версию для мобильного телефона, просто изменив представления на основе браузера, логику вашего сайта не нужно менять, только HTML-код, который отправляется клиент.

2 голосов
/ 30 июля 2010

MVC - это архитектурный шаблон, ориентированный на разделение интересов;URL не имеют к этому никакого отношения.

URL обрабатываются сервером.Если вы используете Apache, настройте mod_rewrite.

При этом, возможно, вы захотите не изобретать колесо, а взглянуть на доступные варианты, существует множество PHP-ориентированных фреймворков.Найдите тот, который вам нравится и может быть продуктивным, и используйте его.

1 голос
/ 30 июля 2010

Когда использовать ... Всегда хорошая практика.

Лично мой выбор: Symphone и Doctrine могут легче писать большие приложения командой. Но началось с CodeIgniter.

1 голос
/ 30 июля 2010

Вы можете начать с использования одной из множества различных MVC-сред, таких как CodeIgniter или cakePHP .Эти рамки были разработаны многими людьми и усовершенствованы в течение определенного периода времени.MVC не требуется, но как только шаблон установлен, создание веб-приложений происходит очень быстро.

0 голосов
/ 30 июля 2010

Вы действительно усложняете себе задачу, пытаясь написать свой собственный mvc. (Вы не делаете это, манипулируя схемой URL). Несмотря на то, что это хороший образовательный опыт, вы можете написать его самостоятельно, но не сможете получить уровень качества и преимущества шаблона MVC, изобретая колесо.

Напишите свое приложение в Symfony, Zend, Codeigniter Cake или любой из хороших платформ MVC с открытым исходным кодом. Когда вы почувствуете, как это должно работать, вы должны создать свой собственный для развлечения.

Эти платформы существуют для того, чтобы сделать ваши проекты быстрее в коде и более удобными в обслуживании.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...