我正在尝试按需开课。
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");
}
}
有没有办法让我在没有添加额外线的情况下开始上课?
答案 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");
}
}