Ошибка на друпале 9. Only variables should be passed by reference с чем может быть связана?

Ссылка скопирована
1 ответ

Всем привет! В сайте на cms drupal 9 возникает ошибка.

Ошибка на друпале 9. Only variables should be passed by reference с чем может быть связана?

С чем это может быть связано?

Дополнительно:

Такое сообщение, как правило, возникает, когда код, написанный во времена PHP5
запускают на PHP7.
Связано оно с тем, что функция (в данном случае - hrutka_preprocess_page) ожидает получить ссылку на переменную, а получает константу. Скорее всего, это второй параметр со значением 'page'.
Для исправления нужно разобраться, действительно ли требуется передача по ссылке и либо исправить заголовок функции, либо предварительно записывать константу в переменную, которую уже использовать в вызове функции.
В PHP8 такая ситуация из предупреждения стала критической ошибкой.

Очевидно, с тем, что hrutka_preprocess_page принимает аргумент по ссылке . Загляните в мануал, там полезное пишут.

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Ольга Сеть Ответ

Ошибка "Only variables should be passed by reference" в Drupal 9 может быть связана с несколькими причинами. Давайте разберем их по порядку:

1. Передача значения по ссылке: В PHP есть два способа передачи аргументов в функцию - по значению и по ссылке. Если вы передаете значение по ссылке (используя амперсанд & перед переменной), то переменная должна быть переменной, а не выражением. Например, вы не можете передавать выражение типа `$a + $b` по ссылке, так как это не является переменной.

2. Использование функций, которые не могут принимать ссылки: Некоторые встроенные функции в PHP не могут принимать значения по ссылке. Например, функции `array_map` или `array_filter` не могут принимать аргументы по ссылке. В этом случае вам нужно создать переменную и передать ее по ссылке.

3. Неправильное использование ссылок: Иногда ошибка может возникать из-за неправильного использования ссылок в вашем коде. Убедитесь, что вы используете ссылки только там, где это необходимо, и что вы передаете переменные, а не выражения.

Пример кода с ошибкой "Only variables should be passed by reference":

function add_one(&$value) {
    $value = $value + 1;
}
 
$num = 5;
add_one($num + 1); // Ошибка: выражение $num + 1 не является переменной

function add_one(&$value) { $value = $value + 1; } $num = 5; add_one($num + 1); // Ошибка: выражение $num + 1 не является переменной

Исправленный пример:

function add_one(&$value) {
    $value = $value + 1;
}
 
$num = 5;
add_one($num); // Передаем переменную $num по ссылке

function add_one(&$value) { $value = $value + 1; } $num = 5; add_one($num); // Передаем переменную $num по ссылке

Проверьте свой код на наличие указанных выше причин ошибки и исправьте его соответственно. Надеюсь, это поможет вам избавиться от ошибки "Only variables should be passed by reference" в Drupal 9.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно