2015-05-19 197 views
0

有沒有辦法讓PhpStorm智能感知提取這些動態定義的常量?根據下面的代碼,PhpStorm會給出「未定義的常量SAMPLE_CONSTANT_THAT_WAS_DYNAMICALLY_DEFINED」錯誤消息。PHPStorm智能感知無法識別類中定義的常量

class ExampleConfiguration 
{ 
    private $configurationMapping; 
    ... 
    public function DefineConfigConstants() 
    { 
     foreach ($this->configurationMapping as $key => $value) 
     define($key, $value); 
    } 
} 

class ExampleClass 
{ 
    public function Test() 
    { 
     print SAMPLE_CONSTANT_THAT_WAS_DYNAMICALLY_DEFINED; 
    } 
} 

可以在這裏跟蹤此問題:https://youtrack.jetbrains.com/issue/WI-11390,我正在尋找的是對變通辦法的建議。

+0

因此...在一些單獨的文件中以正常的方式定義它們,並將其放置在項目的任何位置 - 運行時不會被實際代碼使用 - 只能通過IDE進行靜態分析。 – LazyOne

+0

不能那樣做。常數名稱和值可由系統中的用戶定義,因此存儲在數據庫中。 – Revent

+0

那麼如果PhpStorm對此抱怨,你從哪裏得到了'SAMPLE_CONSTANT_THAT_WAS_DYNAMICALLY_DEFINED'? – LazyOne

回答

0

IDE需要知道這些常量以免抱怨它們。這意味着它們必須以「正常」的方式來定義(實際值並不重要,只要它們不用於include/require語句中的文件名/路徑)。

建議:創造這樣myconstants.php文件,他們將在一個正常的方式來定義寫自定義腳本(因爲用戶在數據庫中定義和存儲所有這些常量,你必須從自己的數據庫獲取它們)..和在使用PhpStorm中的代碼之前運行此腳本(以更新生成的文件)。