我正式智障. [让我解释]
直到今天,我从未真正考虑过班级及其之间的关系.我试图找出似乎很明显的东西,但由于我很愚蠢,所以看不到它.
假设我有一个核心类,它将从不同的文件扩展.子类如何从其他同级中调用函数(也就是说,如果这些子项完全被视为子级).
示例代码:(别杀了我)
class cOne {
public function functionOne(){
echo "something";
}
}
然后在另一个文件上,我说:
class cOneChildOne extends cOne {
public function functionOne(){
echo "something from child one";
}
}
在另一个文件上,我说:
class cOneChildTwo extends cOne {
public function functionOne(){
echo "something from child two";
}
}
我将如何创建一个新对象,以及何时创建一个新对象,以便能够以类似于$newObject-> Children-> function();的方式从子级和父类访问函数;我正在认真考虑是否有一种选择,我今天已经完全失去了头脑,无法直截了当.
自那以来,我显然做错了:$newObject = new cOne;创建对象,但是子类之一中的代码无法访问不在核心类中或本身不包含的任何内容.
这并不是至关重要的事情,但我想了解这一点.
我已经做了大量的阅读,但并没有误会我的意思,这就是为什么我认为自己是智障者,而不仅仅是懒惰.
帮助我或射击我!谢谢
解决方法:
您可以在masters类静态数组中收集子实例
class C1{
static public $childs=array();
function __construct(){
self::$childs[]=$this;
}
}
class C1C1 extends C1{
function hi(){
echo 'hi from C1C1 <br />';
}
}
class C1C2 extends C1{
function hi(){
echo 'hi from C1C2 <br />';
}
}
$c1 = new C1C2();
$c2 = new C1C2();
$c3 = new C1C1();
$c4 = new C1C1();
$c5 = new C1C1();
$c6 = new C1C1();
foreach(C1::$childs as $c){
$c->hi();
}