2016-03-10 266 views
1

我使用PhpStorm作爲當前的IDE。PhpStorm沒有檢測到php庫名字空間

我唯一遇到的問題是它找不到我的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標籤,但似乎沒有匹配我需要的東西。

+3

PhpStorm沒有辦法讀取你的二進制'.so'文件並從那裏檢測PHP代碼/接口。您需要像所有其他二進制PHP擴展一樣執行相同的操作(例如[Phalcon](https://docs.phalconphp.com/en/latest/reference/tools.html#integrating-tools-with-phpstorm-ide)) - 使你的類(類/方法/函數/等等,具有完整的文檔但空身)的存根(有限的PHP版本)。你可以在任何標準的PHP類(例如MySQL)上「Ctrl + Click」看看它是如何完成的。 – LazyOne

+0

@LazyOne,我不希望PhpStorm閱讀我的'.so'文件。我問*如何*讓它知道我實際上使用有效的命名空間。並且不要將其標記爲無效 –

+0

@AlexTartan就像LazyOne所說,PhpStorm只有在存在存根或者通過composer/include引用的完整純文本類時才知道命名空間。請參閱JetBrains PhpStorm方法存根的GitHub回購:https://github.com/JetBrains/phpstorm-stubs – DanFromGermany

回答

2

有沒有辦法,PhpStorm將讀取你的二進制.so文件(.dll在Windows上),並從那裏提取的PHP接口(以及由「PHP界面」我的意思是在運行時類/函數/常量/ etc中擴展提供)。

因此,你需要做的一樣的所有其他二進制PHP擴展會做(例如Phalcon's DevTools) - 使存根文件。

存根文件是你的類/方法/功能/等有限的PHP版本(可選)全文檔,但空的機構。在任何標準的PHP類可以按Ctrl +點擊(例如,MySQL),看看自己它是如何在做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開發人員所做的那樣)非常有意義。