我有一个PhpStorm不喜欢的代码片段:
public function __construct(LogFacade $logFacade)
{
private LogFacade $logFacade
} ()主要写的是Undefined constant 'LogFacade'和Expected: semicolon。
我们在带有PHP版本8.1.7的docker容器上运行:
martin@463a39853ae1:/web$ php -v
PHP 8.1.7 (cli) (built: Jun 13 2022 13:56:32) (ZTS)
Copyright (c) The PHP Group
Zend Engine v4.1.7, Copyright (c) Zend Technologies
martin@463a39853ae1:/web$PhpStorm (语言level+interpreter)也是如此:

当我将其更改为旧版本时,它完全可以工作(,但该项目在整个place上都使用了第一个片段)。
private LogFacade $logFacade;
public function __construct(LogFacade $logFacade)
{
$this->logFacade = $logFacade;
}发布于 2022-07-13 09:46:03
第一个片段应该声明构造函数参数中的可见性。因此,不需要在构造函数体中再次引用它。
public function __construct(private LogFacade $logFacade) {}发布于 2022-07-13 09:03:39
属性需要在类中声明,您的类应该如下所示:
class MyClass
{
private LogFacade $logFacade;
public function __construct(LogFacade $logFacade)
{
$this->logFacade = $logFacade;
}
}更多细节可以在这里找到:https://www.php.net/manual/en/language.oop5.visibility.php
https://stackoverflow.com/questions/72963409
复制相似问题