我知道 __isset() 用于不存在的属性。但我希望它在一个为空的存在属性上。默认情况下它可能很好:
class myClass
{
public function __isset($name)
{
// create an object;
}
}
$a = new myClass();
$a->mails->get();
$a->users->login();
但是邮件,用户对象不在声明中。所以这可能是解决方案,但它会导致类失真,在 UML 图上反映不好等。真正的解决方案可能是:
class myClass
{
public $users = null;
public $mails = null;
public function __isset($name)
{
// create an object BUT IT WONT TRIGGER!
}
}
$a = new myClass();
$a->mails->get(); // <- fail!
$a->users->login();
仅仅因为用户,邮件被声明。但它现在反映了良好的结构!Singleton 可能已经很好了,但我不想要它。当访问的东西为空时,有没有办法触发某些东西?