启动按需课程

时间:2014-01-29 22:05:47

标签: php oop initialization

我正在尝试按需开课。

class MyClass{

    private $modules = array("mod1" => false);

    public function __get($name){
        if(array_key_exists($name, $this->modules) && !$this->modules[$name]){
            $class       = ucfirst($name);
            $this->$name = new $class();
            $this->modules[$name] = true;
        }
    }
}

然后我有另一个类,然后扩展上面的类。如果我执行以下操作,则不会启动该类,并且出现错误Fatal error: Call to a member function get() on a non-object

class Home extends MyClass{

    public function main(){
        echo $this->mod1->get("cat");
    }

}

但是,如果我这样做,那么课程就会开始。

class Home extends MyClass{

    public function main(){
        $this->mod1;
        echo $this->mod1->get("cat");
    }

}

有没有办法让我在没有添加额外线的情况下开始上课?

1 个答案:

答案 0 :(得分:1)

在实例化后立即返回:

class MyClass{

    private $modules = array("mod1" => false);

    public function __get($name){
        if(array_key_exists($name, $this->modules) && !$this->modules[$name]){
            $class       = ucfirst($name);
            $this->$name = new $class();
            $this->modules[$name] = true;

            return $this->$name;
        }
    }
}

现在你可以做你想做的事了:

class Home extends MyClass{

    public function main(){
        echo $this->mod1->get("cat");
    }

}