场景是这样的:

定义了一个 MyComponent,在配置文件中加上这个组件的定义,比如: 'myComponent'=>['class'=>'app/components/MyComponent'], 就可以用Yii::$app->myComponent调用啦,但是,当输入、Yii::$app-> 后,myComponent不在自动提示的列表里,并且这个MyComponent的各种方法,PHPStorm无法给出代码提示,这对于追求效率和准确性的程序员是不可忍受的。

解决方案:

谷歌了一通,发现Yii2的核心开发人员之一,亚历山大,已经给出了解决方案,GITHub链接

原理就是重新定义一个Yii类,然后利用PhpDoc,如:

/**

* Class BaseApplication

* Used for properties that are identical for both WebApplication and ConsoleApplication

*

* @property \app\components\MyComponent $myComponent

* @property \app\components\Mailer $mailer The mailer component. This property is read-only. Extended component.

*/

abstract class BaseApplication extends yii\base\Application

{

}

有了@property定义后,PHPStorm就可以去对应的类里找到相应的方法,然后提示代码了。

php依赖注入 代码提示,Yii2 Day 3: 让PHPStorm支持自定义Component依赖注入代码提示相关推荐

  1. html自定义标签提示,用简单的jquery+CSS创建自定义的a标签title提示tooltip_HTML/Xhtml_网页制作...

    简介 用简单的jquery+CSS创建自定义的a标签title提示,用来代替浏览器默认行为.如图: Javascript代码 代码如下: $(function() { $("a[title] ...

  2. 依赖注入的三种方式_ASP.NET Core技术研究-探秘依赖注入框架

    ASP.NET Core在底层内置了一个依赖注入框架,通过依赖注入的方式注册服务.提供服务.依赖注入不仅服务于ASP.NET Core自身,同时也是应用程序的服务提供者. 毫不夸张的说,ASP.NET ...

  3. spring自定义作用域 依赖注入之手动注入

    自定义作用域 spring容器自带的有2种作用域,分别是singleton和prototype:还有3种分别是spring web容器 环境中才支持的request.session.applicati ...

  4. factorybean 代理类不能按照类型注入_《Spring入门经典》:使用Spring进行依赖注入

    第二章:使用Spring进行依赖注入 重点:配置并使用Spring容器 使用不同类型的配置元数据来配置Spring容器 理解依赖解析 了解自动装配的优缺点 在容器中执行显式Bean查找 学习不同的Be ...

  5. Spring注入(Injection)——教你一点一点知道什么是依赖注入及注入方式

    前言 在学习spring的时候有个很重的知识点,那就是注入,不同的注入方式为程序的运行效率,资源利用都有不同的好处,接下来就看看我通过看视频总结的注入. 一.引入注入 1.首先我们明确一个问题,什么注 ...

  6. Win10玩游戏提示由于找不到xinput1 3.dll无法继续执行代码

    Win10玩游戏提示由于找不到xinput1 3.dll无法继续执行代码怎么办?一些用户使用电脑安装自己喜欢的游戏时,运行游戏的时候,遇到了错误提示.提示说缺少了一个xinput1 3.dll文件.其 ...

  7. Spring源码分析(十)依赖注入源码解析3:DefaultListableBeanFactory#doResolveDependency 真正开始解析依赖项

    4.2 真正开始解析依赖项(最核心方法) org.springframework.beans.factory.support.DefaultListableBeanFactory#doResolveD ...

  8. linux6.5依赖文件,CentOS6.5-64位安装puppeteer,提示Chrome无法启动,查找并安装缺失依赖包——吕江民·敬上...

    1.进入chrome目录 cd /mnt/project/express/back/chrome-linux 2.检测缺失的依赖包 ldd chrome | grep not // 检测结果 liba ...

  9. bugfree 检测不到mysql_安装bugfree时,提示Mysql未安装,找了网上的方法更改代码,但是还没有得到解决,怎么办?...

    源自:- 安装bugfree时,提示Mysql未安装,找了网上的方法更改代码,但是还没有得到解决,怎么办? 问题出现在bugfree安装检查环境时,一直提示未安装mysql. 小编百思不得其姐,  最 ...

最新文章

  1. input框输入完回车即可查询事件
  2. android中编译和使用luajit开发应用,Android 嵌入 LuaJIT 的曲折道路
  3. POJ - 3259 Wormholes(判断负环)
  4. Redis java客户端操作
  5. JavaScript高级之继承
  6. 抖音2020研究报告_抖音音乐发布2020抖音音乐生态数据报告
  7. 如何使用Vue集成其它UI组件?如何阅读UI官网?移动端组件Vant实例教程(熬夜干货)
  8. 华为鸿蒙OS用户今年底或达2亿 将发布自研鸿蒙编程语言
  9. Android SystemClock 应用
  10. 在razor视图引擎中转义@字符
  11. chrome frame节点 取_Chrome Frame插件解决IE浏览器兼容问题
  12. Excel 做统计学分析
  13. drop index mysql_MySQL修改和删除索引(DROP INDEX)
  14. Implement AWS SQS and Lambda to decouple process flow
  15. Mysql 错误1366, Incorrect string value: '\\xE6\\xB7\\xB1\\xE5\\x85\\xA5...' for column '
  16. 【私有,不喜勿入】健康
  17. 记住熊三木,一场关于文创产业“复兴十年” 的豪赌
  18. 电脑每隔约半分钟弹出this computer is being attacked
  19. Excel竟然可以批量解锁二维码内容的操作
  20. unity摄像机追踪屏幕抖动的问题

热门文章

  1. Java 学习(21)--集合笔试题
  2. ArcGIS Engine 中的多线程使用
  3. 应用Mongoose开发MongoDB(2)模型(models)
  4. UVa 1025 A Spy in the Metro
  5. IOS开发之自定义Button(集成三种回调模式)
  6. 引用的定义、使用及其和指针的区别与联系
  7. js事件流的三个阶段
  8. oracle和SQLserver数据库中select into 的区别
  9. hdu4506小明系列故事——师兄帮帮忙 (用二进制,大数高速取余)
  10. 将STM32的标准库编译成lib