Помните, что у вашего класса есть свойства , и у него есть методы получения . Свойства - это закрытые переменные, объявленные в верхней части класса, например, private $_username;
, а получатели - методы, объявленные ниже, например, public function Username()
. Получатель Username()
возвращает значение свойства $_username
.
Во-первых, это наименование довольно нестандартное. По крайней мере, я бы назвал свои геттеры как getUsername()
или getPassword()
. Это может помочь вам понять вашу проблему, проведя различие между геттерами и свойствами.
Когда вы используете print_r()
для объекта, он печатает текущее состояние объекта. Текущее состояние объекта определяется типом объекта и значениями его свойств. Как вы видите, в вашем выводе print_r()
говорится, что это объект User с 3 закрытыми свойствами: _username, _password и _email. Это правильно и имеет правильные значения, связанные с ними. print_r()
делает то, что должен.
Но тогда проблема с кодом заключается в том, как вы пытаетесь получить доступ к этим свойствам. Давайте посмотрим на строки:
$user->Username = $this->db->escape($user->Username);
$user->Password = $this->db->escape($user->Password);
$user->Email = $this->db->escape($user->Email);
Это не правильно. Во-первых, чтобы получить свойства от пользователя, вы должны использовать: $user->Username()
или $user->getUsername()
, если вы изменили соглашение об именах. Помните, что это функции, поэтому их нужно вызывать, помещая скобки после имени функции. Это функции, которые возвращают значения изнутри объекта.
А потом вы пытаетесь установить значения внутри объекта неправильно. Для этого вам нужно создать несколько методов установки, например setUsername()
. Таким образом, эти строки станут:
$user->setUsername($this->db->escape($user->getUsername()));
$user->setPassword($this->db->escape($user->getPassword()));
$user->setEmail($this->db->escape($user->getEmail()));
Но это, вероятно, не тот подход, который вы действительно хотите использовать. Почему бы вам не экранировать свойства, когда вы устанавливаете их в конструкторе класса? Или избежать их, прежде чем передать их в класс? На самом деле не имеет смысла вытаскивать их из класса, убегать от них, а затем отталкивать их обратно.
Надеюсь, это поможет.