Hướng dẫn php annotation array of objects - mảng chú thích php của các đối tượng
Tôi thích đọc và viết mã sạch - như được nêu trong "Mã sạch" của Robert C. Martin. Khi làm theo sự tín nhiệm của anh ấy, bạn không nên yêu cầu nhà phát triển (với tư cách là người dùng API của bạn) để biết cấu trúc (nội bộ) của mảng của bạn. Show Người dùng API có thể hỏi: đó có phải là một mảng chỉ có một chiều không? Là các đối tượng trải rộng trên tất cả các cấp của một mảng đa chiều? Có bao nhiêu vòng lặp lồng nhau (foreach, v.v.) Tôi cần truy cập tất cả các đối tượng? Loại đối tượng nào được "lưu trữ" trong mảng đó? Khi bạn đã phác thảo, bạn muốn sử dụng mảng đó (có chứa các đối tượng) như một mảng một chiều. Như Nishi đã phác thảo, bạn có thể sử dụng:
cho điều đó. Nhưng một lần nữa: Hãy lưu ý - đây không phải là một ký hiệu tài liệu tiêu chuẩn. Ký hiệu này được giới thiệu bởi một số nhà sản xuất IDE. Được rồi, được rồi, với tư cách là một nhà phát triển, bạn biết rằng "[]" được gắn với một mảng trong PHP. Nhưng "cái gì đó []" có nghĩa là gì trong bối cảnh PHP bình thường? "[]" có nghĩa là: Tạo phần tử mới trong "cái gì đó". Yếu tố mới có thể là tất cả. Nhưng những gì bạn muốn thể hiện là: mảng các đối tượng có cùng loại và loại chính xác của nó. Như bạn có thể thấy, nhà sản xuất IDE giới thiệu một bối cảnh mới. Một bối cảnh mới bạn phải học. Một bối cảnh mới, các nhà phát triển PHP khác phải học (để hiểu các tài liệu của bạn). Phong cách xấu (!). Bởi vì mảng của bạn có một chiều mà bạn có thể muốn gọi đó là "mảng các đối tượng" là "danh sách". Xin lưu ý rằng "danh sách" có một ý nghĩa rất đặc biệt trong các ngôn ngữ lập trình khác. Ví dụ, sẽ tốt hơn nếu gọi nó là "bộ sưu tập". Hãy nhớ rằng: bạn sử dụng ngôn ngữ lập trình cho phép bạn tất cả các tùy chọn của OOP. Sử dụng một lớp thay vì một mảng và làm cho lớp học của bạn có thể vượt qua như một mảng. Ví dụ.:
Hoặc nếu bạn muốn lưu trữ các đối tượng bên trong ở các cấp độ khác nhau trong cấu trúc mảng/đối tượng đa chiều:
Giải pháp này thay thế cho mảng của bạn bằng một đối tượng loại "OrderCollection", nhưng không cho phép hoàn thành mã trong IDE của bạn cho đến nay. Được chứ. Bước tiếp theo: Thực hiện các phương thức được giới thiệu bởi giao diện với docblocks - đặc biệt:
Đừng quên sử dụng loại gợi ý loại cho:
Giải pháp này dừng lại giới thiệu rất nhiều:
Tất cả các tệp mã của bạn (ví dụ: trong vòng lặp), như Zahymaka đã xác nhận với câu trả lời của cô ấy/anh ấy. Người dùng API của bạn không bị buộc phải giới thiệu DocBlocks đó, phải hoàn thành mã. Để có @return chỉ ở một nơi làm giảm sự dư thừa (@var) càng nhiều càng tốt. Rắc "docblocks với @var" sẽ làm cho mã của bạn dễ đọc nhất. Finaly bạn đã hoàn thành. Có vẻ khó để đạt được? Có vẻ như lấy một chiếc búa tạ để bẻ khóa một hạt? Không thực sự, vì bạn đã quen thuộc với các giao diện đó và với mã sạch. Hãy nhớ rằng: Mã nguồn của bạn được viết một lần / đọc nhiều. Nếu mã hoàn thành IDE của bạn không hoạt động với phương pháp này, hãy chuyển sang một phương pháp tốt hơn (ví dụ: Intellij Idea, PhpStorm, NetBeans) hoặc gửi yêu cầu tính năng về trình theo dõi vấn đề của nhà sản xuất IDE của bạn. Cảm ơn Christian Weiss (từ Đức) vì đã trở thành huấn luyện viên của tôi và đã dạy tôi một thứ tuyệt vời như vậy. Tái bút: Gặp tôi và anh ấy trên Xing. Trong PHP, loại List:
Mảng liên kết:
Cấu trúc tạm thời:
PHP xử lý tất cả các mảng này giống nhau, về cơ bản (mặc dù có một số tối ưu hóa dưới mui xe cho trường hợp đầu tiên). Thi thiên có một vài cách khác nhau để thể hiện các mảng trong hệ thống loại của nó: Mảng chungThi thiên sử dụng cú pháp mượn từ Java cho phép bạn biểu thị các loại của cả khóa và giá trị:
Bạn cũng có thể chỉ định rằng một mảng không trống với loại đặc biệt 4.Cú pháp PHPDOCPHPDOC cho phép bạn chỉ định loại giá trị mà một mảng chung giữ với chú thích: 0Trong Thi thiên, chú thích này tương đương với 5.Mảng chung bao gồm cả hai mảng và danh sách kết hợp. Danh sách(Thi thiên 3.6+) Thi thiên hỗ trợ một loại 6 đại diện cho các mảng liên tục, số nguyên như 7.Một cách thường xuyên để tạo một danh sách là với ký hiệu 8.Các mảng này sẽ trả về đúng với ____ 29 (PHP 8.1+) và đại diện cho một tỷ lệ phần trăm lớn của tất cả việc sử dụng mảng trong các ứng dụng PHP. Một loại 6 có dạng 1, trong đó 2 là bất kỳ loại liên minh được phép nào được Thi thiên.
Các loại danh sách hiển thị giá trị của chúng theo một số cách: 1Hình dạng mảngThi thiên hỗ trợ một định dạng đặc biệt cho các mảng trong đó các độ lệch chính được biết đến: hình dạng mảng, còn được gọi là "mảng giống như đối tượng". Đưa ra một mảng 2Thi thiên sẽ nhập nó trong nội bộ như: 3Bạn có thể chỉ định các loại trong định dạng đó, ví dụ: 4Các phím tùy chọn có thể được ký hiệu bằng một dấu vết 7, ví dụ: 5Mẹo: Nếu bạn thấy mình sao chép cùng một hình dạng mảng phức tạp nhiều lần để tránh các vấn đề 8, thay vào đó hãy thử sử dụng các bí danh loại.Xác thực hình dạng mảngSử dụng Valinor ở chế độ nghiêm ngặt để dễ dàng khẳng định các hình dạng mảng khi chạy bằng cú pháp hình dạng mảng thánh vịnh (thay vì xác nhận thủ công các phím với ISSET): 6Valinor cung cấp cả thời gian chạy và các xác nhận thánh vịnh tĩnh với hỗ trợ cú pháp thánh vịnh đầy đủ và nhiều tính năng khác, hãy xem tài liệu Valinor để biết thêm thông tin! Danh sách hình dạngBắt đầu trong Thi thiên 5, Thi -thiên cũng hỗ trợ một định dạng đặc biệt cho các mảng danh sách nơi biết các độ lệch chính. Đưa ra một mảng danh sách 7Thi thiên sẽ nhập nó trong nội bộ như: 8Bạn có thể chỉ định các loại trong định dạng đó, ví dụ: 9Các phím tùy chọn có thể được ký hiệu bằng một dấu vết 7, ví dụ: 0Mẹo: Nếu bạn thấy mình sao chép cùng một hình dạng mảng phức tạp nhiều lần để tránh các vấn đề 8, thay vào đó hãy thử sử dụng các bí danh loại.Xác thực hình dạng mảngSử dụng Valinor ở chế độ nghiêm ngặt để dễ dàng khẳng định các hình dạng mảng khi chạy bằng cú pháp hình dạng mảng thánh vịnh (thay vì xác nhận thủ công các phím với ISSET): Valinor cung cấp cả thời gian chạy và các xác nhận thánh vịnh tĩnh với hỗ trợ cú pháp thánh vịnh đầy đủ và nhiều tính năng khác, hãy xem tài liệu Valinor để biết thêm thông tin! 1Danh sách hình dạngBắt đầu trong Thi thiên 5, Thi -thiên cũng hỗ trợ một định dạng đặc biệt cho các mảng danh sách nơi biết các độ lệch chính. 2non-empty-arrayĐưa ra một mảng danh sách |