Strict standards only variables should be passed by reference як виправити

Подібна помилка почала з'являтися при переході на версію PHP 5.3, в якій заборонений виклик функції з параметром - константою, якщо функція очікує на цьому місці посилання на змінну.

Наведу простий приклад. Скажімо, у нас є функція, яка очікує посилання на змінну $ b:

Якщо ми будемо викликати цю функцію, підставляючи на місце другого параметра фіксоване значення (константу), то отримаємо помилку Strict Standards: Only variables should be passed by in ...:

Для того, щоб усунути цю помилку, не змінюючи логіку програми, необхідно замінити параметр 5 на змінну, рівну цьому значенню:

У цьому випадку все вірно - функція отримає посилання на змінну і ніякого порушення стандартів не відбудеться.

Інша поширена причина виникнення подібної помилки - це передача на вхід функцій, що вимагають покажчика на змінну, результату виконання іншої функції. Ось приклад:

В даному випадку ми бачимо як результат роботи функції explode () передається безпосередньо як параметр у функцію end (). Але функція end () працює з покажчиком на масив, а не зі значенням масиву. Тому тут також буде виведена помилка.

Рішення таке ж як і в попередньому випадку:

Тобто спершу ми переносимо значення в справжню змінну, і тільки потім передаємо в end () покажчик на цю змінну.

Власне все помилки подібного роду вирішуються саме таким чином. Якщо у вашій програмі десь стала вилітати вищевказана помилка, то просто створюйте тимчасову змінну там, де помилково передається константа.

Схожі статті