好的,所以我无法控制的代码就像这样:
Class A {
function use_b($b_name) {
$this -> $b_name = new B();
}
}
Class B {
var $stuff;
}
因此,类B的对象在类A中,而类A将使用传入的名称作为类B属性的属性名。 B级完全没有意识到它已被赋予的名称,而且实际上并不需要知道。但我需要知道它才能从A类访问B类。
我对代码有足够的控制权,我可以为B类创建属性,并将其设置为A给出的名称类,如果可能的话。然后我可以让B类将它的名称传递给我需要遍历B类的函数(目前它只返回外部对象,所以我可以访问类BI只是不知道它被赋予的名称。)
如果这根本没有意义,请发表评论并告诉我。
答案 0 :(得分:1)
找出持有B实例的A成员并不难。试试这段代码:
<?php
Class A {
function use_b($b_name) {
$this -> $b_name = new B();
}
}
Class B {
var $stuff;
}
$a = new A();
$a->use_b('test');
foreach(get_object_vars($a) as $key=>$val)
if(get_class($val) == 'B')
echo $key . " is the member that holds an instance of B";