如何在PHP 5.4中正确使用class_exists

问题描述 投票:1回答:1

我正在使用无法升级的PHP 5.4旧系统。我必须通过添加一个名为FPDF / FPDI的具有此功能的PDF文件生成库来做一个小的更改:

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中添加,如in this question所述。

问题是:要在PHP 5.4中工作,需要对该函数进行哪些更改?

php fpdf php-5.5 php-5.4 fpdi
1个回答
1
投票

::class仅计算包含类的全名的字符串,因此请改用它。查看top of the file语句,您会发现use只是一个别名,因此应将代码重写为如下形式:

FpdiPdfParser

严格来说,您不需要转义反斜杠;很少有if (class_exists("setasign\\FpdiPdfParser\\PdfParser\\PdfParser")) 包含大写字母,但是无论如何,这样做是一个好习惯。

不太可能这将是您遇到的唯一兼容性问题。如果一个系统可以运行PHP 5.4,那么几乎可以肯定它可以运行PHP 5.6,这仅是过时的几年了。

© www.soinside.com 2019 - 2024. All rights reserved.