В PHP 7.1 был добавлен тип возвращаемого значения void. Об этом спорили. Некоторые задавались вопросом, в чем выгода пустой подсказки? Я был одним из них. Но я изменил свое мнение. В этой короткой статье покажу небольшой пример, где void полезен.
Этот пример приведен в документации Laravel по локальным скоупам.
public function scopePopular($query) { return $query->where('votes', '>', 100); }
Это return — ложь. С результатом ничего не будет сделано.
Данный экземпляр Builder
в $query
является изменяемым (mutable). В PHP объекты передаются по ссылке. Это означает, что объект $query
в scopePopular
используется совместно с вызывающим его кодом. Вызывая where
, $query
изменится и в scopePopular
и в коде, который его вызывает.
В моих проектах я написал бы вышеприведенный скоуп (scope) примерно так:
public function scopePopular(Builder $query): void { $query->where('votes', '>', 100); }
Это более честно. Подсказка void
сигнализирует мне (и я надеюсь, и членам моей команды), что возвращать что-либо бессмысленно, и что (в данном случае) данный параметр, скорей всего, является изменяемым.
Автор: Freek Van der Herten
Перевод: Алексей Широков
Наш Телеграм-канал — следите за новостями о Laravel.