2016-07-29 37 views
3

的情況下,我知道我可以使用PhpStorm註釋是這樣的:PhpStorm屬性標註爲

/** 
* Class Model 
* @property string name 
*/ 
class Model {}; 

$modelInstance = new Model(); 
$modelInstance->name; 

當我鍵入$modelInstance-> PhpStorm將自動完成我提供「名」。

是否有可能爲類的實例創建自定義屬性註釋?

/** 
* Class Model 
* @property string name 
*/ 
class Model {}; 

/** 
* @var Model $modelInstance @property text 
*/ 
$modelInstance = new Model(); 
$modelInstance->text; //PhpStorm does not know about this property 

我想有物業「文本」在PhpStorm自動完成,但僅適用於$modelInstance。不適用於類模型的每個實例。

+2

都能跟得上。 '@ property'只能在PHPDoc塊中爲**類聲明**。如果你需要類似的東西,那麼我可以建議的最好的方法是聲明自定義的類,以擴展你的'Model'。 – LazyOne

+0

我想在Dibi從數據庫中選擇數據時使用DibiRow對象。所以我可以告訴phpstorm我選擇了哪些列 - 在我的DibiRow實例中有哪些屬性可用。 – Michal

+2

那麼......這個只適用於PhpStorm ...所以你可以試試看看它會怎樣爲你做:1)創建你自己的類MyClass擴展DibiRow並在那裏聲明這樣的定製屬性; 2)當你需要使用它時,使用'/ ** @var MyClass $ modelInstance * /' - 這個PHPDoc註釋將僅被IDE使用; 3)將文件放置在項目中任何位置的自定義類(例如'.phpstorm'文件夾等) - 它將僅供IDE使用。 – LazyOne

回答

3

這是我基於LazyOne的意見的解決方案。

/** 
* 
* Class ZboziDibiRow 
* @property int id 
* @property string name 
* @property string store 
* @property string uri 
* @property string manufacturer 
* @property string description 
* @property int price 
* @property string ean 
* @property string code 
* @property int available_in 
* @property string zbozi_category_id 
* @property string category_recursive_id 
*/ 
class ZboziDibiRow extends DibiRow 
{ 
} 

現在,當我有類似:

/** 
* @var ZboziDibiRow[] 
*/ 
public $products; 

我將提供自動爲:

$zbozi = new Zbozi(); 
foreach ($zbozi->products as $key => $product) { 
    $product-> ....