По умолчанию, когда вы инициализируете объект, переменные имеют значение null.Вот почему вы получаете null
как user_id
.И настоящая проблема заключается в методе конструктора -
public function __construct($user_id)
{
$this->$user_id = $user_id;
}
Мы не обращаемся к переменным объекта, начинающимся с $
, вам нужно изменить его на $this->user_id = $user_id;
$this->$user_id
в основном создает экземпляр Double Variable , что означает, что значение $user_id
становится переменной.
Так что, если значение $user_id
скажем 10
, то $this->$user_id
приведет к $this->10
, и это не имеет никакого смысла.
Однако, если значение скажет dummy_value
, то $this->$user_id
приведет к $this->dummy_value
, и может существовать переменная объекта с именем dummy_user
.
Двойная переменная - действительно мощная функция, еслииспользуется правильно.