Я начинаю использовать систему отображения ORM доктрины.
В чем разница между void и self в функции установки?
Пустота
/**
* @param string|null $firstname
*/
public function setFirstname(?string $firstname): void
{
$this->firstname = $firstname;
}
а также
СЕБЯ
/**
* @param string|null $firstname
*/
public function setFirstname(?string $firstname): self
{
$this->firstname = $firstname;
return $this
}
Просто заявим это прямо: ни вопрос, ни ответ никоим образом не ограничиваются сущностями доктрины. self
и void
подсказки типа возвращаемого значения являются языковой функцией php.
void
означает, что метод ничего не возвращает. (Добавлено в PHP 7.1). Из документации:
A void return type has been introduced. Functions declared with void as their return type must either omit their return statement altogether, or use an empty return statement. NULL is not a valid return value for a void function.
self
означает, что метод возвращает экземпляр класса (для цепочки методов и т. д.). Это означает, что вы можете использовать класс следующим образом:
$class->setFirstname('Foo')->setLastname('Bar');
Если вы посмотрите на ваши два метода, вы увидите, что один с void
не содержит return
-утверждения, а второй содержит return $this
.
Примечание: Так же, как @simon.ro упоминает в комментарии под исходным вопросом:
Just to state that explicitly: neither the question nor the answer are in any way confined to Doctrine Entities. self and void return type hints are a language feature of php.
@MagnusEriksson это можно опубликовать как ответ