设置和记录无限参数运行的正确方法?

发布于 2024-12-03 06:33:38 字数 1002 浏览 1 评论 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 在语义上不应该至少需要两个参数吗?您建议如何定义和记录它?

Background:
I am creating a method addAll that adds all of the values passed to the method to my class. Here's what I was thinking:

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

And it works great. Then I got to documenting it with phpDocumentor:

/**
 * @param mixed ... All of the values to add.
 */

. . . but I don't have a name for my @param because, frankly, it doesn't exist.

Question: How do I construct and define something like this?


Since I want it to have at least one value passed in, I came up with this but am unsure:

/**
 * @param mixed $value,... All of the values to add.
 */
public function addAll($value) {
    $args = func_get_args();

    foreach($args as &$arg) {
        $this->add($arg);
    }
}

It seems so wrong because $value is never directly used. . .

Also, I already have add which adds one, so shouldn't addAll semantically require at least two parameters? What would you recommend for defining and documenting that?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

尘世孤行 2024-12-10 06:33:38

答案:使用 @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());
    }
}

Answer: use an @example tag.

I also changed my setup, and it seems to be the best way to utilize what PHP has to offer without forfeiting usability:

/**
 * @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());
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文