2015-09-30 12 views
0

我不知道,如果这个问题符合这个网站,但我会问反正:什么是使用静态的干将的缺点?对于我的网站,我使用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函数的必要性。

+0

** getters/setters are evils ** http://www.javaworld.com/article/2073723/core-java/why-getter-and-setter-methods-are-evil.html – Linus

回答

0

你可以去魔术方法以及和具有getter和setter方法作为对象的方法这种方式。

不过,我不知道如果我得到你的问题点。在我看来,你试图做的是ORM莫名其妙。 ORM与模型不同。模型不关心持久层和反射层之类的东西,他们甚至不知道它。

+0

哇,我完全忘了魔术吸气剂和安装者......谢谢! –