Познавательный блог | Мобильная врсия |
|
СтраницыПромо |
PHP error: Call-time pass-by-reference has been removedОшибка PHP Call-time pass-by-reference has been removed или ранее Call-time pass-by-reference has been deprecated вызывает большую боль в одном месте у многих пользователей и разработчиков, в том числе это не обошло и в частности меня, поэтому стоит про это написать, что бы более не возвращаться. В общем всё дело в том, что в некоторых скриптах, внезапно, хотя чаще после смены версии PHP, может возникать ошибка Call-time pass-by-reference и всё бы ничего если бы в одной из версий PHP её из предупреждения не сделали фатальной ошибкой! В чём вообще дело? Эта ошибка (ранее просто предупреждение) говорит о том, что передача аргументов по ссылке во время вызова функции была объявлена устаревшей а позже и вовсе недопустимой. Т.е. теперь при вызове функции и передаче ей параметра не надо ставить перед параметром знак амперсанд (&), его теперь надо ставить в декларации (объявлении) функции/метода перед этим аргументом. Наличие ссылки нужно указывать в определении функции а не в вызове. Избавиться от этого предупреждения/ошибки можно разными способами. Рассмотрим их по порядку. В более старых версиях PHP Call-time pass-by-reference было всего лишь предупреждением и избавиться от него можно было лишь просто отключив отображение Warning’ов. Для этого надо в конфигурации PHP (файл php.ini) заменить В новых версиях PHP Call-time pass-by-reference считается фатальной ошибкой, поэтому надо исправлять непосредственно сам скрипт, убрав в указанной строчке символ & (амперсанд) перед именем переменной, передаваемой в какую-либо функцию и добавить его в объявлении функции: function f($a){...} //объявление f(&$a); //вызов меняем на function f(&$a){...} //объявление f($a); //вызов Собственно после изменения кода ошибка/предупреждение должна исчезнуть. |
Поиск по сайтуСтатистикаМета |
Разработка и дизайн — StvPromo.ru |
Написать комментарий