静态吸气剂/定位器的缺点

时间:2015-09-30 22:08:43

标签: php codeigniter oop

我不知道这个问题是否适合这个网站,但无论如何我会问:使用静态吸气剂的缺点是什么?对于我的网站,我使用CodeIgniter,我在MY_Model.php中编写了一个“finder”函数。各个模型使用此模型作为父模型,只是镜像数据库。我将使用我的finder方法获取模型的对象,然后使用静态getter(也在MY_Model.php中声明)获取属性。像这样:

<?php
$article = Article::find(array(
    'id' => $someId,
));
echo Article::get($article, 'title');

或者例如,如果我必须编辑一个条目,我可以这样做:

<?php
$article = Article::find(array(
    'id' => $someId,
));
Article::set($article, 'title', $theTitle)
       ->set($article, 'text', $theText);
if (!$article->update()) {
    return false;
}
return true;

我知道的第一个真正的缺点是,它完全违背了“瘦控制器,胖模型”原则,因为我只在模型中声明变量,镜像表字段加上可能是某些单独的函数。但它完全抹去了为每个属性编写getter和setter函数的必要性。

1 个答案:

答案 0 :(得分:0)

你也可以选择魔术方法,并以这种方式将getter和setter作为对象方法。

然而,我不知道我是否明白了你的问题。在我看来,你想要做的是以某种方式ORM。 ORM与模型不同。模型不关心持久层和反映层,他们甚至不知道它。

相关问题