2010-02-03 15 views
18

Đi vào xem xét PHP 5 lớp sau:Làm thế nào để tài liệu thuộc tính của lớp trong PHP 5 với 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; 
    } 
} 

thế nào trong phpDocumentor tôi sẽ ghi lại $ tài sản foo? Tôi thậm chí không chắc chắn nó cần phải được tài liệu nhưng tôi muốn biết làm thế nào nếu cần ...

Tôi biết làm thế nào để tài liệu SetFoo() và GetFoo(), tôi chỉ không chắc chắn về tài sản riêng (biến?).

Cảm ơn!

Trả lời

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

Tôi thường sử dụng ít nhất thẻ @var để chỉ loại biến này.

Ví dụ:

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


này được chính xác những gì đang được thực hiện bởi Zend Framework, ví dụ; thấy Zend_Layout(trích dẫn):

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'; 


Lưu ý: thẻ @access là hữu ích với PHP 4 (khi không có public/protected/private), nhưng tôi không bao giờ sử dụng nó khi tôi tài liệu mã được viết bằng PHP 5: mã, sử dụng từ khóa hiển thị là tự ghi lại tài liệu.

+0

@var MyClass $ foo thực sự phải là @property MyClass $ foo, dựa trên cách bạn sử dụng nó (và trong trường hợp đó, @property gợi ý một var ma thuật). Ví dụ Zend mà bạn đã đăng không hiển thị đúng cách sử dụng @var –

+0

Cảm ơn bạn đã biết chi tiết về @access. Thats exctly những gì tôi đang tìm kiếm khi tôi tìm thấy trang này. – Matt

+0

+1 - nhưng tên của biến có nằm trong nhận xét trong ví dụ đầu tiên của bạn không? –

0

Trong trường hợp bạn sử dụng một __get và phương pháp kỳ diệu __set bạn có thể sử dụng @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(){ 
     ... 
    } 
} 

Liên kết với biết thêm:

+3

'@ property' được sử dụng để gắn thẻ các thuộc tính ma thuật. Để đánh dấu các thành viên lớp, sử dụng '@ var'. Xem http://manual.phpdoc.org/HTMLSmartyConverter/PHP/phpDocumentor/tutorial_tags.property.pkg.html – DanFromGermany

+0

Trong ví dụ của bạn, '$ foo' và' $ bar' không có thuộc tính ma thuật, bởi vì bạn đã khai báo chúng. – DanFromGermany

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

Lưu ý quan trọng: cần có hai dấu hoa thị. Không một.

Các vấn đề liên quan