Задача фабричного метода - PullRequest
1 голос
/ 18 мая 2011

Почему User::factory() создает объект, а User::factory()->get() нет?Что я делаю неправильно?Спасибо!

class User {

    public $name;
    public $email;

    public static function factory()
    {
        return new User();
    }

    public function get()
    {
        $this->name = 'Foo Bar';
        $this->email = 'foo.bar@baz.com';
    }
}

Ответы [ 3 ]

3 голосов
/ 18 мая 2011

User::factory() создает объект, потому что он возвращает объект, созданный конструктором.User::factory()->get() создает объект и вызывает метод get, но метод get не возвращает объект, поэтому он впоследствии уничтожается.Если вы хотите, чтобы ваш метод get возвращал объект, просто используйте return $this; в конце метода.В противном случае присвойте возвращаемый объект переменной и затем вызовите get:

$user = User::factory();
$user->get();
1 голос
/ 18 мая 2011

Метод get ничего не возвращает.Вы можете добавить:

   return $this;

в качестве последней строки метода get, если хотите, чтобы он возвращал объект.

1 голос
/ 18 мая 2011

Получите ваш возврат $ this; .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...