我有一个带有属性(比如product_id)的类(比如Product),并且有方法从给定产品ID的多个数据库表中检索信息。现在我希望类方法处理一个产品ID以及一系列产品ID(以节省查询数量)。输出也会根据输入而变化,即对于数组作为输入,我将输出一个用产品ID索引的数组,而对于单个ID,我可能不需要这个数组。
设计这样一个班级的干净方法是什么?
以下是我想到的几件事:
为单个和多个ID指定名称的单独方法(干净但重复)
两种类型的输入只有一种方法,根据输入检查输入类型...进程...格式输出(不是很干净)
答案 0 :(得分:1)
在内部,始终使用一组值。如果数组中只有一个值,那就这样吧,但根本不需要改变你的逻辑。
对于输入/输出,您可能希望让您的方法接受一个值,您将变成一个数组:
public function foo($val) {
$val = (array)$val;
...
}
和/或,你可以创建一个“单一的便利包装器”,它只是表明它返回或接受单个结果:
public function foos(array $vals) {
...
return /* array of elements */;
}
public function foo($val) {
return current($this->foos(array($val)));
}