我怎样才能让 phpstan 找到我的自定义扩展 class?

How can I have phpstan find my custom extension class?

为了实现对某些神奇 _get() 函数的检查,我正在尝试实现“class 反射扩展”。 The manual 提到如何自己编写扩展文件,并通过将 service 部分添加到 neon 文件来安装它们。

我写了一个扩展,然后像这样添加它:

services:
    -
        class: TestClass
        tags:
            - phpstan.broker.methodsClassReflectionExtension

这会导致以下错误:

Service '0226': Class TestClass not found.

我尝试过的事情:

其中一些 'adding' 尝试实际上会在找不到文件时发出警告:例如,如果我在其中一个中故意输入错误,比如说自动加载,它会警告我缺少文件。但前提是我没有定义 service

如果我定义了服务并在那里故意打字错误,它 returns 在 class-not-found 之上(而不是打字错误),所以我觉得它在任何之前检查扩展的参数?

似乎需要将我的文件添加到不同的自动加载机制。问题是,哪个以及如何?

我正在使用

扩展 class 需要在运行时加载。您可以通过两种方式实现:

  1. 使 class 可用于 Composer 自动加载器。通常配置 composer.json.

    autoload-dev 部分就足够了
  2. 创建一个名为 phpstan-autoload.php 的文件,其中 require_once 扩展名为 class 的文件。并在 运行 PHPStan.

    时将 phpstan-autoload.php 文件的路径作为命令行上的 --autoload-file|-a 选项传递