Autocomplete 未知属性的自动完成

Autocomplete 未知属性的自动完成,autocomplete,phpstorm,Autocomplete,Phpstorm,是否可以通过PhpStorm自动完成未知属性? 以下是示例代码: class Fields { public function __construct($data) { foreach ($data AS $d) { $propName=$d['id']; $this->$propName=$d['value']; } } } $data=[ ['id'=>'myId', 'va

是否可以通过PhpStorm自动完成未知属性? 以下是示例代码:

class Fields {
    public function __construct($data) {
        foreach ($data AS $d) {
            $propName=$d['id'];
            $this->$propName=$d['value'];
        }
    }
}

$data=[
    ['id'=>'myId', 'value'=>'Name'],
    ['id'=>'second', 'value'=>'Second]
];

$fields=new Fields($data);

$fields->second;//comes from autocpmplete
我希望自动完成'second'或'myId'属性。可能吗

是否可以通过PhpStorm自动完成未知属性

是和否——这取决于你打算如何使用它



如果您希望它是绝对动态的(例如,相同的
字段
类,但在一个文件中
$Fields
变量(该
字段
类的实例)将有一组字段,而在另一个完全不同的字段中),则答案是否


否则,可以通过该类的PHPDoc注释中的标签()声明不存在的属性

/**
*@property string$abc可选说明
*/
类字段{
...
现在,
Fields
的每个实例都将在完成时提供
abc
属性

记住这一点,您可以将所有实际的代码/逻辑放在
字段中,然后在子类中声明特定字段:

/**
*@property字符串$first
*/
类FirstClassFields扩展字段{
...
}
/**
*@property字符串$second
*/
类SecondClassFields扩展字段{
...
}
是否可以通过PhpStorm自动完成未知属性

是和否——这取决于你打算如何使用它



如果您希望它是绝对动态的(例如,相同的
字段
类,但在一个文件中
$Fields
变量(该
字段
类的实例)将有一组字段,而在另一个完全不同的字段中),则答案是否


否则,可以通过该类的PHPDoc注释中的标签()声明不存在的属性

/**
*@property string$abc可选说明
*/
类字段{
...
现在,
Fields
的每个实例都将在完成时提供
abc
属性

记住这一点,您可以将所有实际的代码/逻辑放在
字段中,然后在子类中声明特定字段:

/**
*@property字符串$first
*/
类FirstClassFields扩展字段{
...
}
/**
*@property字符串$second
*/
类SecondClassFields扩展字段{
...
}

如果您希望它是绝对动态的(例如,相同的
字段
类,但在一个文件中,
$Fields
变量将有一组字段,而在另一个文件中则完全不同)——则否(除非您每次都有单独的类,请参见下一步)。除此之外,还可以通过该类的PHPDoc注释中的
@property
标记()声明不存在的属性,例如
/**@property string$abc*/class字段{…
--现在,
字段的每个实例
都将有
abc
属性处于完成状态感谢您的响应-我尝试了@var-它不起作用。现在它工作得很好。如果您总是以相同的方式定义数组并将其传递给对象,那么答案是肯定的。您可以为完成创建自定义插件。如果您想让它绝对d动态(例如,相同的
字段
类,但在一个文件中,
$Fields
变量将有一组字段,而在另一个文件中则完全不同)——然后是否(除非每次都有单独的类——请参见下一步)。除此之外,还可以通过
@property
标记()在该类的PHPDoc注释中,例如
/**@属性字符串$abc*/class字段{…
--现在,
字段的每个实例
都将在completion中具有
abc
属性感谢您的响应-我尝试了@var-它不起作用。现在它工作得很好。如果您总是以相同的方式定义数组并将其传递给对象,那么答案是肯定的。您可以为完成创建自定义插件。