我有一个合同“ArticleStorage”,每个存储必须订阅才能对模型有效。 没错,这不是问题,我的问题是:分页......或“结果修改”,在本例中是 fetchAll ,我想修改其行为但不添加参数等
<?php
interface ArticleStorage
{
// public function insert();
// public function update();
// public function delete();
public function fetchAll();
}
class MySQLArticleStorage implements ArticleStorage
{
public function fetchAll()
{
// SELECT * FROM `articles`;
}
}
&GT;
我的模型如何运作。
class ArticlesModel
{
public function __construct(ArticleStorage $storage)
{
}
}
在这种情况下,我期待一个“ArticleStorage”,但不知道给出了哪个“存储”,是真的......我想使用存储分页或应用结果修改。
class MySQLArticleResultsModifier
{
public function __construct(MySQLArticleStorage $storage)
{
}
public function fetchAll()
{
// ...
}
}
如果是分页,我如何修改ArticleStorage fetchAll并应用我修改后的查询?
答案 0 :(得分:0)
是否存在您的模型要求在另一个胎儿之上加上胎儿的情况;我不这么认为,事实上这就是你如何决定是否需要一个装饰师,通过自己回答这个问题
现在关于当前的实现,我认为@mrhobo非常正确,你的fetch函数可能看起来像
public function fetch($limit, $order,$sort)
非常智能的提取还可以期望用户发送键值的哈希表,列名=列的值,您可以使用它来动态创建自己的选择查询。