问题描述
要实现对某些神奇的_get()
函数的检查,我正在尝试实现“类反射扩展”。 The manual提到了如何自己编写扩展文件以及如何通过在霓虹灯文件中添加service
部分来安装扩展文件。
services:
-
class: TestClass
tags:
- PHPstan.broker.methodsClassReflectionExtension
这将导致以下错误:
服务'0226':找不到类TestClass。
我尝试过的事情:
- 使用独立的phar
- 使用PHPstan的作曲家安装
- 使用特定的命名空间(PHPStan)进行扩展(在文件和霓虹灯中)
- 使用“随机”名称空间(在文件和霓虹灯中)
- 将文件添加到我正在扫描的目录中进行分析
- 将带有扩展名的目录添加到“ scanDirectories”参数中
- 将文件添加到“ scanFiles”参数
- 将带有扩展名的目录添加到“ paths”参数
- 添加(不建议使用的)自动加载指令并将文件添加到此处。
其中一些“添加”尝试实际上会警告是否找不到文件:例如,如果我故意在其中一种打错字,比如说自动加载一个,它会警告我文件丢失。但前提是我没有定义service
。
如果我定义了服务并在其中输入了故意的拼写错误,它会在未找到的类(而不是拼写错误)上方返回,所以我觉得它正在检查任何参数之前的扩展名?
似乎有必要将我的文件添加到其他自动加载机制中。问题是,哪个以及如何?
我正在使用
解决方法
扩展类需要在运行时加载。您可以通过两种方式实现这一目标:
-
使该类可用于Composer自动加载器。通常只需配置composer.json的
autoload-dev
部分即可。 -
创建一个名为
phpstan-autoload.php
的文件,在其中require_once
带有扩展名类的文件。运行PHPStan时,在命令行上以--autoload-file|-a
选项的形式将路径传递到phpstan-autoload.php
文件。