Hướng dẫn phpdoc property - thuộc tính phpdoc

@Property, @Property-Read, @Property-Write

Thẻ @property được sử dụng để khai báo các thuộc tính "ma thuật" nào được hỗ trợ.

Cú pháp

@property[<-read|-write>] [Type] [name] []

Sự mô tả

Thẻ @property được sử dụng khi class hoặc trait thực hiện các phương thức __get () và/hoặc __set () "ma thuật" để giải quyết các thuộc tính không theo nghĩa chữ tại thời gian chạy.

Các biến thể @property-read@property-write có thể được sử dụng để chỉ ra các thuộc tính "ma thuật" chỉ có thể được đọc hoặc viết.

Ví dụ: thẻ @property-read có thể được sử dụng khi một lớp chứa phương thức ma thuật __get () cho phép các tên cụ thể, trong khi các tên đó không được đề cập trong phương thức ma thuật __set ().

Tài sản được hỗ trợ thông quaTag để sử dụng
`` __get () `` và `` __set () ````@Property``
`` __get () `` chỉ``@Property-read``
`` __set () `` chỉ``@Property-write``

Các thẻ @property, @property-read@property-write chỉ có thể được sử dụng trong một PHPDOC được liên kết với một lớp hoặc đặc điểm.

Hiệu ứng trong PhpDocomeror

Các yếu tố cấu trúc của loại loại hoặc đặc điểm được gắn thẻ với thẻ @property, @property-read hoặc @property-write sẽ hiển thị một thuộc tính bổ sung trong danh sách tài sản của họ phù hợp với dữ liệu được cung cấp với thẻ này.

Ví dụ

class Parent
{
    public function __get()
    {
        <...>
    }

    public function __set()
    {
        <...>
    }
}

/**
 * @property       string $myProperty
 * @property-read  string $myReadOnlyProperty
 * @property-write string $myWriteOnlyProperty
 */
class Child extends Parent
{
    <...>
}

Trong ví dụ cụ thể sau đây, một lớp

class Parent
{
    public function __get()
    {
        <...>
    }

    public function __set()
    {
        <...>
    }
}

/**
 * @property       string $myProperty
 * @property-read  string $myReadOnlyProperty
 * @property-write string $myWriteOnlyProperty
 */
class Child extends Parent
{
    <...>
}

6 thực hiện phương thức Magic
class Parent
{
    public function __get()
    {
        <...>
    }

    public function __set()
    {
        <...>
    }
}

/**
 * @property       string $myProperty
 * @property-read  string $myReadOnlyProperty
 * @property-write string $myWriteOnlyProperty
 */
class Child extends Parent
{
    <...>
}

7, để thực hiện một thuộc tính "ma thuật", chỉ đọc
class Parent
{
    public function __get()
    {
        <...>
    }

    public function __set()
    {
        <...>
    }
}

/**
 * @property       string $myProperty
 * @property-read  string $myReadOnlyProperty
 * @property-write string $myWriteOnlyProperty
 */
class Child extends Parent
{
    <...>
}

8:

/**
 * @property-read string $full_name
 */
class User
{
    /**
     * @var string
     */
    public $first_name;

    /**
     * @var string
     */
    public $last_name;

    public function __get($name)
    {
        if ($name === "full_name") {
            return "{$this->first_name} {$this->last_name}";
        }
    }
}

    Tài sản "ma thuật" của một lớp.

    Bản quyền 2007, Chuck Burgess

    (PhpDocum số 1.4+)

    @propertydatatypedescription datatype description

    Sự mô tả

    @Property hiển thị một biến thuộc tính "ma thuật" được tìm thấy bên trong lớp.

    Kiểu dữ liệu phải là loại PHP hợp lệ hoặc "hỗn hợp." PhpDocumentor sẽ hiển thị mô tả tùy chọn chưa được sửa đổi và mặc định là "hỗn hợp" nếu không có kiểu dữ liệu.

    Tài sản được cho là có sẵn cho cả hoạt động đọc và viết. Nếu thuộc tính chỉ đọc, bạn nên sử dụng thẻ @property-read thay thế. Nếu thuộc tính chỉ ghi, hãy sử dụng @Property-Write.

    Thí dụ

    1. /**

    2.  * show off @property, @property-read, @property-write

    3.  *

    4.  * @property mixed $regular regular read/write property@property mixed $regular regular read/write property

    5.  * @property-read int $foo the foo prop@property-read int $foo the foo prop

    6.  * @property-write string $bar the bar prop@property-write string $bar the bar prop

    7.  */

    8. class MagicianMagician

    9. {

    10. private $_thingy;$_thingy;

    11. private $_bar;$_bar;

    12. function __get($var)__get($var)

    13. {

    14. switch ($var) {($var{

    15. case 'foo' :'foo' :

    16. return 45;45;

    17. trường hợp & nbsp; 'thường xuyên' & nbsp ;:'regular' :

    18. return $this->_thingy;$this->_thingy;

    19. }}

    20. function __set($var, $val)__set($var$val)

    21. {

    22. switch ($var) {($var{

    23. case 'bar' :'bar' :

    24. $this->_bar = $val;->_bar $val;

    25. break;;

    26. case 'regular' :'regular' :

    27. $this->_thingy = $val;->_thingy $val;

    28. }}}

    29. }

    Sử dụng các thẻ "ma thuật" này sẽ dẫn đến thông tin thẻ được liệt kê trong danh sách thẻ "Infomational" cho chính lớp. Nó không tạo ra các thực thể "thuộc tính" hoặc "biến" thực tế trong tài liệu.

    Trong ví dụ trên, khi sử dụng PhpDocum số với HTML: Smarty: Hands Converter và "--ParsePrivate On", bạn sẽ thấy "$ _thingy" và "$ _bar" được hiển thị trong danh sách "Tóm tắt thuộc tính" của lớp bạn Các biến, nhưng bạn sẽ không thấy "$ thường xuyên", "$ foo" hoặc "$ Bar" ở đó, bởi vì ba phần sau không được khai báo rõ ràng các biến trong mã của bạn. Bạn sẽ thấy "$ thường xuyên", "$ foo" và "$ Bar" trong danh sách "thẻ API" của cấp độ, nhờ các thẻ "@Property" của bạn trong tài liệu cấp độ lớp.