Неверный тип возврата php7 не работает?

У меня проблема с типами возврата в php7, особенно «void».

он работает со всеми другими типами, int, string, null, bool, объектами класса.

но когда я использую void, он ожидает, что я верну экземпляр объекта void, но на самом деле он не должен ожидать какого-либо возврата, как то, для чего нужен void.

note: Я запускаю PHP 7.0.3

вот код:

public static function setResponseCode(int $code) : void { http_response_code($code); } 

и сообщение об ошибке:

Uncaught TypeError: возвращаемое значение CodeBase \ HttpRequester :: setResponseCode () должно быть экземпляром void, ни один не возвращен в /var/www/html/src/HttpRequester.php:86 Трассировка стека: # 0 / var / www / html / index.php (103): CodeBase \ HttpRequester :: setResponseCode (500) # 1 {main} брошен в /var/www/html/src/HttpRequester.php в строке 86

Solutions Collecting From Web of "Неверный тип возврата php7 не работает?"

Типы возврата Void для PHP 7.1 (которые еще не были выпущены, когда вы это задали). Из RFC

Версия: 0.2.1
Дата: 2015-02-14 (v0.1, позже снято), 2015-10-14 (v0.2, возрождение)
Автор: Андреа Фаулдс, ajf@ajf.me
Статус: Реализован (PHP 7.1)

Я только что нашел ответ здесь: https://wiki.php.net/rfc/void_return_type

Это будет функция в PHP 7.1

Нет, до PHP 7.1. Для PHP 7.0 вы должны полностью опустить возвращаемый тип для функций / методов void .

 function printLn($a) { echo "$a\n"; } 

К сожалению, у вас тогда нет безопасности типа для этой функции / метода, и никакой TypeError не будет брошен, если вы начнете что-то возвращать.

К счастью, PHP 7.1 исправляет это :

Добавлена ​​поддержка нового типа возврата void. Это требует, чтобы функция не возвращала никакого значения.

Это правильный синтаксис для PHP 7.1 :

 function should_return_nothing(): void { return 1; // Fatal error: A void function must not return a value } 

Это было отложено во время предложения, которое создало подсказки типа возврата :

Мы сохраняем текущие параметры типа . В предыдущих предложениях предлагались новые типы, такие как void, int, string или scalar; этот RFC не включает никаких новых типов. Обратите внимание, что это позволяет использовать self и parent как возвращаемые типы. …

Будущая работа

Идеи для будущей работы, выходящие за рамки настоящего RFC, включают :

  • Разрешить функции объявлять, что они ничего не возвращают (void в Java и C)

NULL также не допускается как возвращаемый тип.

Почему бы просто не использовать

  function printLn($a) { echo $a; return;} 

Это то же самое, что и пустота.

Вы даже можете удалить возврат с помощью только эха