Nixtone
@Nixtone

Почему PHP8 требует определять переменные?

Вот пробую новый PHP8. Где то читал, но и по факту оказалось что теперь PHP жестче настаивает определять переменные заранее.

Раньше было: Notice: Undefined variable:
Теперь: Warning: Undefined variable:

Раньше это можно было игнорировать, теперь ругает так что не обращать внимание стало сложно. Тоже самое касается и ключей массивов. Кто как проводит политику определения переменных?
  • Вопрос задан
  • 459 просмотров
Решения вопроса 1
DevMan
@DevMan
тащемта, если игнорили нотисы, то игнорьте и ворнинги.
ну и вместо echo $var используйте echo $var ?? ''
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@novichkovv
Если у вас прилетают ворнинги и нотисы, значит у вас есть слепые зоны в приложении, варианты результатов выполнения кода в этих местах не полностью охвачены, что повышает вероятность непредсказуемых ошибок. Очень советую также смолоду начать использовать типизацию аргументов и свойств - это в разы повышает надежность кода. Если экономить время при написании кода, потом приходится затрачивать в разы больше времени при обслуживании. Так что при разработке усложняйте себе жизнь как можно сильней, это потом с лихвой окупится
Ответ написан
profesor08
@profesor08 Куратор тега PHP
error_reporting(0); в начале файла и наступит счастье. Работать будет все, любой код написанный кем угодно и как угодно. Эта серебряная пуля на все случаи жизни, решает любые проблемы.
Ответ написан
Комментировать
Nordic_Alf
@Nordic_Alf
PHP Developer
Переменная не только должна быть указана, либо заюзана $var ?? null. Она и строгий тип должна иметь, где только возможно)
И тестами ещё покрыть, каб не прилетало там, где не надо)
PHP давно вырос уже в довольно серьёзный язык, над пользоваться фичами, конечно зависит от версии пыхи. Строгие типы решают много проблем.

declare(strict_types = 1);

/** @var array $myArray */
private array $myArray;

/**
* @param string $value
*/
public function(string $value): bool
{
   return true;
}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы