Я назначаю свойство класса из базы данных следующим образом (Проверяет наличие сеанса go до этого, но это всего лишь назначение):
$stmt = DB::getInstance()->Prepare(
'SELECT id, username, email FROM _users WHERE session = ?'
);
$stmt->execute(
array( $this->session( 'oauth' ) )
);
$this->_user = $stmt->fetch( PDO::FETCH_OBJ );
Свойство $_user
может быть изменено через другие части программы, поэтому его необходимо передать по ссылке:
public function &getUser() : Object { return $this->_user ?? (object) array('username' => 'Guest'); }
Проблема, с которой я сейчас сталкиваюсь, заключается в том, что когда я вызываю getUser
для обновления свойств пользователя:
$request->getUser()->posts = array('example post'); // This is done on another class, sometimes there is no reason to load the users posts if the user is not visiting a page that needs that data
Я получаю это уведомление:
Notice: Only variable references should be returned by reference
Итак, чтобы go вперед и делать то, что он говорит (передать его по ссылке), я затем сохраняю $_user
по ссылке следующим образом:
$this->_user =& $stmt->fetch( PDO::FETCH_OBJ );
Затем я получаю эту ошибку (в строке выше):
Uncaught Error: Typed property App\Http\Request::$_user must not be accessed before initialization
Есть идеи, как я могу подавить это предупреждение или почему оно появляется?