背景
我正在创建一个方法addAll
,它将传递给方法的所有值添加到我的类中。这就是我的想法:
public function addAll() {
if(func_num_args()===0) {
throw new BadMethodCallException(get_class($this).'::addAll() must have arguments.');
}
$args = func_get_args();
foreach($args as &$arg) {
$this->add($arg);
}
}
它很棒。然后我用phpDocumentor记录它:
/**
* @param mixed ... All of the values to add.
*/
。 。 。但我没有@param
的名字,因为坦白说,它不存在。
问题:我如何构建和定义这样的东西?
由于我希望它至少传递了一个值,我想出了这个,但我不确定:
/**
* @param mixed $value,... All of the values to add.
*/
public function addAll($value) {
$args = func_get_args();
foreach($args as &$arg) {
$this->add($arg);
}
}
似乎错误,因为永远不会直接使用$value
。 。
另外,我已经有add
添加一个,所以addAll
语义上不应该至少需要两个参数吗?你建议用什么来定义和记录它?
答案 0 :(得分:0)
答案:使用@example标记。
我也改变了我的设置,似乎是利用PHP提供的最佳方式而不会丧失可用性:
/**
* @param mixed $values Either an array of values to add, or multiple values
* @example
*
* $object->add('1');
* $object->add('1','2');
* $object->add(array('1','2'));
*
* @return type
*/
public function add($values=null) {
if (is_array($values)) {
return $this->addAll($values);
} else {
return $this->addAll(func_get_args());
}
}