Отладка устаревшего кода, и у меня есть странная проблема. Устаревший код переносится на PHP 7.2. Я не знаю, для какой версии PHP он был изначально написан, но он работает в PHP 5.6.
Ниже мой пример проблемы...
$variable = '';
$variable['key'] = 'Hello World!';
echo $variable['key'] // H
Когда я повторяю $variable['key']
, он получает только первый символ из значения. Теперь я знаю, что это потому, что $variable
изначально объявлен как строка.
Но почему это работает в PHP 5.6? Что я могу сделать, чтобы это работало в 7.2, не просматривая тысячи строк кода?
Есть ли такая директива, как strict_types
, которую я могу использовать?
'key'
при обработке как целое число становится0
- поскольку$variable
- это строка, вы делаете'Hello World'[0]
... чтоH
- person CD001   schedule 16.11.2018$variable = '';
или сделай$variable = [];
- person AbraCadaver   schedule 16.11.2018phpstan
не считает этот код плохим. Поэтому я также не вижу хорошего способа автоматического устранения этих проблем. - person Namoshek   schedule 16.11.2018call_user_func()
может помочь: php.net/manual/ ru/function.call-user-func.php . Туда тоже можноeval()
, но плохо видно будет ;) Удачи! - person NVRM   schedule 16.11.2018