2011-08-09 23 views
1

我有一个带有属性(比如product_id)的类(比如Product),并且具有从给定产品ID的多个数据库表中检索信息的方法。现在我想让类方法处理一个产品ID以及一系列产品ID(为了节省查询次数)。此外,输出将根据输入而变化,即对于数组作为输入,我将输出一个数组索引与产品id,而对于单个ID,我可能不需要这个数组。带有属性的PHP类,可以是int或者数组

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

这里有一对夫妇的事情我已经想到了:

  1. 有单个和多个ID指示名(干净的,但重复)

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

回答

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))); 
} 
+0

您认为从客户端代码的角度来看,正确的方法是什么?具有相同的函数接受多种类型的参数(数组,int等)并返回根据输入OR格式化的输出,每个输入类型具有不同的函数。如果我将这些代码用作API,我应该使用哪一个? – Vikk

+0

@Vik只要它是一致的和可预测的,它们都很好。如果你的函数接受一个参数并返回一个参数,并且接受一个数组并且返回一个数组,那么我认为没问题。如果输出不可预测,例如因为该函数没有参数并且可能返回单个元素或元素数组,则应该使用单独的方法。根据您的具体情况,可能会有更多的考虑因素,这只是一个经验法则。 – deceze

相关问题