我试图了解我确定范围/提供从一类到另一类的访问的方法是否正确。
我担心我的方法是创建循环引用。
随着类数量的增加,var_dump输出的数据数量也随之增加,从而导致溢出。但是,可能是var_dump
不能正确处理创建的指针/引用吗?
那么此代码将创建循环引用,还是需要一个更好的词反向引用?这种方法可以接受吗?
我担心this post中概述的注意事项的循环引用,尤其是要点:
循环类引用产生高耦合;两个类都必须 每次更改其中任何一个时重新编译
<?php
class HomeController{
public $AppleController = null;
public $OrangeController = null;
public function __construct(){
}
public function &InitAppleController(){
if(!$this->AppleController){
$this->AppleController = new AppleController($this);
}
return $this->AppleController;
}
public function &InitOrangeController(){
if(!$this->OrangeController){
$this->OrangeController = new OrangeController($this);
}
return $this->OrangeController;
}
}
class BaseController{
protected $HC;
protected function __construct(&$HC){
$this->HC = &$HC;
}
}
class AppleController extends BaseController{
public function __construct(&$HC){
parent::__construct($oHC);
}
}
class OrangeController extends BaseController{
public function __construct(&$HC){
parent::__construct($oHC);
}
}
$oHC = new HomeController();
$oAppleController = &$oHC->InitAppleHandler();
$oOrangeController = &$oHC->InitOrangeController();
// now methods in OrangeController can access methods in AppleController without
// having reference passed directly to the method that needs the scope
?>