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 as 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.
$ 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
<?php
class SimpleClass
{
public $var1 = 'hello ' . 'world';
public $var2 = <<<EOD
hello world
EOD;
public $var3 = 1+2;
// invalid property declarations:
public $var4 = self::myStaticMethod();
public $var5 = $myVar;// valid property declarations:
public $var6 = myConstant;
public $var7 = [true, false];
public
$var8 = <<<'EOD'hello world
EOD;// Without visibility modifier:
static $var9;
readonly int $var10;
}
?>
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.
readonly0
readonly1
readonly2Ví 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
readonly3
readonly1
readonly5Ví 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.
readonly7
readonly8
readonly9Ghi 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
var0
Ghi chú::
Tính chất đọc
var1
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:
var2
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.
var3
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.
var4
var5
var6
var7
var8
var9
public0
var5
public2
public3
var8
public5
public6Ví 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.
public7
public8
public6Thuộ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.
->0
->1
->2
->3Ví 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.
->4
->5
->6
->7
->8Cá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:
->9