如何在PHP中使用MVC范例和ADODB作为DAL?

joh*_*nny 0 php model-view-controller

没有ORM.我所知道的是我有PHP 5+和adodb.从这两个,我怎么能使用MVC?我不能使用其他框架而且我"不要求有人从头开始构建任何东西(我想学习!).但是我怎么能从这里开始?我知道如何混合不正确的经典asp风格.我不知道什么知道怎么做,在一个非常基本的层面上就是做MVC.说我有一个模型只是一些adodb和SQL,我怎么能从我的"模型"到我的视图呢?或者我怎么称呼我的控制器有什么东西,因为我没有ORM来打电话?

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

谢谢

Gor*_*don 5

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

您的模型是您的核心应用程序.它可能会分层,例如分层到数据访问层(您的AdoDB内容),域模型服务层.如何组织模型取决于您要构建的应用程序.MVC的重要一点是保持模型独立于演示.您的应用程序应该能够解决在没有UI的情况下编写的问题.UI只是顶部的一个界面.

基本上,只要您的控制器保持薄,并执行此操作

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

不是这个

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                 ...
         */
    }
}
Run Code Online (Sandbox Code Playgroud)

你很好.就像我说的,没有什么神奇的.你必须让他们分开.

我建议你看看其他框架,看看它们如何接近MVC.这并不是说你应该复制或使用它们,而是试着去了解它们是如何进行MVC的.另请参阅Rasmus Lerdorf的文章The no-framework PHP MVC框架