在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