如何在PHPSTORM_META中指定以::NAME结尾常量的返回类型?
给自定义DI配置PhpStorm自动类型提示
咱们有个遗留的自定义DI(依赖注入)工具,用法是这样的:
/** @var SomeClass $settings */ $settings = DI()->GetSettings(SomeClass::NAME); // 实际运行时$settings确实是SomeClass的实例,每个类都定义了专属的::NAME常量
现在想在.phpstorm.meta.php里配置规则,不用每次手动写@var注释,让PhpStorm自动识别:只要调用GetSettings()时传入XX::NAME格式的常量,方法就返回XX类型的实例。
直接在项目根目录的.phpstorm.meta.php文件中添加以下代码即可:
<?php namespace PHPSTORM_META { override(\DI()->GetSettings(0), type(0, '::NAME')); }
简单解释下配置逻辑:
override(\DI()->GetSettings(0)):指定要处理的是DI()->GetSettings()方法的第一个参数type(0, '::NAME'):告诉PhpStorm,当第一个参数是XX::NAME格式的类常量时,方法返回值的类型就是该常量所属的XX类
配置完成后,再写$settings = DI()->GetSettings(SomeClass::NAME);这类代码时,PhpStorm会自动识别$settings的类型为SomeClass,无需手动添加类型注释。
内容的提问来源于stack exchange,提问作者des1roer
相关产品推荐
相关产品推荐

