php - 如何让我的 PHP IDE 理解依赖注入(inject)容器?

标签 php ide dependency-injection phpstorm

当前情况:我的项目中有依赖项,我使用依赖项注入(inject)解决了这些依赖项。我想通过使用依赖注入(inject)容器 (DIC) 来简化我的依赖管理和延迟加载类,从而采取下一个逻辑步骤。

我看了Bucket , Pimple , 和 sfServiceContainer ,进行了一些测试,并非常欣赏 DIC 的工作方式。我可能会选择 Pimple,因为它的简单性和原始力量。如果我没有这个问题:

由于 DIC 提供的抽象,我使用的 IDE (PHPStorm) 不再理解我的代码中发生了什么。它不理解 $container['mailer'] 或 $sc->mailer 持有一个类对象。我也试过 Netbeans IDE:同样的问题。

这对我来说确实是个问题,因为我的 IDE 变得毫无用处。在处理类时,我不想在没有代码提示、自动完成和重构工具的情况下进行编程。而且我不希望我的 IDE 在验证代码时发现各种误报。

所以我的问题是:有没有人处理过这个问题并找到了解决方案?

最佳答案

您可以“手动”定义变量的类:

/** @var YourClassType $mailer */
$mailer = $container['mailer'];

在 PhpStorm(和 standards )中,使用两个星号并将数据类型写在变量名称之前。

可以不写变量名的数据类型(但不能写不带数据类型的名字)。

关于php - 如何让我的 PHP IDE 理解依赖注入(inject)容器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6395737/

相关文章:

java - 如果基类匹配条件,IntelliJ 结构搜索将查找派生类

php - 忽略 preg_replace 中的 img 标签

php - 从 SQL 填充选择字段,使用选择更新数据库

php - Laravel 5 - 将先前的路线重定向到新路线

google-apps-script - 降级后升级到 Apps Script 新 IDE

dependency-injection - StructureMap 拦截器

php - Amazon EC2 连接到另一个 EC2 EBS

java - Eclipse:是否有更改类中方法顺序的快捷方式?

android - 带有 Android : How do I inject the current context? 的 Dagger

c# - 使用 CaSTLe Windsor 在开始新范围时我需要一个对象的新实例