代码之家  ›  专栏  ›  技术社区  ›  johnny

如何在PHP中使用MVC范式,并将ADODB作为DAL?

  •  0
  • johnny  · 技术社区  · 15 年前

    没有ORM。我只知道我有php 5+和adodb。从这两个方面来看,我如何使用MVC?我不能使用其他框架,我也不要求有人从头开始构建(我想学习!)但是我该怎么开始呢?我知道如何错误地混合东西经典的ASP风格。我不知道怎么做,在一个非常基本的层面上,就是做MVC。假设我有一个模型,它只是一些ADodb和SQL,如何让它从我的“模型”转到我的视图?或者我如何从我的控制器调用任何东西,因为我没有ORM可以调用?

    有人能给我一些具体的东西吗?我希望这是未来CMS的基础。

    谢谢

    3 回复  |  直到 15 年前
        1
  •  5
  •   Gordon Haim Evgi    15 年前

    没有什么神奇的 MVC . 它的目的是 将用户界面交互分为三个不同的角色。 重要的分离是模型和表示层之间的分离。表示层由控制器(句柄和从UI到模型的委托请求)和视图(呈现模型数据)组成。

    您的模型是您的核心应用程序。它很可能是分层的,例如,进入一个数据访问层(您的ADODB资料),一个 Domain Model 和A Service Layer . 如何组织模型实际上取决于您想要构建的应用程序。MVC最重要的是保持模型独立于表示。您的应用程序应该能够解决它在没有用户界面的情况下为其编写的问题。用户界面只是顶部的一个界面。

    基本上,只要你的控制器保持很薄并且这样做

    class SomeController
    {
        public function someAction()
        {
            $input   = filter_input(/* ... */);
            $adoDb   = $this->getModel('MyAdoDbClass');
            $newData = $adoDb->doSomethingWithInput($input);
            $this->getView()->setData($newData);
            $this->getView()->render();
        }
    }
    

    class SomeController
    {
        public function someAction()
        {
            $input  = filter_input(/* ... */);
            $adoDb  = new AdoDb; 
            /*
                all the code that belongs to doSomethingWithInput
                ...
            */
             echo '<html>'; 
            /*
                all the code that should belongs to the View                 ...
             */
        }
    }
    

    你很好。就像我说的,没有什么神奇的。你得把他们分开。

    我建议您看看其他框架,看看它们是如何接近MVC的。这并不是说你应该复制或使用它们,而是试着学习它们是如何发展成MVC的。也可以看看 Rasmus Lerdorf's article The no-framework PHP MVC framework

        2
  •  0
  •   RockMeetHardplace    15 年前

    只需将视图文件(使用智能或普通的旧PHP文件)与模型(映射到数据库的对象)和控制器(执行“crunching”操作的PHP文件)分开,您就可以自己编写任何具有MVC风格的代码,但我建议您使用一个已经执行了Avy为你举重。

    zend=zend.com*可以说是行业标准

    cakephp=cakephp.org*非常圆滑

    kohana=kohanaframework.org*需要php5+,基于codeigner

    codeigniter=codeigniter.com*需要php4+

    我是Kohana的忠实粉丝,它刚刚发布了一个新版本。Kohana有一个内置的ORM工具、一个视图对象和一个已经构建的控制器处理操作请求的方法。

        3
  •  -2
  •   burkestar    15 年前

    未来CMS的基础?为什么不从数不胜数的开源php cms项目开始,并将其分支以支持您的需求呢?

    如果您想学习MVC范式,请学习一个PHP MVC框架。学习2甚至更好。

    如果您想了解CMS系统是如何构建的,请从开放源码的系统中学习源代码。然后你就可以自己动手了,你会很开明的。

    推荐文章