Php 正在引用的访问类?
我知道这似乎是一个奇怪的问题,但假设我有两门课Php 正在引用的访问类?,php,oop,class,Php,Oop,Class,我知道这似乎是一个奇怪的问题,但假设我有两门课 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读取
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)
),但如果可能,我宁愿避免这样做
我希望这可以做到提前谢谢 编辑
多亏了所有帮助过我的人,我决定改弦易辙。再次感谢。
Class2
可以调用Class1
对象上的方法,尽管它不能访问私有数据。但是它必须有一个对Class1
实例的引用,才能调用它上面的任何方法
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
,而且听起来您试图避免在$b
上调用方法。那没有道理Class2
如果您从未对其调用任何方法,则无法“执行”任何操作
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()中的doSomething
在Class1
中的addBar()之后运行,因为Class2
中有一些代码在Class1
完成之前我不想运行,但是它们之间唯一的联系是从Class2
到Class1
然后按正确的顺序调用?我看不出有什么问题。。(可能会添加更多代码?)那么为什么不在末尾将其添加到addBar函数中,比如$bar->dosomethig()
,或者您想要一些不同的东西呢?有时候一个小时的思考可以节省您编写代码的时间…@BlackWraith您仍然应该接受答案。我们真诚地回答,仅仅因为你改变了主意并不意味着我们应该受到惩罚。没错,但这是示例代码。基本上我想知道的是,尽管我可以通过$this->foo->foo
从Class2
中访问Class1
中的信息,但是,由于和$bar
引用,信息可以双向共享吗?Class1
方法引用Class2
实例的事实并没有给Class2
实例引用Class1
实例。在某个地方,您需要调用$b
上的方法并将$a
作为参数传递。我删除了&
引用,因为它是。