Php 引用和覆盖

Php 引用和覆盖,php,class,frameworks,reference,Php,Class,Frameworks,Reference,我有: 这是在运行时开始时在“main”类中插入另一个类的好方法吗? 我应该使用参考资料吗 (背景:我目前在一个MVC框架上工作,在这个框架中,我必须处理一些主要类中的许多类,例如引导程序、包装器、模块、适配器等)是和否 您的第一个函数调用很好,我将使用更标准的名称: class A{ public $name = 'A'; public $B; public function B_into_A($b) { $this->B = $b;

我有:

这是在运行时开始时在“main”类中插入另一个类的好方法吗? 我应该使用参考资料吗

(背景:我目前在一个MVC框架上工作,在这个框架中,我必须处理一些主要类中的许多类,例如引导程序、包装器、模块、适配器等)

是和否

您的第一个函数调用很好,我将使用更标准的名称:

class A{

    public $name = 'A';
    public $B;

    public function B_into_A($b)
    {
        $this->B = $b;
    }
}

class B{

    public $name = 'B';
    public $A;

    public function new_A_into_B($a)
    {
        $this->A = new $a;
    }
}

$a = new A;
$b = new B;
$a->B_into_A($b);
$b->new_A_into_B('A');
在第二次调用中,传递一个字符串然后创建对象是没有意义的(除非您正在寻找某种类型的对象)。如果您希望B拥有A:

$a = new A;
$b = new B;
$a->setB($b); // B_into_A is a little bit of a whacky function name

我还是不喜欢这个名字。。我可能也会使用setA()。

传递一个对象而不是它的类名是有意义的,因为这样垃圾收集器就更容易猜测什么时候不再需要它了

$b->new_A_into_B( new A );

public function new_A_into_B($a)
{
    $this->A = $a;
}

是的,当然,我希望将class::factory()作为方法名。我只是用这个糟糕的名字来清楚地表达我的意思;)谢谢你,顺便说一句。
<?php

class A {
    public $B;
}

class B {
    public $A;
}

$a = new A;
$b = new B;

$a->B = $a;
$b->A = $b;