首页 > 解决方案 > 这些是反向引用的循环引用吗

问题描述

我试图了解我的范围/提供从一个类到另一个类的访问权限的方法是否正确。

我担心我的方法是创建循环引用。

随着类数量的增加,var_dump 输出的数据量也会增加,从而导致溢出。但是,它可能var_dump没有正确处理创建的指针/引用?

那么这段代码会创建循环引用还是因为需要更好的词,反向引用?这种方法可以接受吗?

我担心对这篇文章中概述的警告的循环引用,尤其是这一点:

循环类引用创建高耦合;每次更改任何一个类时都必须重新编译这两个类

<?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
?>

标签: phpcircular-reference

解决方案


推荐阅读