2

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

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

   }

   // other methods here
}

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

4

1 回答 1

2

这是 PHP 8.0.0 中的新功能,称为Constructor Promotion

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

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

于 2021-01-10T23:50:13.193 回答