嘿 我在这里寻找一些建议,我有一个通常的保存,删除和查找方法的简单模型,但是想要创建一个getAll方法,感觉错误将它放在模型中因为它与实际无关模型。我应该用哪种方式设计呢?
我目前的型号如下:
<?php
class User {
$id;
$name;
$address;
public function __construct() {
// do some constructor stuff
}
public function save() {
// insert into....
}
public function delete() {
// delete from user where ....
}
public function find($id) {
// select * from user where ...
}
}
?>
非常感谢任何帮助, 感谢
答案 0 :(得分:4)
嗯,在您拥有查找,创建和删除用户的方法后,没有什么可担心的。 在我看来,有两种方法
1)您可以以特殊方式使用find()
方法,以获取所有用户(有点黑客)
2)您可以创建一个公共静态方法getAll()
来完成这项工作(我认为它应该是静态的,因为getAll()
与User对象的单个实例无关)
答案 1 :(得分:1)
在模型中使用getAll()
方法实际上是标准做法。没有什么本质上有害的。
例如,在Zend Framework中,Zend_Db_Table_Abstract
基类有一个内置的fetchAll()
方法。 Codeigniter的内部ActiveRecord
类实现get()
,其行为类似。等
模型是一个比CRUD更广泛的概念,只要它们处理数据,方法的数量就不受限制。
答案 2 :(得分:1)
这取决于您的应用程序中的“模型” 如果它只是db表的表示,则可以将findAll()或getAll()方法添加到模型中 但如果它是实体类,它不应该知道数据源。您应该在应用中添加service和data mappers图层 如果您的应用程序非常小并且其他图层会使其超载 - 只需使用active record模式。