我有一个对象,我只知道类名称,让我们说“A”。我正在尝试访问此对象的属性。不幸的是,我试图从另一个对象实例访问它们,这是由第一个对象创建的,完全不同的类(也不扩展或相关)。下面简化代码来解释情况。获取“父创建”对象的属性
Class A {
public $var; //some important stuff
function createObjectB() {
$b = new B();
}
}
Class B {
// a totally different class not related with A
}
这是一个CMS组件的第三方代码,所以我不能乱用核心代码(或至少我认为?)尝试将资源用B创建的对象传递下去,而不会导致错误稍后如果此组件得到更新。
由于之后在B类中调用的“布局模板”文件,我可以从B类获取对象,如果核心代码得到更新,那么将不会触及它。这样我就不能碰这些类。
使用从object B
一个debug_backtrace()
我可以看到几回踩我需要的对象的属性,但我认为这是相当哈克使用函数这种方式来获得我需要的信息,我认为这是一个相当密集功能也使用。
我在PHP中是个相当新手,难道我试图实现什么?有没有更好的方法?
你创建B时不能传递给A类的引用吗? '$ b = new B($ this);' – Federkun
不幸的是,正如我上面所说的,这是第三方组件,如果我用核心文件破解,恐怕以后如果代码从供应商更新时会遇到麻烦。这是正确的想法还是只是一个小题大做? – Gruber
那么,那么似乎你想要的是使用全局变量。这是一个**错误的实践**,但更好的是'debug_backtrace'。当你创建'B'对象时,或者在''A'对象的__construct中,你可以写'$ GLOBALS ['_A'] = $ this;',那么你可以用'$ GLOBALS [ '_A'] - > var'。 – Federkun