为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
aluckdog 2023-11-03 20:23:03
为了实现对某些魔术_get()函数的检查,我正在尝试实现“类反射扩展”。该手册提到了如何编写扩展文件本身,以及如何通过service向 neon 文件添加一部分来安装它们。我写了一个扩展,并像这样添加它:services:     -        class: TestClass         tags:             - phpstan.broker.methodsClassReflectionExtension这会导致以下错误:服务“0226”:未找到类 TestClass。我尝试过的事情:使用独立的 phar使用 phpstan 的 Composer 安装使用特定的命名空间 (PHPStan) 作为扩展(在文件和 neon 中)使用“随机”命名空间(在文件和霓虹灯中)将文件添加到我知道正在扫描以进行分析的目录将带有扩展名的目录添加到“scanDirectories”参数中将文件添加到“scanFiles”参数将扩展名添加到“paths”参数中的目录添加(已弃用的)自动加载指令并在其中添加文件。如果找不到文件,这些“添加”尝试中的一些实际上会发出警告:例如,如果我故意在其中之一中犯了一个拼写错误,比如说自动加载错误,它会警告我丢失文件。但前提是我没有定义service。如果我定义了服务并在那里故意输入错误,它会返回上面的类未找到(而不是输入错误),所以我觉得它在任何参数之前检查扩展?似乎需要将我的文件添加到不同的自动加载机制中。问题是,哪个以及如何?我在用着phpstan 0.12.40php 7.2.33
查看完整描述

1 回答

?
郎朗坤

TA贡献1921条经验 获得超9个赞

扩展类需要在运行时加载。您可以通过两种方式实现这一目标:

  1. 使该类可用于 Composer 自动加载器。通常配置autoload-devcomposer.json 的部分就足够了。

  2. 创建一个名为类似名称的文件phpstan-autoload.php,其中包含require_once具有扩展类的文件。并在运行 PHPStan 时将文件路径 phpstan-autoload.php作为--autoload-file|-a命令行上的选项传递。


查看完整回答
反对 回复 2023-11-03
  • 1 回答
  • 0 关注
  • 94 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信