php mvc对象交互

时间:2012-03-11 18:03:10

标签: php oop object

我在某种程度上混合了MVC和对象,我想知道我是否会采用正确的方式,或者我是否可以改变一些方法以改善我的方式。

我有一个使用带有对象的MVC模型的webapp。我也选择使用对象,所以我可以在需要的时候加载它们。其中一个对象是Tag对象(它扩展了用于DB访问的basemodel)。使用我的MVC框架,我可以从basecontroller加载模型,也可以形成basemodel(两者都运行自己的实例)。起初我从控制器加载Tag对象。今天我决定从模型中加载它。这两种方法都运行良好,但更好的选择是什么?为什么?

来自控制器(tag_controller.php)

function getTags()
{
    $this->_tagobject = $this->load->object('tagobject');
    $tags = $this->tags-getSomeTags();
}

来自带模型的控制器。 tagmodel.php

function __construct()
{
    $this->_tagobject = $this->load->object('tagobject');
}

function getTags()
{
    return $this->_tagobject->getTags();
}

tagcontroller.php

function __construct()
{
    $this->_tagmodel = $this->load->model('tagmodel');
}

function getTags()
{
    $this->_tagmodel->getTags();
}

任何改进建议都是非常受欢迎的,因为除了拥有灵活的对象外,我似乎无法看到真正的好处。

1 个答案:

答案 0 :(得分:0)

对于大多数应用程序,您与标记对象的交互将遵循CRUD操作(创建,读取,更新,删除),因此对我而言,它更倾向于模型。

如果我在Zend Framework(基于MVC的PHP框架)中使用标签,我会创建一个扩展Zend_Db_Table类的tags类,以及一个代表单个数据对象的tag类,所以我会能够像:

一样使用它
$tags->insert(new Tag('keyword'));
$tags->find('keyword');
$tags->delete('keyword');

将此功能放在控制器中是没有意义的。然后,这就是我的全部意见。