我正在使用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标签使其工作,但似乎没有一个符合我的需要。
答案 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开发者那样)是完全合理的。