2013-06-11 34 views
7

Nói rằng tôi có một chức năng như thế này:Làm cách nào để ghi lại một mảng của [loại]?

function theFunction() { 
    $arr = array(); 
    for ($i=0;$i<10;$i++) { 
     $arr[] = new theObject($i); 
    } 
    return $arr; 
} 

tôi cần phải ghi lại kiểu trả về của hàm. Tôi có thể tất nhiên chỉ cần sử dụng array, nhưng điều đó không cung cấp tất cả các thông tin có thể được cung cấp, và không nói cho nhà phát triển nhiều về bản chất thực sự của hàm.

Làm cách nào để ghi lại loại "mảng của [loại]" trong PHPDoc?

+0

Bạn đã thử '@var ObjectType [] '? – Robert

+0

@Robert no, nhưng tìm kiếm điều đó đã cho kết quả! :) http://www.phpdoc.org/docs/latest/for-users/types.html#arrays – Keelan

+0

Xem https://github.com/phpDocumentor/phpDocumentor2/issues/650 –

Trả lời

9

Từ các tài liệu của phpDocumentor

Giá trị đại diện theo loại có thể là một mảng. Các loại phải được xác định sau khi định dạng của một trong các tùy chọn sau:

  1. không xác định, không có định nghĩa về các nội dung của mảng đại diện được đưa ra. Ví dụ: @return array

  2. được chỉ định có chứa một loại duy nhất, định nghĩa Loại thông báo cho người đọc loại của từng phần tử mảng. Chỉ một loại được mong đợi là phần tử cho một mảng nhất định.

    Ví dụ: @return int[]

    Xin lưu ý rằng hỗn hợp cũng là một loại duy nhất và với từ khóa này có thể chỉ ra rằng mỗi phần tử mảng chứa bất kỳ loại càng tốt.

  3. được chỉ định chứa nhiều loại, định nghĩa Loại thông báo cho người đọc loại của mỗi phần tử mảng. Mỗi phần tử có thể thuộc bất kỳ loại nào. Ví dụ: @return (int|string)[]

    Note
    nhiều IDE có lẽ không hỗ trợ ký hiệu này được nêu ra.

+0

Đối với nhiều loại, PHPStorm cũng có vẻ ổn với 'int [] | string []' nhưng tôi không chắc chắn rằng nó nên được đề nghị trên '(int | string) []'. – gapple

+1

Tôi không nghĩ int [] | string [] có nghĩa là giống với (int | string) []. Đầu tiên đại diện cho một mảng các phần tử int hoặc một mảng các phần tử chuỗi. Sau đó đại diện cho một mảng có thể có các yếu tố của cả hai loại hỗn hợp. –

1

Nếu tôi nhớ đúng bạn cung cấp loại trả về và mô tả, bạn có thể không đưa nó vào mô tả không?

/** 
* blah 
* @return array array of types 
*/ 
+0

Đó là những gì tôi đang làm bây giờ , nhưng nó sẽ được neater để sử dụng cách tiêu chuẩn nếu nó tồn tại :) – Keelan

+0

@CamilStaps Có tôi cho rằng nó sẽ :) – Dale

0

Trong PHPDoc bạn có thể làm như sau cho loại thành viên mảng gián tiếp:

@var array<\My\Folder\ClassName> 
Các vấn đề liên quan