2010-02-03 6 views
18

Nehmen Sie unter Berücksichtigung der folgenden PHP 5 Klasse dokumentieren:Wie Klasse Eigenschaften in PHP 5 mit phpDocumentor

class SomeClass 
{ 
    //I want to document this property... 
    private $foo; 


    function __construct() 
    { 

    } 

    public function SetFoo($value) 
    { 
     $this->foo = $value; 
    } 

    public function GetFoo() 
    { 
     return $this->foo; 
    } 
} 

Wie in phpDocumentor werde ich die $ foo Eigenschaft dokumentieren? Ich bin nicht einmal sicher, dass es dokumentiert werden muss, aber ich würde gerne wissen, ob wenn ...

Ich weiß, wie SetFoo() und GetFoo() zu dokumentieren, ich bin nur nicht sicher über die Privateigentum (variabel?).

Danke!

Antwort

31
/** 
* This is what the variable does. The var line contains the type stored in this variable. 
* @var string 
*/ 
private $foo; 
15

würde ich in der Regel zumindest verwenden, um den @var Tag, den Typen des Variable, um anzuzeigen, dies ist.

Zum Beispiel:

/** 
* Some blah blah about what this is useful for 
* @var MyClass $foo 
*/ 


Dies ist genau das, was von Zend Framework erledigt ist, zum Beispiel; siehe Zend_Layout(Zitat):

class Zend_Layout 
{ 
    /** 
    * Placeholder container for layout variables 
    * @var Zend_View_Helper_Placeholder_Container 
    */ 
    protected $_container; 

    /** 
    * Key used to store content from 'default' named response segment 
    * @var string 
    */ 
    protected $_contentKey = 'content'; 


Hinweis: Die @access Tag war nützlich, mit PHP 4 (wenn es keine waren public/protected/private), aber ich es nie benutzen, wenn ich Code dokumentieren geschrieben in PHP 5: Der Code, der die Sichtbarkeitsschlüsselwörter verwendet, ist selbstdokumentierend.

+0

@var MyClass $ foo sollte eigentlich @property sein MyClass $ foo, basierend darauf, wie Sie es verwendet haben (und in diesem Fall schlägt @property eine magische var vor). Das von Ihnen gepostete Zend-Beispiel zeigt die korrekte Verwendung von @var –

+0

Danke für die Details zu @access. Genau das, was ich gesucht habe, als ich diese Seite gefunden habe. – Matt

+0

+1 - aber sollte der Name der Variablen im Kommentar in Ihrem ersten Beispiel sein? –

0

Im Fall, dass Sie eine __get verwenden und __set magische Methoden können Sie @property

/** 
    * Description for the class 
    * @property type $foo Description for foo 
    * @property type $foo Description for bar 
    */ 
class SomeClass 
{ 
    private $foo; 
    protected $bar; 

    public function __get(){ 
     ... 
    } 

    public function __set(){ 
     ... 
    } 
} 

Verbindungen mit mehr Informationen verwenden:

+3

'@ property' wird verwendet, um magische Eigenschaften zu kennzeichnen. Um Klassenmitglieder zu markieren, verwenden Sie '@ var'. Siehe http://manual.phpdoc.org/HTMLSmartyConverter/PHP/phpDocumentor/tutorial_tags.property.pkg.html – DanFromGermany

+0

In Ihrem Beispiel sind '$ foo' und' $ bar' keine magischen Eigenschaften, weil Sie sie deklariert haben. – DanFromGermany

1
/** 
* docstring 
*/ 
private $foo; 

Wichtiger Hinweis: Es sollte zwei Sternchen sein. Nicht eins.