何时在PHP上使用MVC?

何时在PHP上使用MVC?,php,model-view-controller,Php,Model View Controller,好吧,我想我正在把我自己推到这里,我正在用我自己的MVC创建一个项目,即使我不知道MVS本身是什么 <?php class init { function __construct() { $this->enviroment(); $this->start(); } function enviroment() {

好吧,我想我正在把我自己推到这里,我正在用我自己的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/?$getuserwww.someurl.com/myname或某个用户时

无论如何,我的问题是什么时候我们真的需要PHP的MVC

我在看facebook等等

他们仍然使用
?this=blabla
get,所以他们不是MVC,对吗?不管怎么说,我仍然很困惑,如果没有它,facebook怎么办。(htaccess?)

如果他们不使用MVC,那么我们什么时候真正需要它

注:

我已经阅读了很多关于何时使用MVC的帖子,但我还没有在我的问题中找到一个,如果有,请留下评论,以便我可以阅读:)


非常感谢。

MVC是一种关注点分离的架构模式;URL与此无关

URL由服务器处理。如果您使用的是Apache,请设置mod_rewrite


话虽如此,您可能不想重新发明轮子,但看看外面的选项,有很多面向MVC的PHP框架。找到一个你喜欢的并且可以高效地使用它。

你试图编写自己的mvc,这对你自己来说真的很难。(这不是通过操纵URL方案来实现的)。虽然自己编写一个是一个很好的教育体验,但通过重新发明轮子,您将无法获得MVC模式的质量水平和好处

用symfony、zend、codeigniter cake或任何优秀的开源MVC框架编写应用程序。当你感觉到它应该如何工作,那么你应该创造自己的乐趣


这些框架的存在是为了让您的项目更快地编码,更易于维护

> P>您可以考虑使用许多不同的MVC框架之一,例如OR。这些框架已经由许多人开发并经过一段时间的改进。MVC不是必需的,但一旦建立了样板文件,创建web应用程序的速度就非常快。

我认为您将MVC与查询参数混淆了。这两者不一定是相互关联的,尽管更流行的PHP MVC框架确实使用mod_rewrite或等效方法屏蔽了参数


MVC只是将表示逻辑与业务逻辑分开的一种方法。可以这样想:如果你有一个使用MVC的网站,你只需根据浏览器更改视图就可以轻松创建一个手机版本,你的网站的逻辑不需要更改,只需要更改发送给客户端的HTML。

我相信你会混淆MVC和having()


MVC只是一种分离实体和模块的编码模式。与GUI模板中的应用程序逻辑类似,而URL模式则完全不同。URL仅用于访问Web资源。如果您不使用.htaccess,像CodeIgnitor这样的MVC框架仍然会提供“丑陋”的URL。您的问题似乎把两个不同的主题混淆在一起了。模型视图控制器(MVC)和漂亮的URL

模型视图控制器是一种设计范例,允许您分离逻辑(模型)、模板(视图)和定向输入/输出(控制器)

漂亮的URL另一方面,允许根据格式规则(通常是.htaccess规则)重定向URL

-设计范例信息

-使用Apache的mod_rewrite实现


-关于什么是重写引擎的信息。

何时使用。。。一直以来,这是一个很好的做法


就个人而言,我的选择:SymphonandDoctrine可以更容易地由团队编写大型应用程序。但是从CodeIgniter开始。

将代码、HTML和数据保存在不同的文件夹中是构建应用程序的最基本方式,这也是实现MVC:organization的主要原因

大多数框架中的其他设计模式都是对MVC的补充,它们促进了代码重用、快速开发等。但是,即使没有MVC,您也可以实现后者——所需要的只是一个代码库!大多数框架使用MVC设计模式,但MVC!=框架

有些框架要求您调整Apache(Lighty、Nginx等),使其成为框架扩展。漂亮的URL只是一种表示控制器使用的输入数据(视图)的方式,以便后者可以路由到适当的处理程序。从这个角度来看,.htaccess是此类框架的MVC不可或缺的一部分


在你深入研究你的项目之前,多做一些研究是有帮助的。大多数框架都采用了复杂的MVC方法,这导致了许多混乱。使用更直接、更容易遵循的路径。

我同意这一点。使用cakePHP隐藏了很多你不必担心的东西,这样你就可以完成你的工作。MVC是一个很好的模式,可以使用很多原因,从零开始创建自己的模式,尽管这可能不是最好的方法。我想说,看看流行的PHP框架,看看它们是如何解决您面临的问题的,而且都是非常流行的框架。|,顺便问一下,它真的需要吗?我什么时候才能知道什么时候真的需要mvc?@Adam Ramadhan mvc是一种设计模式。每个设计模式都有自己的理论用途,实现细节通常在某种程度上与模式不同。了解您是否会从MVC中受益的唯一方法是了解什么是MVC以及它与您的项目的关系。希望您能得到所需的答案。是的,在使用实用风格(旧编程风格)时,使用MVC时仍然感到困惑,例如使用include controller视图(在一个文件中)。也许我会等20天或更长时间:|。顺便说一句,回答得好。只是需要一些时间。谢谢。你