我开始使用ORM原理映射系统。
setter函数中void和self有什么区别?
无效
-keepattributes Signature
和
SELF
/**
* @param string|null $firstname
*/
public function setFirstname(?string $firstname): void
{
$this->firstname = $firstname;
}
答案 0 :(得分:6)
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的语言功能。