带有属性的PHP类,可以是int或数组

时间:2011-08-09 06:18:32

标签: php class-design

我有一个带有属性(比如product_id)的类(比如Product),并且有方法从给定产品ID的多个数据库表中检索信息。现在我希望类方法处理一个产品ID以及一系列产品ID(以节省查询数量)。输出也会根据输入而变化,即对于数组作为输入,我将输出一个用产品ID索引的数组,而对于单个ID,我可能不需要这个数组。

设计这样一个班级的干净方法是什么?

以下是我想到的几件事:

  1. 为单个和多个ID指定名称的单独方法(干净但重复)

  2. 两种类型的输入只有一种方法,根据输入检查输入类型...进程...格式输出(不是很干净)

1 个答案:

答案 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)));
}