Как функции PHP func_get_arg и func_get_args изменились с PHP 5.x на PHP 7.x

Обновление версии PHP для вашего проекта обычно не сложно, если в вашем проекте нет большого количества устаревшего кода, который был удален в последней версии. Одна из вещей, которую многие разработчики не ожидают при изменении версии с незначительными сборками, например, с 5.20 до 5.29, — это изменение поведения встроенной функции, однако с основной сборкой, а именно с новым PHP 7, вы может ожидать, что некоторые вещи могут сломаться. В этом случае func_get_arg Функция немного изменилась. Чтобы понять, как изменилось поведение функции, проанализируйте следующий фрагмент PHP:

Функция printValue напечатает первый аргумент, отправленный функции благодаря func_get_arg функция. Если вы запустите код на разных версиях PHP, результат будет другим. В PHP <=5.x, результат будет:

123

Однако в PHP >=7.x, результат будет:

The value is: 123

Но почему?

Отныне в PHP 7.x, функции func_get_arg а также func_get_args не будет возвращать исходное значение, которое было предоставлено в качестве параметра, вместо этого оно предоставит текущее значение аргумента (которое, очевидно, могло быть намеренно изменено вашим собственным кодом). Если среда выполнения вашей функции не изменяет значение аргумента, вам не нужно беспокоиться об этой маленькой проблеме. В качестве альтернативы вы можете исправить это поведение, просто создав новую переменную в области действия, в которой будет сохранено то же значение аргумента, но с модификацией, либо внесите модификацию после извлечения ее исходного значения в другую переменную:

Ссылка на основную публикацию
Adblock
detector