我正在用PHP编写我自己的MVC框架,仅用于学习目的。有一个路由器/调度员班级调用正确的控制器/操作等并不是很难。PHP MVC中的BaseModel,好还是坏?
但现在我在我要使用模型的部分。或者实际上,模型层。但有些事情让我感到困惑。
许多其他MVC框架都有一个'BaseModel'。我读过这实际上是不好的做法,因为“模型”不应该被视为另一类。但是,作为一个真正的'层',它可以包含诸如'mapper'模式或'储存库'模式等。
但是说实话,我没有看到任何优势。对我来说,一个'BaseModel'类似乎是最快的方法,同样的结果。
我可以简单地这样做:
class User extends BaseModel
{
// the GetUserBy* could easily be something that's handled by the
// BaseModel class, like in the Repo pattern.
public function getUserByName ($name)
{
// no error handling of any kind, just for simplicity
return $this->db->exec("SELECT * FROM users WHERE name='".$name."'");
}
// $data = array
public function saveUser ($data)
{
// Make sure no extra fields are added to the array
$user = array ('name' => $data['name'],
'address' => $data['address']);
$this->db->autoSave ($user);
}
}
不过如果我去一个存储库模式,然后我必须创建以下文件: 库 实体 DAO
实体有聚集到其他存储库。所以基本上我手动写出我的整个数据库计划的对象...
最后,有什么区别?除了我可能通过简单地使用BaseModel类节省大量时间...
但是,为什么它仍然被认为是一件坏事呢?这并不是说回购模式将我的应用程序分离出来,而是我现在正在做的。因为对我来说,上面提到的这些模式似乎被高估了。它可能只适用于具有共享状态的应用程序;将对象保存在本地(存储库中)并稍后提交。
这就是为什么我认为没有人能真正回答这个...
但我还是希望能看到一个像样的答案,让我走:“哈啊......我在想什么.... ”。但是,如果没有,那么我肯定我的情况是,BaseModel并不是一件坏事,而大多数博主都只是一堆羊:-)
看起来很漂亮[推进](http://www.propelorm.org/)-ish – Alp 2012-04-23 15:34:51
你能给我们一个链接到这些博客文章之一? – webbiedave 2012-04-23 16:19:40
@Alp的代码示例? Propel只是一个ORM,我不会朝这个方向前进,因为我喜欢自己写查询。我不重新ORMs。但我宁愿不要使用它们。有些'魔术'可以,但不是太多。但那是另外一个故事。 – Vivendi 2012-04-23 16:22:19