工厂方法问题

时间:2011-05-18 16:13:13

标签: php oop factory-pattern

为什么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 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

让你的返回$ this;

答案 2 :(得分:1)

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

   return $this;

作为get方法的最后一行,如果你想让它返回一个对象。