【发布时间】:2019-08-28 15:00:24
【问题描述】:
我在供应商文件夹中有一个类,它有一个数组
private $mids = [
'a' =>'b',
'c' => 'd'
];
private $config = [
'sid' => null,
'aid' => null,
];
和一个设置私有 $config 的构造函数
function __construct($config){
foreach ($config as $key => $value) {
if (array_key_exists($key, $this->config)) {
$this->config[$key] = $value;
}
}
}
我想用新的键/值 'x' => 'y' 更新 $mid,所以我扩展了类并复制了父构造函数 到子构造函数。
但是当我尝试调用在父级中定义的函数时,我得到了 undefined $this->config($key) 的错误。 所以该函数使用父 $config 属性而不是子属性。
我做错了什么?
或者最好的方法是什么而不是编辑供应商来源
【问题讨论】:
-
您可以使用 'protected' 而不是 'private' 请参阅:php.net/manual/en/language.oop5.visibility.php(但还有许多其他方法可以解决此问题)。
-
您不能在其类之外使用
private值,因此您必须使用protected而不是使用private关键字。 -
私有成员不可见继承。
-
所以只能从供应商代码中复制整个源代码??
标签: php