0

背景: 我正在创建一个方法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在语义上不应该至少需要两个参数吗?你会推荐什么来定义和记录它?

4

1 回答 1

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());
    }
}
于 2011-09-30T20:58:53.807 回答