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

时间:2010-09-24 19:06:20

标签: php model-view-controller

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

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

由于

3 个答案:

答案 0 :(得分:5)

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

您的模型是您的核心应用程序。它可能会自行分层,例如分为数据访问层(您的AdoDB内容),Domain ModelService Layer。如何组织模型取决于您要构建的应用程序。 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();
    }
}

这个

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

答案 1 :(得分:0)

您可以通过从模型(映射到数据库的对象)和控制器(执行“的PHP文件”中分离视图文件(使用Smarty或普通的旧PHP文件)来自行编写MVC样式的任何代码。捣蛋“),但我会推荐一个PHP框架,它已经为你做了繁重的工作。

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

CakePHP = cakephp.org *非常光滑

Kohana = kohanaframework.org *需要php5 +,基于CodeIgniter

CodeIgniter = codeigniter.com *需要php4 +

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

答案 2 :(得分:-2)

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

如果你想学习MVC范例,学习一个php MVC框架。学习2甚至更好。

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