Как не выполнить какой-нибудь код php 7 на php 5.6? - PullRequest
1 голос
/ 15 марта 2020

недавно у меня возникла необходимость использовать код come для обратной совместимости с PHP 5.6, и я сделал это с помощью оператора if, проверяя версию php для выбора того, какой код выполнять. Это небольшой пример:

if ( version_compare( PHP_VERSION, '7.0', '>=' ) ) {
    return strtotime($b['date']) <=> strtotime($a['date']);
}
else {
    if (strtotime($a['date']) == strtotime($b['date'])) {
        return 0;
    }
    return (strtotime($a['date']) > strtotime($b['date'])) ? -1 : 1;
}

Я думал, что этого будет достаточно, но это не так. PHP все еще пытается выполнить код PHP 7, возвращая ошибку с оператором космического корабля. Кто-нибудь знает, почему php все еще выполняет код внутри и если утверждение, которое ясно говорит, что не делать этого, и как это решить? Спасибо

1 Ответ

1 голос
/ 15 марта 2020

То, как вы пытаетесь, не сработает, потому что анализатор все равно попытается проанализировать весь файл и не распознает некоторые синтаксис php7. Чтобы предотвратить это, вам нужно сделать что-то вроде этого:

if (version_compare(PHP_VERSION, '7.0', '>=')) {
    include('php7code.php');
}
else {
    include('php5code.php');
}

Обратите внимание, что это нежелательно и сделает ваш код более сложным для тестирования.

...