Các biến thành viên lớp được gọi là thuộc tính. Chúng có thể được đề cập đến việc sử dụng các thuật ngữ khác như các trường, nhưng với mục đích của các thuộc tính tham chiếu này sẽ được sử dụng. Chúng được xác định bằng cách sử dụng ít nhất một công cụ sửa đổi [như khả năng hiển thị, từ khóa tĩnh hoặc, kể từ Php 8.1.0, đọc một cách tùy chọn [ngoại trừ các thuộc tính readonly
], như của Php 7.4, theo sau là một khai báo loại, tiếp theo một tuyên bố biến bình thường. Tuyên bố này có thể bao gồm khởi tạo, nhưng khởi tạo này phải là một giá trị không đổi.
Ghi chú::
Một cách đã lỗi thời để khai báo các thuộc tính lớp, là bằng cách sử dụng từ khóa
var
thay vì công cụ sửa đổi.
Lưu ý: Một thuộc tính được khai báo mà không có công cụ sửa đổi khả năng hiển thị sẽ được khai báo là
public
.: A property declared without a Visibility modifier will be declared aspublic
.
Trong các phương thức lớp các thuộc tính không tĩnh có thể được truy cập bằng cách sử dụng ->
[toán tử đối tượng]: $ this-> thuộc tính [trong đó property
là tên của thuộc tính]. Các thuộc tính tĩnh được truy cập bằng cách sử dụng ::
[Double Colon]: self :: $ Property. Xem từ khóa tĩnh để biết thêm thông tin về sự khác biệt giữa các thuộc tính tĩnh và không tĩnh.
$ Biến giả $ này có sẵn bên trong bất kỳ phương thức lớp nào khi phương thức đó được gọi từ trong bối cảnh đối tượng. $ Đây là giá trị của đối tượng gọi.
Ví dụ số 1 khai báo tài sản
Ghi chú::
Một cách đã lỗi thời để khai báo các thuộc tính lớp, là bằng cách sử dụng từ khóa
var
thay vì công cụ sửa đổi.
Lưu ý: Một thuộc tính được khai báo mà không có công cụ sửa đổi khả năng hiển thị sẽ được khai báo là public
.
Trong các phương thức lớp các thuộc tính không tĩnh có thể được truy cập bằng cách sử dụng ->
[toán tử đối tượng]: $ this-> thuộc tính [trong đó property
là tên của thuộc tính]. Các thuộc tính tĩnh được truy cập bằng cách sử dụng ::
[Double Colon]: self :: $ Property. Xem từ khóa tĩnh để biết thêm thông tin về sự khác biệt giữa các thuộc tính tĩnh và không tĩnh.callable.
$ Biến giả $ này có sẵn bên trong bất kỳ phương thức lớp nào khi phương thức đó được gọi từ trong bối cảnh đối tượng. $ Đây là giá trị của đối tượng gọi.
readonly
0
readonly
1
readonly
2Ví dụ số 1 khai báo tài sản
Có nhiều chức năng khác nhau để xử lý các lớp và đối tượng. Xem tham chiếu chức năng lớp/đối tượng.Error is thrown.
Loại khai báo
readonly
3
readonly
1
readonly
5Ví dụ số 1 khai báo tài sản
string[8] "triangle" int[3] string[6] "circle" Fatal error: Uncaught Error: Typed property Shape::$numberOfSides must not be accessed before initialization
Có nhiều chức năng khác nhau để xử lý các lớp và đối tượng. Xem tham chiếu chức năng lớp/đối tượng.
Loại khai báo
Kể từ Php 7.4.0, các định nghĩa thuộc tính có thể bao gồm các khai báo loại, ngoại trừ có thể gọi được.
readonly
7
readonly
8
readonly
9Ghi chú::
Ví dụ #2 Ví dụ về các thuộc tính gõ
Ghi chú::
Ví dụ trên sẽ xuất ra:
Các thuộc tính đã gõ phải được khởi tạo trước khi truy cập, nếu không một lỗi được ném.Error exception.
Ví dụ #3 Truy cập thuộc tính
var
0
Ghi chú::
Tính chất đọc
var
1
Ghi chú::
Kể từ Php 8.1.0, một thuộc tính có thể được khai báo với công cụ sửa đổi
readonly
, ngăn chặn sửa đổi thuộc tính sau khi khởi tạo.unset[] once they are initialized. However, it is possible to unset a readonly property prior to initialization, from the scope where the property has been declared.
Ví dụ #4 Ví dụ về các thuộc tính readonlyError exception:
var
2
Công cụ sửa đổi readonly chỉ có thể được áp dụng cho các thuộc tính được đánh máy. Một thuộc tính đọc không có ràng buộc loại có thể được tạo bằng cách sử dụng loại hỗn hợp.
var
3
Thuộc tính tĩnh không được hỗ trợ.
Một thuộc tính readonly chỉ có thể được khởi tạo một lần và chỉ từ phạm vi mà nó đã được khai báo. Bất kỳ nhiệm vụ hoặc sửa đổi nào khác của thuộc tính sẽ dẫn đến một ngoại lệ lỗi.object, PHP will automatically create a corresponding property. This dynamically created property will only be available on this class instance.
Ví dụ #5 Khởi tạo bất hợp pháp của các thuộc tính readonly
Việc chỉ định một giá trị mặc định rõ ràng trên các thuộc tính readOnly không được phép, bởi vì một thuộc tính đọc có giá trị mặc định về cơ bản giống như một hằng số, và do đó không đặc biệt hữu ích.
Các thuộc tính readonly không thể không được đặt [] một khi chúng được khởi tạo. Tuy nhiên, có thể giải phóng một thuộc tính sẵn sàng trước khi khởi tạo, từ phạm vi mà tài sản đã được khai báo. ¶
Sửa đổi không nhất thiết là các bài tập đơn giản, tất cả các điều sau đây cũng sẽ dẫn đến một ngoại lệ lỗi:
var
5
var
6
var
7
var
8
var
9
public
0
public
1
var
6
public
3
public
4
var
9
public
6
public
7Tuy nhiên, các thuộc tính dễ đọc không loại trừ tính đột biến nội thất. Các đối tượng [hoặc tài nguyên] được lưu trữ trong các thuộc tính readonly vẫn có thể được sửa đổi trong nội bộ: ¶
Tính chất động
public
8
public
9
public
7Các thuộc tính readonly không thể không được đặt [] một khi chúng được khởi tạo. Tuy nhiên, có thể giải phóng một thuộc tính sẵn sàng trước khi khởi tạo, từ phạm vi mà tài sản đã được khai báo. ¶
Sửa đổi không nhất thiết là các bài tập đơn giản, tất cả các điều sau đây cũng sẽ dẫn đến một ngoại lệ lỗi:
->
1
->
2
->
3
->
4Tuy nhiên, các thuộc tính dễ đọc không loại trừ tính đột biến nội thất. Các đối tượng [hoặc tài nguyên] được lưu trữ trong các thuộc tính readonly vẫn có thể được sửa đổi trong nội bộ: ¶
Tính chất động
->
5
->
6
->
7
->
8
->
9Nếu cố gắng gán cho một thuộc tính không tồn tại trên một đối tượng, PHP sẽ tự động tạo một thuộc tính tương ứng. Thuộc tính được tạo động này sẽ chỉ có sẵn trên thể hiện lớp này. ¶
Cảnh báo
property
0