Hướng dẫn readonly php - chỉ đọc php
Php 8.1 mang lại hỗ trợ cho các thuộc tính lớp chỉ đọc. Một thuộc tính lớp được tuyên bố chỉ đọc chỉ được phép khởi tạo một lần và không được phép thay đổi thêm đối với tài sản. Show Thuộc tính lớp chỉ đọc được khai báo với từ khóa 2* trong một thuộc tính được đánh máy.
Các giá trị thuộc tính chỉ đọc chỉ có thể được đặt từ chính lớp, từ hàm tạo hoặc phương thức khác. Sau khi được đặt, không có sửa đổi nào được phép cho thuộc tính đó, ngay cả từ trong lớp.
$user = new User(42); $user->uid = 56;2 dưới dạng tên hàmTừ Php 8.1 trở lên, 2 là từ khóa PHP dành riêng. Tuy nhiên, nó rõ ràng cho phép khai báo các chức năng với tên 2 để phù hợp với các ứng dụng PHP hiện có khai báo các hàm 2 của riêng chúng, chẳng hạn như WordPress.Trình xây dựng $user = new User(42); $user->uid = 56;2 thuộc tínhCác thuộc tính của hàm tạo, được giới thiệu trong PHP 8.0 cũng hỗ trợ cờ 2 mới trong hàm tạo.
Tuyên bố ở trên tương đương với:
Khởi tạo tài sảnMột thuộc tính được khai báo 2 có thể được khởi tạo từ bất cứ nơi nào bên trong lớp. Nó có ý nghĩa hơn để khởi tạo các thuộc tính chỉ đọc từ hàm tạo, nhưng nó không bắt buộc phải làm như vậy.
Đoạn trích ở trên là hợp lệ, vì thuộc tính 2 1 chỉ được viết một lần, từ phương thức 2. Tuy nhiên, một cuộc gọi thứ hai đến hàm 2 đã gây ra lỗi, bởi vì nó liên quan đến việc ghi đè thuộc tính 1.
Không được phép khởi tạo một thuộc tính 2 bên ngoài phạm vi của lớp: không được phép:outside the scope of the class is not allowed:
0Thực thi chỉ đọcPHP chủ động từ chối sửa đổi thuộc tính 2. Điều này bao gồm việc đặt trực tiếp một giá trị, tăng cường nó, tài liệu tham khảo và các hoạt động mảng.
Không cho phép danh sách các thay đổi không khởi động sau đây: 2 3 4Tháo thuộc tính $user = new User(42); $user->uid = 56;2Hơn nữa, việc không giải quyết được một thuộc tính 2 đã được khởi tạo cũng không được phép: 5 6Giới hạn 2 Thuộc tính có thể giảm đáng kể mã nồi hơi thường được sử dụng để giới hạn quyền truy cập ghi vào các thuộc tính của lớp, giờ đây có thể được đơn giản hóa bằng thuộc tính 0. Tuy nhiên, cờ 2 có thể không phù hợp lý tưởng trong các trường hợp sử dụng nhất định.Chỉ được hỗ trợ trên các thuộc tính gõCác thuộc tính chỉ đọc chỉ được hỗ trợ trên thuộc tính gõ. Điều này là do các thuộc tính được khai báo mà không có loại được ngầm 2 cho đến khi một giá trị được đặt và không tương thích với hạn chế chỉ đọc. Các thuộc tính được đánh máy được "không chính thức hóa" cho đến khi một giá trị được đặt.Cố gắng khai báo thuộc tính 2 mà không có loại dẫn đến lỗi: 7 8Tính đột biếnMột thuộc tính 2 không cung cấp tính bất biến cho các đối tượng. Ví dụ: nếu thuộc tính 2 giữ một đối tượng, chính đối tượng đó có thể thay đổi: 9Trong đoạn trích ở trên, lớp 6 được lưu trữ một thuộc tính 2 8. Bản thân đối tượng 9 có thể thay đổi và thuộc tính 2 không ngăn chặn các sửa đổi cho chính đối tượng.Nếu cần có tính bất biến, hãy đảm bảo 1 đối tượng trước khi gán: 0Tác động tương thích ngược 2 là một từ khóa dành riêng trong Php 8.1. Bất kỳ lớp hiện có hoặc các ký hiệu khác sử dụng tên 2 (trường hợp không nhạy cảm) sẽ dẫn đến lỗi cú pháp trong Php 8.1.Không thể chuyển chức năng 2 cho các phiên bản PHP cũ hơn. Tuy nhiên, các chú thích 5 / 6 được hiểu bởi các máy phân tích tĩnh như thánh vịnh. 1Thực hiện thảo luận RFC |