Обновление версии 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
не будет возвращать исходное значение, которое было предоставлено в качестве параметра, вместо этого оно предоставит текущее значение аргумента (которое, очевидно, могло быть намеренно изменено вашим собственным кодом). Если среда выполнения вашей функции не изменяет значение аргумента, вам не нужно беспокоиться об этой маленькой проблеме. В качестве альтернативы вы можете исправить это поведение, просто создав новую переменную в области действия, в которой будет сохранено то же значение аргумента, но с модификацией, либо внесите модификацию после извлечения ее исходного значения в другую переменную: