用一个对象调用许多setter

时间:2014-11-17 15:36:09

标签: php

我尝试从一个实体调用许多setter,但我有错误NULL对象。

当我这样做时:

$appEventUser
    ->setApiToken($apiToken)
    ->setCreationDate(new \DateTime())
    ->setSubType('SIGNED')
    ->setSignedType('IN');

我有这个错误:

Call to a member function setSignedType() on a non-object

但是,如果我尝试以下代码就可以了:

$appEventUser
    ->setApiToken($apiToken)
    ->setCreationDate(new \DateTime())
    ->setSubType('SIGNED');

$appEventUser->setSignedType('IN');

3 个答案:

答案 0 :(得分:1)

您必须在setSubType setter:

中返回实体
public function setSubType($subtype){
    $this->subType = $subtype ;

    return $this // this line is missing 
}

您收到该消息是因为setSubType()没有返回任何内容(或技术上说是NULL)因此无法调用“无”的方法。

答案 1 :(得分:0)

它被称为method chaining

如果setSubType()未返回$this,则之后您将无法在同一个对象上调用其他方法。

答案 2 :(得分:0)

如果您想链接方法,方法setSubType应返回$this