PhpStorm没有检测到php库命名空间

时间:2016-03-10 16:05:54

标签: php phpstorm .so

我正在使用PhpStorm作为当前的IDE。

我遇到的唯一问题是它无法找到我的php库。

我安装了这个:PHP-JS

通过安装,我的意思是生成php-js.so文件,我通过php5enmod php-js加载了该文件。

图书馆有效:

// This is a valid namespace AND classname
$context = new JS\Context;
$result  = $context->evaluate("var x = 3; var y = 4; var z = x + y; ++z;");
// will output 8

对于某些(好吧,不是那么奇怪)的原因,PhpStorm找不到JS命名空间,因此没有来自该命名空间的类。

有没有办法告诉PhpStorm我实际上是从有效命名空间中的有效类调用现有方法?

我试图使用docBlock标签使其工作,但似乎没有一个符合我的需要。

1 个答案:

答案 0 :(得分:3)

PhpStorm无法读取您的二进制.so文件(Windows上为.dll)并从那里提取PHP接口(以及“PHP接口”我指的是类/函数/常量/等该扩展在运行时提供)。

因此,您需要像所有其他二进制PHP扩展一样(例如Phalcon's DevTools) - 制作存根文件。

存根文件是类/方法/函数/等的有限PHP版本,带有(可选)完整文档但空体。您可以在任何标准PHP类(例如MySQL)上 Ctrl +单击,看看自己在PhpStorm中是如何完成的(IDE将在另一个编辑器选项卡中打开相应的存根文件)..或者只是浏览他们的存根存储库直接(感谢@DanFromGermany获取链接 - https://github.com/JetBrains/phpstorm-stubs)。

此类存根文件的一个示例是(它涵盖了您示例中的代码):

<?php

namespace JS;

class Context
{
    /**
     * Evaluate your JS code
     *
     * @param string $param JS code to evaluate
     * @return mixed
     */
    public function evaluate($param) {}
}

只需将这些存根文件放在项目的某个位置(或引用任何其他支持的方式 - 例如通过PHP | Include paths) - 此代码仅适用于IDE。

这样的存根文件可供任何IDE /编辑器使用,它可以解析源.php文件并在代码完成时从那里提供类/函数。因此,PHP-JS的ask developers自动提供这样的存根(就像Phalcon开发者那样)是完全合理的。