Thuộc tính đối tượng truy cập PHP động
Chúng tôi, các Lập trình viên PHP, thường viết một lớp với các thuộc tính, thuộc tính getter/setter được xác định trước bắt buộc và sử dụng chúng bên trong ứng dụng của chúng tôi. Thế là đủ tuyệt rồi. Tuy nhiên, điều gì sẽ xảy ra khi có dữ liệu không ổn định/thường xuyên thiếu một số thuộc tính hoặc đôi khi có thể có thêm một số thuộc tính mà chúng tôi không biết/yêu cầu. Nếu bạn đã làm việc với nhiều API khác nhau như dịch vụ, bạn có thể quen với những tình huống như vậy. Chà, bạn có thể nghĩ đối với những tình huống như vậy, dữ liệu PHP JSON có thể là một lựa chọn tốt. Bây giờ còn sự kết hợp của cả hai thì sao, điều đó có tuyệt vời không, trong đó một số thuộc tính ổn định được xác định nghiêm ngặt và vẫn cho phép chứa cả dữ liệu động khác? . Ngồi yên 😉 Show
Lớp PHP cơ bản với định nghĩa thuộc tínhTrước tiên hãy viết một lớp đơn giản với một vài thuộc tính/thuộc tính được xác định trước
Khả năng truy cập tài sảnvì các khả năng này là một số loại chung chung, hãy bắt đầu chúng trong một lớp riêng biệt mà 'MyObj' của chúng tôi sẽ mở rộng để kế thừa các tính năng đó. Bây giờ, một đối tượng PHP tiêu chuẩn có thuộc tính như quyền truy cập theo mặc định. Điều đó có nghĩa là, bạn có thể sử dụng nó như dưới đây
Chà, mặc dù khả năng sử dụng ở trên là rất khả thi, nhưng dữ liệu không nằm trong tay bạn và bạn sẽ không thể đồng bộ hóa dữ liệu này với các tính năng trợ năng khác mà chúng tôi sẽ thảo luận tiếp theo. Vì vậy, để tạo điều kiện thuận lợi cho điều đó, chúng tôi sẽ sử dụng cấu trúc dữ liệu nội bộ để biểu diễn đối tượng sẽ được chia sẻ theo cách nhất quán bởi tất cả các tính năng truy cập đối tượng động PHP khác mà chúng tôi sẽ thảo luận hôm nay bây giờ, trong khi một thuộc tính như quyền truy cập/chỉ định diễn ra trên đối tượng của chúng ta, chúng ta có thể nắm bắt những thuộc tính đó bằng cách sử dụng một vài phương thức ma thuật như bên dưới
để xác minh xem dữ liệu có được đặt thành biến $data đúng cách hay không, bạn có thể thử triển khai phương pháp đơn giản
bây giờ làm kiểm tra
Thêm khả năng truy cập giống như mảngĐể thêm mảng như khả năng truy cập, chúng tôi sẽ phải triển khai giao diện ArrayAccess do PHP cung cấp và viết tất cả các phương thức một cách có ý nghĩa với biến '$ data' hiện có của chúng tôi. Đây là cách chúng ta có thể làm điều đó
Bây giờ chúng ta sẽ có thể sử dụng đối tượng của mình như bên dưới
Truy cập mảng đa chiềuVâng, vì bây giờ chúng ta có thể sử dụng đối tượng của mình như một mảng, nhưng liệu chúng ta có thể truy cập nó như một mảng nhiều chiều không? Hãy thử xem
Ồ. chúng tôi thất bại. ed Và một lỗi như sau sẽ xảy ra ________số 8_______Hmm, có vẻ như công việc của bạn vẫn chưa hoàn thành. Chúng ta phải xử lý nó cho tình huống như vậy. May mắn thay, nó không khó lắm. Vì vậy, chúng ta hãy làm điều đó
Ngoài ra, nếu chúng ta muốn truyền mảng nhiều chiều trong hàm tạo, thì chúng cũng cần được xử lý như sau 0 Khả năng lặp lại của đối tượng động PHP của chúng tôiBây giờ có thể coi đối tượng của chúng ta là mảng, bạn có thể nghĩ rằng, có thể chúng ta cũng có thể lặp lại nó giống như mảng mà không gặp vấn đề gì. Sai rồi. Chúng tôi sẽ phải thêm khả năng này bên ngoài. Đầu tiên, triển khai giao diện 'Iterator' của PHP. Sau đó viết các phương thức như dưới đây 1 Truy cập dưới dạng mảng thuần túyChà, vì vậy, bây giờ chúng ta có đối tượng của mình để xử lý như một đối tượng động PHP thuần túy mà chúng ta có thể sử dụng như thuộc tính, như mảng và cũng có thể lặp qua đối tượng. Tuy nhiên, mặc dù hầu hết công việc của chúng tôi đã hoàn thành, nhưng trong trường hợp bạn thực sự muốn nó là một mảng thuần túy, thì nó sẽ không cung cấp cho bạn điều đó theo mặc định. Đừng lo, một chức năng đơn giản cũng có thể giúp chúng ta đạt được điều đó 2 Định nghĩa lớp Final sẽ giống như bên dưới 3 Vì vậy, cuối cùng chúng tôi cũng có được đối tượng động PHP của mình với nhiều tính linh hoạt có thể dễ dàng trong các tình huống khác nhau như mẫu, sử dụng API của bên thứ ba, v.v. Mã hóa vui vẻ 🙂 Làm cách nào để truy cập dữ liệu từ đối tượng trong PHP?Để truy cập thuộc tính của một đối tượng, PHP sử dụng toán tử -> , vì vậy $my_address->street có nghĩa là "thuộc tính đường phố của .
Thuộc tính động là gì?Thuộc tính động là bất cứ thứ gì có thể đã được phát hiện trong trường hợp chưa được ghi lại trong cấu trúc của trường hợp thông qua thuộc tính trường hợp hiện có. Capturing this information with a dynamic property highlights the unique aspects of an investigation.
Làm cách nào để lấy khóa đối tượng trong PHP?Để chỉ hiển thị các khóa từ một đối tượng, hãy sử dụng array_keys() trong PHP. |