PhpStorm 未检测到 php 库命名空间

PhpStorm not detecting php library namespace

我目前使用 PhpStorm IDE。

我唯一的问题是找不到我的 php-library。

我已经安装了这个:PHP-JS

通过安装,我的意思是生成了我通过 php5enmod php-js.

加载的 php-js.so 文件

图书馆作品:

// 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 命名空间,因此找不到来自该命名空间的 classes。

有什么方法可以告诉 PhpStorm 我实际上是在从有效命名空间的有效 class 调用现有方法?

我尝试使用 docBlock 标签使其工作,但 none 似乎符合我的需要。

PhpStorm 无法读取您的二进制 .so 文件(Windows 上的 .dll)并从那里提取 PHP 接口(并通过 "PHP interface" 我的意思是 classes/functions/constants/etc 该扩展在运行时提供)。

因此,您需要像所有其他二进制 php 扩展一样执行相同的操作(例如 Phalcon's DevTools)——制作存根文件。

存根文件是您的 classes/methods/functions/etc 的有限 PHP 版本,具有(可选)完整文档但主体为空。您可以在任何标准 PHP class(例如 MySQL)上 Ctrl + 单击 并亲眼看看它在 PhpStorm 中是如何完成的(IDE将在另一个编辑器选项卡中打开相应的存根文件).. 或者直接浏览他们的存根存储库(感谢@DanFromGermany 的 link -- 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。


任何可以解析源 .php 文件并在代码完成中从那里提供 classes/functions 的 IDE/editor 都可以使用此类存根文件。因此,PHP-JS 的 ask developers 自动提供此类存根是完全合理的(就像 Phalcon 开发人员所做的那样)。