隧道化两个或多个对象

时间:2010-07-03 06:38:34

标签: php oop logic

我有两个独立的对象,主要和“孩子”。它实际上不是真正的子对象,因为我通过构造函数将整个父对象添加到子对象中。

像这样:

class core
{

    public function __get($class)
    {
        $this->load($class);
    }

    public function load($class, $file = null, $lib = true)
    {
        if($file == null)
            $file = $class;

        if($lib == true)
            include(LIBPATH.$file.PHP);
        else
            include(SYSPATH.$file.PHP);

        $this->$class = new $class($this);
    }

}

和“孩子”:

class Child implements myStruct
{
    public function __construct($obj)
    {
         $this->obj =& $obj;
    }
}

这是否像我想的那样难看,或者这个解决方案是否可以接受?

1 个答案:

答案 0 :(得分:3)

这绝对不是最理想的。第一:

$this->obj =& $obj;

没有必要这样做。从PHP 5开始,通过引用将对象引用到用户空间中。复制对象时,实际上是在复制引用。您可以在此处删除引用运算符:$this->obj = $obj

查看spl_autoload自动加载类。它不等于你正在做的事情 - 你正在使用某种容器来保存对象的引用(每个类只有一个对象),但我怀疑它是你想要的。