«Уведомление PHP: неопределенное свойство» [закрыто]
Я получаю эту странную ошибку. Вы'скажу: "Почему странно? Вы просто нене имею такого свойства ", Проблема естьявляются имущество.
Там яЯ получаю ошибку.
// PHP Notice: Undefined property: stdClass::$roles in
$canWrite = $this->session->isLoggedIn() ? $this->page->canWrite($this->session->user->roles) : false;
Это класс.
class User {
protected $roles;
function getRoles() {
if (!$this->roles)
{
// Get them!
}
return $this->roles;
}
}
Так что этот методявляется звонил, когда яЯ пытаюсь получить доступ к собственности в этой строке. Все работает нормально но я неЯ не хочу увеличивать мой журнал ошибок. Какие'происходит?
UPD1$this->user->session
являетсяUser
объект
function getUser() {
if (!$this->user) {
$u = new User();
// Logic
$this->user = $u;
}
return $this->user;
}
User Object
(
[roleId:protected] => 1
[roles:protected] => Array
(
[root] => Role Object
(
[id:protected] => 1
[hrefname:protected] => root
)
)
)
UPD2Все свойства доступны через магию__get()
public function __get($var) {
if ($this->__isset($var)) {
$method = 'get'.ucfirst($var);
if (method_exists($this, $method)) {
return $this->$method();
} else {
return $this->$var;
}
}
throw new Exception("Unrecognized attribute '$name'");
}
UPD3var_dump($this->session->user)
object(User)#370 (30) {
["roles":protected]=>
array(1) {
["root"]=>
object(Role)#372 (2) {
["id":protected]=>
string(1) "1"
["hrefname":protected]=>
string(4) "root"
}
}
}
объяснениеВ одном месте я случайно написал$this->session->user->id = $user->id
в месте, где$this->session->user
еще не создан. Такnull->id
на самом деле был(new stdClass())->id
, Что ж,спасибо, PHP.