PHP:我可以声明一个具有可变数量参数的抽象函数吗?

标签 php function abstract variadic-functions

我希望能够在父类中声明一个带有未知数量参数的抽象函数:

abstract function doStuff(...);

然后使用一组暗示参数定义实现:

 /**
 * @param int $userID
 * @param int $serviceproviderID
 */
static function doStuff($userID, $serviceproviderID) {}

到目前为止我得到的最好的方法是这个,

abstract function doStuff();

 /**
 * @param int $userID
 * @param int $serviceproviderID
 */
static function doStuff() {
    $args = func_get_args();
    ...
}

但是每次调用该函数时,由于提示,我都会收到一堆“缺少参数”警告。有更好的办法吗?

编辑:问题有误,请不要浪费时间回答。以下是我一直在寻找的内容,它似乎可以在没有警告的情况下工作。

abstract class Parent {
    abstract function doStuff();
}

/**
* @param type $arg1
* @param type $arg2
*/
class Child extends Parent {
    function doStuff($arg1, $arg2) {
        ...
    }
}

最佳答案

在 PHP 5.6 及更高版本中,参数列表可能包含 ... 标记,以表示该函数接受可变数量的参数。

您可以将其应用到抽象类,如下所示:

abstract class AbstractExample {
    public function do_something(...$numbers);
}

参数将作为数组传递到给定变量中。

关于PHP:我可以声明一个具有可变数量参数的抽象函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7068802/

相关文章:

php - PHP 中的惰性函数定义 - 这可能吗?

PHP Redis 销毁所有服务器上的 session

php - 阻止浏览器询问用户是否要刷新页面

javascript - 普通函数或箭头函数能否以递归方式从其主体调用自身?

抽象类中的 Java 静态属性

php - 在 php 或 Cakephp 中使用 fgetcsv 导入大型 CSV 文件

python - 如何检查使用 exec 创建的函数代码

c# - C# 中的 GetType() 和 Typeof()

c++ - 不能声明为抽象类型

java - 在接口(interface)中的方法中使用抽象关键字与不使用抽象关键字之间的区别