PHPDoc

2013-06-12 15 views
6

içinde yerel bir değişkenin özelliklerini bildirme Bazı özelliklere sahip bir stdClass örneğim var. PHPDoc'ta bu özellikleri bildirmenin doğru yolu hangisidir? Bunu denedim, ama buna değil Tamam görünüyor:PHPDoc

/** 
    * @var $requestParams stdClass 
    * @property string cancelUrl 
    */ 
    $requestParams = $someObj->getSomething(); 
+0

Bunun mümkün olduğunu düşünmüyorum. – Gordon

cevap

1
new stdClass() sorun herhangi dökumanter tüm bulmak için tüm kodu ile ayrıştırmak için zor olurdu böylece anında özelliklerini ilan edebilir olmasıdır

bunu yapmak

/** 
* ... doc block here 
*/ 
class SomeObj { 
    /** 
    * ... doc block here 
    * @return stdClass 
    */ 
    function getSomething() { 
     return new stdClass(); 
    } 
} 

:

Yani yerine bunu: yeni mülkler eklemek yerlerde bunun yerine bunun ve belge için o sınıfı bir sınıf oluşturmak için gereken

senin kod örneği göz önüne alındığında
/** 
* ... doc block here 
*/ 
class SomeObj { 
    /** 
    * ... doc block here 
    * @return Something 
    */ 
    function getSomething() { 
     return new Something(); 
    } 
} 

/** 
* ... doc block here 
*/ 
class Something { 
    /** 
    * @var string 
    */ 
    public $cancelUrl; 
} 
2

, yapabileceğiniz en iyi $requestParams@var yoluyla tip stdClass ait olduğunu belirtmek olduğunu. @property kullanımınız sizin için bir şey yapmayacaktır, çünkü bu etiket yalnızca bir sınıfta var olan sihirli özellikler için özel olarak tanımlanmıştır ... bu nedenle,yalnızca sınıf doküman bloğunda olduğunda okunacak ve yorumlanacaktır.

Tek isteğiniz, $ requestParams'ın stdClass'ın bir örneği olduğunu göstermekse, @var ihtiyacınız olan şeydir. Bununla birlikte, $ requestParams-> cancelUrl öğesinin bilinen bir dizge özelliğinden başka bir tanımlı dizgeye geçmeden, $ requestParams öğesinin yerel bir değişken olduğu şekilde başka bir yerel değişken kullanmanız gerektiğini belirtmek isterseniz:

doğrudan soruya cevap ötesinde
/** @var stdClass $requestParams */ 
$requestParams = $someObj->getSomething(); 

/** @var string $cancelUrl */ 
$cancelUrl = $requestParams->cancelUrl; 

- bu $ requestParams eleman tanımlanmış belirli özelliklere sahip olduğunu okuyucuların göstermek sizin için gerçekten önemli olup olmadığını, bunun için resmi bir sınıf yazmayı tercih ederim. Bu sınıftaki uygulama, elbette, değerleri tutmak için hala dahili bir stdClass olabilir.