setter方法中void和self有什么区别

时间:2019-04-08 12:28:43

标签: php

我开始使用ORM原理映射系统。

setter函数中void和self有什么区别?

无效

-keepattributes Signature

SELF

/**
* @param string|null $firstname
*/
public function setFirstname(?string $firstname): void
{
    $this->firstname = $firstname;
}

1 个答案:

答案 0 :(得分:6)

void

void表示该方法不返回任何内容。 (Added in PHP 7.1)。从文档中:

  

引入了void返回类型。以void声明为返回类型的函数必须完全省略其return语句,或使用空的return语句。 NULL不是void函数的有效返回值。

自我

self表示该方法返回类实例(用于方法链接等)。这意味着您可以使用这样的类:

$class->setFirstname('Foo')->setLastname('Bar');

如果您查看两种方法,则会发现具有void的方法不包含任何return语句,而第二种方法具有return $this

注意:就像@ simon.ro在原始问题下的评论中提到的那样:

  

仅需明确指出:问题和答案均不限于教义实体。 self和void返回类型提示是php的语言功能。