我有一个PHP类,如下所示:
class ParentClass {
public function __construct($arg) {
// Initialize a/some variable(s) based on $arg
}
}它有一个子类,因此:
class ChildClass extends ParentClass {
public function __construct($arg) {
// Let the parent handle construction.
parent::__construct($arg);
}
}如果,由于某种原因,ParentClass需要更改以接受多个可选参数,我希望我的子类提供“以防万一”?除非我重新编码ChildClass,否则它只会将一个参数传递给构造函数,并且只传递一个参数。
这种情况是否如此罕见或如此糟糕,以至于通常情况下,ChildClass不需要从采用不同参数的ParentClass继承?
本质上,我在Python中看到,您可以通过somefunction(*args)向函数传递可能未知数量的参数,其中'args‘是某种类型的数组/可迭代。中存在这样的东西吗?还是应该在继续之前重构这些类?
发布于 2009-10-21 20:44:08
在php中有类似的内容,尽管有些冗长:
$args = func_get_args();
call_user_func_array(array($this, 'parent::__construct'), $args);发布于 2017-04-12 18:46:13
这可以在PHP 5.6中通过使用>=实现,而无需call_user_func_array()。
public function __construct()
{
parent::__construct(...func_get_args());
}发布于 2013-02-18 22:36:18
如果得到php嵌套限制错误,请尝试如下:
$args = func_get_args();
call_user_func_array(array('parent', '__construct'), $args);https://stackoverflow.com/questions/1603469
复制相似问题