我知道这似乎是一个奇怪的问题,但假设我有两个类;
class Class1 {
private $foo;
function addBar(Class2 &$bar)
{
$this->foo = $bar;
}
}
class Class2 {
private $foo
}
$a = new Class1;
$b = new Class2;
$a->addBar($b);
有什么方法Class2
可以从Class1
读取信息?即使它们在这里位于相同的代码块中,它们也在我的脚本中的单独文件中。我需要这个的原因是因为我Class2
通过引用链接,但是Class2
在Class1
之前不允许运行,并且我知道我可以传递另一个变量来引用Class2
Class1
(例如。 $b->addFoo($a)
),但如果可能的话,我宁愿避免这样做。
我希望这能做到!
提前致谢
编辑
感谢所有帮助过我的人,我决定换一种方式。再次感谢。
class Class1 {
private $foo;
function addBar(Class2 $bar)
{
$this->foo = $bar;
$bar->addBar($this);
}
}
class Class2 {
private $foo
function addBar(Class1 $bar)
{
$this->foo = $bar;
}
}
$a = new Class1;
$b = new Class2;
$a->addBar($b);
Class2
可以调用Class1
对象上的方法,尽管它无法访问私有数据。 但它必须具有对Class1
实例的引用,才能对其调用任何方法。
您的示例没有显示实际包含任何代码Class2
,听起来您试图避免在$b
上调用方法。 这说不通。 如果你从不调用任何方法,Class2
就不能"做"任何事情。
class Class1 {
private $foo;
function addBar(Class2 &$bar)
{
$this->foo = $bar;
$bar->doSomething();
}
}
class Class2 {
private $foo
function doSomething()
{
//code
}
}
$a = new Class1;
$b = new Class2;
$a->addBar($b);
这样doSomething
Class2()
在addBar()
Class1
之后运行