Hướng dẫn phpdoc associative array - mảng kết hợp phpdoc

Tôi sử dụng một số mảng liên kết trong ứng dụng PHP của mình và tôi đang sử dụng tài liệu PHP để nhận xét các nguồn của mình. Tôi chưa bao giờ thực sự chỉ định nhận xét cho các mảng trong một mảng, nhưng bây giờ tôi cần phải làm điều đó và không biết làm thế nào.

$array = array('id' => 'test', 'class' => 'tester', 'options' => array('option1' => 1, 'option2' => 2))

Làm cách nào để nhận xét mảng này theo cách chính xác cho các bình luận @var@param? Tôi có thể làm điều này như thế này, nhưng tôi không biết nếu điều này đúng:

@param string $array['id']
@param string $array['class']
@param int $array['options']['option1']

Nhưng làm thế nào để làm điều này cho phần @var?

Hướng dẫn phpdoc associative array - mảng kết hợp phpdoc

Tôi thích ý tưởng @struct, nhưng tôi không chắc chắn về phần "Docblock" nội tuyến ".

Tôi đã mất một phút để giải nén ý nghĩa của nó. Quan trọng hơn mặc dù, bạn sẽ làm gì nếu các phím mảng của bạn chứa khoảng trắng?

Điều đó nói rằng, tôi không chắc chắn những gì nên đề xuất như một sự thay thế, thiếu một trình phân tích cú pháp PHP đầy đủ đang ở trong đó, với "Docblock nội tuyến" cho mỗi cặp khóa/giá trị.

Tôi sẽ ghi lại đề xuất đầy đủ trong tài liệu PSR; Có lẽ điều đó sẽ làm rõ ý định

(Tôi đã không tìm thấy một cuộc thảo luận gần đây hơn hoặc gần đây hơn, vì vậy tôi đang đăng ở đây ..)

Cái này thì sao?

/**
 * @param {
 *   type: string
 *   query: SelectInterface
 *   options: {
 *     color: string = 'blue'
 *   }
 * }[] $items
 */
function foo($items) {
  foreach ($items as $item) {
    $item['query']->execute()->fetchAll();
  }
}

Tôi thấy điều này đã được thêm vào bản đồ đường bất kỳ tình trạng nào về mức độ gần gũi của nó để được thực hiện?

Hiện tại, chúng tôi đang đánh giá lại các ưu tiên của chúng tôi sau khi gián đoạn. Điều này có nghĩa là tại thời điểm này tôi không thể trả lời câu hỏi

Tình trạng về vấn đề này tại thời điểm này là gì?

Thipages, Robertmain, Lgelfan, Le-JV, Jdrydn, Oshdev, Tpoisseau, Uwekeim, Teolaz, Razielin và 26 người khác đã phản ứng với ngón tay cái lên biểu tượng cảm xúc

Tôi cảm thấy rằng đây không chỉ là về các khóa mảng, mà là về khả năng ghi lại cấu trúc dữ liệu. Giống như một lược đồ của các loại, nhưng cơ bản hơn. Và không cần phải ghép định nghĩa này với một số lớp cụ thể (vì các giao diện không thể khai báo các thuộc tính).

Đối với các mảng kết hợp, điều này hoạt động rất tốt.

$demo = [
	[
        "percentage" => 18.4
        "status" => "booked"
        "active" => true
        "id" => "3c79fd92-c717-11e8-a8d5-f2801f1b9fd1"
    ],
	[
        "percentage" => 30.8
        "status" => "booking_requested"
        "active" => true
        "id" => "a5589b3c-b0ff-469d-a5ee-67dfd6f90088"
    ],
];

Tôi sẽ sử dụng cái này cho mảng ở trên: @param mixed[string][] $demo

Tôi muốn thay thế [int] bằng [] vì chỉ mục là int theo mặc định và nó hoạt động tốt hơn với phpstorm!

Nhưng điều này cũng có thể được trình bày là @param mixed[string][int] $demo

@param string $array['id']
@param string $array['class']
@param int $array['options']['option1']
0 không tốt lắm vì vậy hãy cân nhắc sử dụng đối tượng nếu có thể và làm cho nó
@param string $array['id']
@param string $array['class']
@param int $array['options']['option1']
1
@param string $array['id']
@param string $array['class']
@param int $array['options']['option1']
1

Hướng dẫn phpdoc associative array - mảng kết hợp phpdoc

Nguồn hình ảnh.

Điều đó không nói gì về những gì các chìa khóa được phép là, @mahmoudz. Nếu mỗi mục của mảng đầu tiên chứa cùng một khóa (một số tùy chọn), làm thế nào chúng ta có thể ghi lại những gì chúng là?

Tôi đã thêm điều này vào dự án danh sách mong muốn của chúng tôi; Vấn đề này chưa được lên kế hoạch cho một bản phát hành nhưng đó là điều chúng tôi rất muốn có. Tuy nhiên, vấn đề này là trong danh sách mong muốn có nghĩa là chúng ta không biết khi nào điều này sẽ được chọn hoặc phát hành

Chỉ cần sử dụng Thi thiên cho bây giờ. Nhưng tôi rất thích mảng "hình" là một công cụ tài liệu tiêu chuẩn, được hỗ trợ bởi PHPDOC, thánh vịnh, PHPC và tất cả mọi thứ khác, tất nhiên.