2015-05-19 201 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中的代码之前运行此脚本(以更新生成的文件)。