编程语言
首页 > 编程语言> > 在PHP 5.4中替换:: class

在PHP 5.4中替换:: class

作者:互联网

我正在使用this Composer package进行需要此程序包提供的功能的开发.寻找替代方案,我发现这是我最好的选择,因为可用的替代方案在我正在处理的时间限制中实现过于准确.

现在,我在运行PHP 5.5的个人服务器上运行PHP 5.5(在Linux子系统上用于Windows 10)的本地计算机上进行了测试,但生产服务器运行的是PHP 5.4,由于某些原因无法升级.

首先我有这个错误:

Parse error: syntax error, unexpected 'class' (t_class), expecting identifier (t_string) in …

寻找解决方案我打了this question,所以我去了包裹代码并找到了以下片段:

protected static $classmap = [
    'getTransactionResult' => getTransactionResult::class,
    'getTransactionResultResponse' => getTransactionResultResponse::class,
    'transactionResultOutput' => transactionResultOutput::class,
    'cardDetail' => cardDetail::class,
    'wsTransactionDetailOutput' => wsTransactionDetailOutput::class,
    'wsTransactionDetail' => wsTransactionDetail::class,
    'acknowledgeTransaction' => acknowledgeTransaction::class,
    'acknowledgeTransactionResponse' => acknowledgeTransactionResponse::class,
    'initTransaction' => initTransaction::class,
    'wsInitTransactionInput' => wsInitTransactionInput::class,
    'wpmDetailInput' => wpmDetailInput::class,
    'initTransactionResponse' => initTransactionResponse::class,
    'wsInitTransactionOutput' => wsInitTransactionOutput::class
];

我发现:: class定义与PHP 5.4不兼容,并且在尝试执行what the answer to the question suggested时,我得到了结果in this commentary to that answer.

现在,到目前为止,我已经对带有问题的行进行了评论(两者都是包含这些::类定义的数组),在生产服务器上进行了测试,并且到目前为止一直有效.但我想知道是否有这个:: class定义的实际替代品.

重要说明:我在网上看到的例子谈到了引用ClassName :: class的get_class(‘ClassName’),而不是关于classMethod :: class的案例.我也遇到了this question,但答案中提供的例子并没有给我一个如何使用它的线索.

解决方法:

:: class返回该类的完整命名空间.您可以编写完整的命名空间.在一些新的包中,如果需要,最好将命名空间赋给类并在该类中创建实例. ::课程更短,更舒适.

例如:

protected static $classmap = [
    'getTransactionResult' => 'Namespace\of\the\class',
]

这个时间要长得多,当你在这个位置遇到这样的问题时,我确信你在使用新包时会遇到更多问题.

标签:php,composer-php,php-5-4
来源: https://codeday.me/bug/20190527/1165877.html