首先:一个非常相似的问题已经发布并且已经以某种方式解决了,但仍然没有回答我的具体问题.稍后会详细介绍.
用语言:我有一个基类,它为所有子项提供一些方法,但不包含任何属性.我的孩子继承了这些方法,这些方法应该用于访问孩子的属性.如果孩子的属性是protected或者public,一切正常,但是如果孩子的属性是private,则它会失败而没有错误(没有任何反应).
在代码中:
class MyBaseClass {
public function __set($name, $value) {
if(!property_exists($this, $name))
throw new Exception("Property '$name' does not exist!");
$this->$name = $value;
}
}
class ChildClass extends MyBaseClass {
public $publicProperty;
protected $protectedProperty;
private $privateProperty;
}
$myChild = new ChildClass();
$myChild->publicProperty = 'hello world'; //works of course!
$myChild->protectedProperty = 'hello world'; //works as expected
$myChild->privateProperty = 'hello world'; //doesn't work?
Run Code Online (Sandbox Code Playgroud)
上面提到的类似问题得到了使用魔术__set()方法访问私有属性的解决方案,但我已经在做了.如果我__set()在孩子中实现,它当然有效,但想法是,孩子继承了__set()它的父母,但显然它无法访问孩子的私人方法.
这是故意的吗?我做错了吗?或者我的方法只是废话设计?
背景: 我最初的想法是:整个动态的东西 …