我不知道,如果这个问题符合这个网站,但我会问反正:什么是使用静态的干将的缺点?对于我的网站,我使用CodeIgniter,并在MY_Model.php中编写了“finder”函数。各个模型使用这个模型作为父类,只是对数据库进行镜像。我将使用我的finder方法获取模型的对象,然后使用静态getter(也在MY_Model.php中声明)获取属性。像这样:下行静态getter/setter方法
<?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函数的必要性。
** getters/setters are evils ** http://www.javaworld.com/article/2073723/core-java/why-getter-and-setter-methods-are-evil.html – Linus