PHP 5-7 проблема кода, косвенный доступ к переменным, свойствам и методам - PullRequest
2 голосов
/ 23 октября 2019

Я недавно перешел с PHP 5.6 на PHP 7.3 и пытаюсь исправить все мои сайты и поддерживать их в актуальном состоянии.

В моей теме Wordpress я получаю много:

Косвенный доступ к переменным, свойствам и методам будет оцениваться строго в порядке слева направо, начиная с PHP 7.0. Используйте фигурные скобки, чтобы убрать неоднозначность.

Код, о котором идет речь, всегда:

global $options;
foreach ($options as $value) {
    if (get_settings( $value['id'] ) === FALSE) { $$value['id'] = $value['std']; } else { $$value['id'] = get_settings( $value['id'] ); }
}

Может кто-нибудь помочь, как правильно сделать это в PHP7, потому что ясмущенный. Ошибка, если она специфична для строки if.

Сделал поиск здесь и в Google и не нашел ничего полезного. Пробовал брекеты и скобки, ничего.

Я попробовал это, и это не помогло:

global $options;

foreach ($options as $value) {
    if (isset($value['id']) && get_option( $value['id'] ) === FALSE && isset($value['std'])) { $$value['id'] = $value['std']; }
    elseif (isset($value['id'])) { $$value['id'] = get_option( $value['id'] ); }
}

1 Ответ

3 голосов
/ 24 октября 2019

Я думаю, что это переменные переменные, поэтому попробуйте ${$value['id']} вместо $$value['id']:

foreach ($options as $value) {
    if (get_settings( $value['id'] ) === FALSE) {
        ${$value['id']} = $value['std'];
    } else {
        ${$value['id']} = get_settings( $value['id'] );
    }
}

Вот соответствующая документация из примечаний по обновлению PHP

...