__construct 参数内的类可见性(私有) - 这是有效的 php 代码吗?

nor*_*orr 5 php php-8

我正在看别人的代码,我不明白。这是类的示例:

class ImageService
{
   public function __construct(
       private ImageTransformer $imageTransformer,
       private PostService $postService
   ) {

   }

   // other methods here
}
Run Code Online (Sandbox Code Playgroud)

由于参数内的“私有”,IDE 在 _construct 下显示错误。我知道在 PHP 8 中有联合类型,但我找不到任何关于在类内部而不是在构造函数内部使用“private”或“public”的信息,以及它应该做什么。我认为这是错字,它应该在类内部,但多个类是这样创建的。这是有效的代码还是有人不知道他在做什么?

Abr*_*ver 5

这是 PHP 8.0.0 中的新增功能,称为构造函数提升

从 PHP 8.0.0 开始,构造函数参数也可以提升为与对象属性相对应。将构造函数参数分配给构造函数中的属性但不对其进行操作的情况很常见。构造函数升级为该用例提供了一种简写方式。

如果你执行该代码你就会看到。您应该检查您的 IDE 是否已更新为支持 PHP 8.0.0。