Я пытаюсь связать объекты вместе, используя волшебные функции 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?