JetBrains如果将变量包含在条件语句中,则它不会将变量检测为类的对象。例如,这是我的文件:
的config.php:
if( in_array('DATABASE', $include) ){
require_once( 'database/Database.class.php' );
$db = new Database();
}
的index.php
$include = ['DATABASE'];
require_once('config.php');
$db... //<< Here $db is undefined
如果我在config.php
文件中包含数据库类而不检查条件,那么它就可以了,我可以使用$db
作为Database类的实例。
我还尝试在检查器中取消选中Ignore 'include' and 'require' statements.
,但它只是忽略未定义的变量,$db
没有被检测为对象,所以我无法看到它的方法和属性。
我该如何解决这个问题?
答案 0 :(得分:1)
不确定$db
究竟是什么因为是在if语句中定义的。如果DATABASE在$ include数组中,那么直到运行时才会知道,所以$ db可能会也可能根本没有定义。
您可以使用PHPDoc注释来改变它,而不是提示类型。在index.php的顶部添加如下内容:
<?
/**
* @var Database $dba
*/
答案 1 :(得分:0)
在声明$ include = ['DATABASE']后,您确定包含config.php; ?好像你没有。