【问题标题】:PhpStorm 8.0 - How enable code completion in another file?PhpStorm 8.0 - 如何在另一个文件中启用代码完成?
【发布时间】:2015-02-27 20:23:16
【问题描述】:

我实现了包含方法method()MyClass,并将实例存储在test.php 中的$_ENV['key'] 中。同样在 test.php 中,当我输入 $_ENV['key']-> 时,代码完成工作。

test2.php 中我包含了 test.php 并且代码完成对于 $_ENV['key']-> 不再起作用。

有谁知道如何在 PhpStorm 中启用此功能?

【问题讨论】:

    标签: autocomplete phpstorm completion


    【解决方案1】:

    数组的 AFAIK 类型跟踪在同一文件中工作。

    您可以通过中间变量(是的,这不是最好的解决方案)和小的 PHPDoc 注释绕过它,如下所示:

    /** @var MyClass $myVar */
    $myVar = $_ENV['key'];
    $myVar->
    

    附言 一般来说,我建议不要以这种方式使用全局数组(或者甚至根本不使用全局变量——如果可能的话,只在引导期间使用非常基本的东西)。相反(基于您的代码)我可能会建议使用一些带有专用字段的静态类(作为替代方案之一),您可以轻松地向类字段提供类型提示(通过 PHPDoc)——这样 IDE 将始终知道它的类型是。当前的 PHP 版本(5.5 尤其是 5.6)处理对象的速度几乎与处理数组的速度一样快,甚至导致(更小的)内存消耗。

    显然,如果此代码不是您的,则此类建议实际上并不适用。

    【讨论】:

    • 事实上,在我的代码中,我使用了一个文件“bootstrap.php”,它实例化了类并存储在 $_ENV 中。例如 SwitfMailer:paste.ubuntu.com/10455465
    • 并且还存储一些单例的实例。为了避免一直使用“SingletonClass::getInstance()”
    • 1) 我明白。但是 ATM PhpStorm 不能像处理单独的变量或类一样处理单独的数组元素/键(特别是如果它是跨多个文件完成的)。使用 PHPDoc,您可以轻松地为单个变量或类字段/属性提供类型提示 .. 但您不能为单个数组元素执行此操作。 2) *"为了避免一直使用SingletonClass::getInstance()" 在我看来getInstance() 实际上更好,因为它允许使用延迟加载 -- 加载类/ 仅在需要时使用,而不是在每次脚本调用时使用。
    • 真的吗...感谢您的建议和澄清。
    猜你喜欢
    • 1970-01-01
    • 2016-10-28
    • 2012-09-22
    • 2013-09-30
    • 2011-11-15
    • 2012-10-18
    • 1970-01-01
    • 2014-06-09
    • 2012-06-26
    相关资源
    最近更新 更多