@Atllantis

PHP 7.0 — гвоздь в гроб строгого типизирования данных?

Новый проект решил начинать писать на PHP 7 из-за очень долго мною ожидаемого строгого типизирования данных.
Но тут же столкнулся с проблемой.
function qwerty():void{
    return;
}
Возвращает исключение: "Fatal error: Uncaught TypeError: Return value of qwerty() must be an instance of void, none returned".
Я конечно всё понимаю, но это...
Может кто подскажет, как быть в данном случае?
А то у меня много кода подобным образом написано и как-то надо "перекантоваться" до выхода PHP 7.1 (который неизвестно когда будет?) без нагромождения бесконечного числа if else (а в данном случае альтернативы не вижу).
Т.е. единственный выход, который я вижу, это переписать:
function qwerty():void{
	/* тут некий код */
	if ( $q != '123' ) return;
	/* тут ещё много кода */
	if ( $w != '123' ) return;
	/* ... */
}

в такой бред:
function qwerty():void{
	/* тут некий код */
	if ( $q == '123' ){
		/* тут ещё много кода */
		if ( $w == '123' ){
			/* ... */
		}
	}
}


UPD
Для всех, кто столкнулся с такой же проблемой, выхода два:
1. Тот, что я написал выше.
2. Наиболее приемлемый вариант, как написал товарищ Андрей Буров, закомментируйте :void и ждите PHP 7.1, там это исправят. Главное не забыть, после выхода 7.1 обратно вернуть void, иначе будет ошибка.
  • Вопрос задан
  • 1687 просмотров
Пригласить эксперта
Ответы на вопрос 3
@javanub
В ошибке сказано, что это void и он ничего не должен возвращать.
Ответ написан
BuriK666
@BuriK666
Компьютерный псих
видимо еще не допилили https://wiki.php.net/rfc/void_return_type

в Вашем случае я бы просто не указывал тип возвращаемого значения. и сделал пометку... Когда выйдет php7.1, сделал бы везде замену и всё.
Ответ написан
@GreatRash
Интересно, а так не сработает случаем?

function qwerty():void {
  if ( $q != '123' ) return qwerty();
}


Ну т.е. у qwerty тип же void :) Сделать служебную void():void
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы