多年来,我一直在重复实现相同的代码(使用进化)而没有找到一些干净,有效,抽象出来的方法.
该模式是我的服务层中的基本'find [Type] s'方法,它将选择查询创建抽象到服务中的单个点,但支持快速创建更易于使用的代理方法的能力(请参阅示例PostServivce :: getPostById ()方法如下).
不幸的是,到目前为止,我一直无法满足这些目标:
我最近的实现通常类似于以下示例.该方法采用一系列条件和一组选项,并从中创建并执行Doctrine_Query(我今天在这里大部分重写了这一点,因此可能存在一些拼写错误/语法错误,它不是直接剪切和粘贴).
class PostService
{
/* ... */
/**
* Return a set of Posts
*
* @param Array $conditions Optional. An array of conditions in the format
* array('condition1' => 'value', ...)
* @param Array $options Optional. An array of options
* @return Array An array of post objects or false if no matches for conditions
*/
public function getPosts($conditions = array(), $options = array()) {
$defaultOptions = = …Run Code Online (Sandbox Code Playgroud)