我试图使用神奇的 php 函数将对象链接在一起。
我有一个名为 page 的抽象类,我网站中的每个页面都扩展了这个类。在这个抽象类构造函数中,我尝试获取这样的用户对象:
public function __construct( ){
$user = new user();
$this->user = $user->getIdentity();
$this->getHeader();
$this->switchAction( );
$this->getFooter();
}
现在在我的页面中,我可以使用 $this->user 并且一切正常。如果用户已登录,则返回用户对象。在我的用户类中,我有一个神奇的 __get 和 __isset 函数:
public function __get ( $name ){
switch ($name){
case 'oAlbums':
return $this->oAlbums = album::get_ar_obj($arWhere = array('user_id' => $this->id) );
break;
public function __isset ( $name ){
switch($name){
case 'oAlbums':
echo 'magic isset called, trying to call '. $name . '<br />';
return isset($this->$name);
break;
}
}
因此,当在页面中时,我想通过调用来检查用户是否有任何专辑$this->user->oAlbums
。正如预期的那样,这将返回一个包含所有专辑对象的数组。但是当我这样做时
if(empty( $this->user->oAlbums ))
echo 'still give smepty';
在我的页面中,它仍然回显字符串。
为什么 __isset 函数不起作用?