phpstrom 怎么设置代码提示?
古老的框架有些代码不能提示
class kernel{
static function single($class_name,$arg=null){
if($arg===null){
$p = strpos($class_name,'_');
if($p){
$app_id = substr($class_name,0,$p);
if(!isset(self::$__single_apps[$app_id])){
self::$__single_apps[$app_id] = app::get($app_id);
}
$arg = self::$__single_apps[$app_id];
}
}
if(is_object($arg)){
$key = get_class($arg);
if($key==='app'){
$key .= '.' . $arg->app_id;
}
$key = '__class__' . $key;
}else{
$key = md5('__key__'.serialize($arg));
}
if(!isset(self::$__singleton_instance[$class_name][$key])){
self::$__singleton_instance[$class_name][$key] = new $class_name($arg);
}
return self::$__singleton_instance[$class_name][$key];
}
}
都是 $messageModule = kernel::single('class_name');这样调用的怎么让$messageModule写代码时有提示哪些方法呢
回复
1个回答
test
2024-07-02
添加注释:
/**
* @template T
* @param class-string<T> $class_name
* @param $arg
* @return T
*/
function single($class_name, $arg = null)
{
}
或者使用 meta 文件,在项目根目录下创建 .phpstorm.meta.php
文件
namespace PHPSTORM_META {
// 这里的 kernel::single 如果有完整的命名空间就需要写完整,这里的 0 表示第 0 个参数
override(kernel::single(0), map([
// 第一个 这里表示第 0 个参数传入任意字符串,都将尝试解释为返回这个以这个字符串为类名的实例
'' => '@',
// 下面就可以自定义,比如你传入了一个 abc 将会返回一个 ClassAbc 类的实例
'abc' => ClassAbc::class,
]));
}
或者使用插件:
回复
适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容