当前位置: 首页 > 知识库问答 >
问题:

phpstrom 怎么设置代码提示?

冯曾笑
2023-07-03

古老的框架有些代码不能提示

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个答案

皇甫雨华
2023-07-03

添加注释:

/**
 * @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,
    ]));
}
  • PhpStorm advanced metadata | PhpStorm Documentation

或者使用插件:

  • deep-assoc-completion - IntelliJ IDEA & PhpStorm Plugin | Marketplace
 类似资料:
  • vs2022怎么设置在debug过程中到了要执行的代码处显示高亮提示,然后有状态图实时显示每行代码的输出结果的

  • 有个项目中有一个less文件,有明白是什么意思吗? 一直有下面的错误,这个怎么解决?

  • 您可以在创建或编辑文件时设置用于控制代码格式的首选参数。 手动设置代码格式 打开支持的文件。 选择“编辑”>“代码”>“应用源格式”。 或者,从“常用工具栏”>“格式化源代码”中选择“应用源格式”。 手动设置文件中选定代码的格式 打开代码。 选择代码的任意部分。 选择“编辑”>“代码”>“将源格式应用于选定内容”。 或者,从“常用工具栏”>“格式化源代码”中选择“将源格式应用于选定内容”。 注意:

  • 本文向大家介绍Android Studio 设置代码提示和代码自动补全快捷键方式,包括了Android Studio 设置代码提示和代码自动补全快捷键方式的使用技巧和注意事项,需要的朋友参考一下 想必使用过Eclipse的小伙伴们都习惯Eclipse快捷键带来的方便,但是当我们使用Android studio来进行开发的时候也想要这种方便该怎么办呢,当然使用过Android studio的小伙伴可

  • IDEA编写Java代码是,System下无提示,System.out.println爆红,编译没问题。 项目结构中页正确添加了依赖 Maven配置文件如下 但是没用使用到Meven

  • 问题内容: 这是我的整个源代码: 代码卡在了 fmt.Println(“ enq =”,t)上, 但是我不知道为什么,这太奇怪了。 问题答案: deQueue在失败情况下无限循环,这阻塞了CPU。Goroutine在执行CPU工作时不会屈服。GOMAXPROCS必须大于等于2才能获得CPU并行性。 只是为了踢,这是使用高阶通道的线程安全,无阻塞队列实现:https : //gist.github.