Я повинен відредагувати свою відповідь через те, про що я дізнався нещодавно.
Використання @return void
замість @return null
має дуже особливе значення, розглянемо наступні два приклади коду PHP.
<?php
function return_never() {
echo "foo";
}
function return_sometimes() {
if ($this->condition()) {
return "foo";
}
}
У першому прикладі PHP фактично повернеться NULL
, оскільки PHP завжди повертається NULL
. Але повернене значення не приносить користі абоненту, оскільки воно нічого не говорить про те, що зробила функція. IDE можуть використовувати задокументовану інформацію, @return void
щоб вказати розробнику, що використовуються повернені значення, які не мають жодної мети.
<?php
$foo1 = return_never();
$foo2 = return_sometimes();
Перший виклик безглуздий, оскільки змінна завжди міститиме NULL
, другий може насправді містити щось. Це стає ще цікавішим, якщо ми помістимо виклики функції в умовні.
<?php
if (($foo1 = return_never())) {
var_dump($foo1);
}
if (($foo2 = return_sometimes())) {
var_dump($foo2);
}
Як бачите, він @return void
має свої варіанти використання, і його слід використовувати, якщо це можливо.
Також зверніть увагу, що це буде частиною майбутнього стандарту PHP PSR-5. [1]
[1] http://www.php-fig.org/psr/
void
і поміщає його в підпис методу в документах.