2010-08-05 67 views
0

我有一个抽象的数据映射器类:通过文件名,而不是ID数据映射类查找

<?php 
abstract class ADataMapper 
{ 
    abstract public function addNew($dataObj); 
    abstract public function update($dataObj); 
    abstract public function find($primaryKey); 
    abstract public function delete($dataObj); 
} 
?> 

在一个子类的ADataMapper,我需要一个列,它是不是主要找一个排键,具体为:'文件名'。

最好是实施一种像findByFilename($filename)这样的方法,还是有另一种更简单的方法吗?我觉得我只是增加了不必要的复杂性。

回答

1

通常我去getBySpecificKeyX方法(因此getById()/getByParentId()这样的家庭),和一般的search()方法,这需要多个searchterms和查询的结构/阵列动态。但这是个人选择。

1

您可以在find()内添加支票。如果参数是一个字符串,然后再打一个私人findByFileName()否则,findById()

+2

把这个和Wrikken结合起来,这样你就可以传入'array('fieldName'=>'searchTerm')'等等。然后你可以检查它是否是'int' - >'findById()',否则做一个搜索。 – 2010-08-05 17:47:28