工厂方法问题


Factory method problem

为什么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';
    }
}

User::factory()创建一个对象,因为它返回由构造函数创建的对象。 User::factory()->get()创建一个对象并调用 get 方法,但 get 方法不返回该对象,因此它之后会被破坏。如果希望 get 方法返回对象,只需在方法末尾使用 return $this;。否则将返回的对象分配给变量,然后调用 get:

$user = User::factory();
$user->get();

让你得到回报$this;

get 方法不返回任何内容。您可以添加:

   return $this;

作为 get 方法的最后一行(如果您希望它返回一个对象)。