Как правильно использовать class_exists в PHP 5.4 - PullRequest
1 голос
/ 20 марта 2020

Я использую старую систему с PHP 5.4, которую я не могу обновить. Мне пришлось внести небольшое изменение, добавив библиотеку для создания PDF-файла под названием FPDF / FPDI, которая имеет эту функцию:

protected function getPdfParserInstance(StreamReader $streamReader)
{
    /** @noinspection PhpUndefinedClassInspection */
    if (\class_exists(FpdiPdfParser::class)) {
        /** @noinspection PhpUndefinedClassInspection */
        return new FpdiPdfParser($streamReader);
    }

    return new PdfParser($streamReader);
}

Проблема в том, что ::class был добавлен в PHP 5.5, как объяснено в этом вопросе .

Вопрос в том, какие изменения необходимо внести в эту функцию для работы в PHP 5.4?

.

1 Ответ

2 голосов
/ 20 марта 2020

::class просто возвращает строку, содержащую полное имя класса, поэтому используйте его вместо этого. Взглянув на верхнюю часть файла для операторов use, вы обнаружите, что FpdiPdfParser это просто псевдоним, поэтому ваш код должен быть переписан так, чтобы он выглядел так:

if (class_exists("setasign\\FpdiPdfParser\\PdfParser\\PdfParser"))

Строго говоря, вам не нужно избегать обратной косой черты; несколько escape-последовательностей содержат заглавные буквы, но в любом случае это целесообразно.

Вряд ли это будут единственные проблемы совместимости, с которыми вы столкнетесь. Если система может работать PHP 5.4, она почти наверняка может запустить PHP 5.6, что устарело только на пару лет.

...