Làm cách nào để chỉ đọc trong PHP?

Tóm lược. trong hướng dẫn này, bạn sẽ tìm hiểu về các thuộc tính chỉ đọc PHP chỉ có thể được khởi tạo một lần

Giới thiệu về thuộc tính chỉ đọc PHP

PHP8. 1 đã giới thiệu các thuộc tính của lớp chỉ đọc. Các thuộc tính chỉ đọc cho phép bạn xác định các thuộc tính chỉ có thể được khởi tạo một lần trong lớp

Để xác định thuộc tính chỉ đọc, bạn sử dụng từ khóa

class User { public readonly string $username; public function __construct(string $username) { $this->username = $username; } }

Code language: PHP (php)
1 trong thuộc tính đã nhập

class MyClass { private readonly type propertyName; }

Code language: PHP (php)

Hoặc

class MyClass { public function __construct(private readonly type propertyName) { } }

Code language: PHP (php)

Ví dụ: phần sau đây định nghĩa một lớp

class User { public readonly string $username; public function __construct(string $username) { $this->username = $username; } }

Code language: PHP (php)
2 với

class User { public readonly string $username; public function __construct(string $username) { $this->username = $username; } }

Code language: PHP (php)
3 là thuộc tính chỉ đọc

class User { public readonly string $username; public function __construct(string $username) { $this->username = $username; } }

Code language: PHP (php)

Trong ví dụ này, bạn chỉ có thể khởi tạo

class User { public readonly string $username; public function __construct(string $username) { $this->username = $username; } }

Code language: PHP (php)
3 một lần khi tạo một đối tượng

class User { public readonly string $username; public function __construct(string $username) { $this->username = $username; } }

Code language: PHP (php)
2 mới như thế này

________số 8

Nếu bạn cố gắng thay đổi thuộc tính

class User { public readonly string $username; public function __construct(string $username) { $this->username = $username; } }

Code language: PHP (php)
3 sau đó, bạn sẽ gặp lỗi

class MyClass { private readonly type propertyName; }

Code language: PHP (php)
0

Lỗi

class MyClass { private readonly type propertyName; }

Code language: PHP (php)
1

PHP chỉ cho phép bạn khởi tạo thuộc tính

class User { public readonly string $username; public function __construct(string $username) { $this->username = $username; } }

Code language: PHP (php)
3 từ bên trong chính lớp đó, từ hàm tạo hoặc phương thức

Ví dụ sau cũng gây ra lỗi vì nó cố khởi tạo thuộc tính

class User { public readonly string $username; public function __construct(string $username) { $this->username = $username; } }

Code language: PHP (php)
3 từ bên ngoài lớp Người dùng

class MyClass { private readonly type propertyName; }

Code language: PHP (php)
4

Lỗi

class MyClass { private readonly type propertyName; }

Code language: PHP (php)
5

Để khắc phục, bạn có thể thêm một constructor như ví dụ trên. Ngoài ra, bạn có thể định nghĩa một phương thức để khởi tạo thuộc tính chỉ đọc từ bên trong lớp như sau

class MyClass { private readonly type propertyName; }

Code language: PHP (php)
6

Lưu ý rằng nếu bạn gọi phương thức

class User { public readonly string $username; public function __construct(string $username) { $this->username = $username; } }

Code language: PHP (php)
9 lần thứ hai, bạn sẽ gặp lỗi vì nó sửa đổi thành thuộc tính tên người dùng đã được khởi tạo

class MyClass { private readonly type propertyName; }

Code language: PHP (php)
8

Lỗi

class MyClass { public function __construct(private readonly type propertyName) { } }

Code language: PHP (php)
0

Thuộc tính chỉ đọc & đã nhập

Thuộc tính không có loại có giá trị mặc định là

$user = new User('joe','secure');

Code language: PHP (php)
0. Ví dụ

class MyClass { public function __construct(private readonly type propertyName) { } }

Code language: PHP (php)
1

đầu ra

class MyClass { public function __construct(private readonly type propertyName) { } }

Code language: PHP (php)
2

Trong ví dụ này, giá trị của thuộc tính

class User { public readonly string $username; public function __construct(string $username) { $this->username = $username; } }

Code language: PHP (php)
3 là

$user = new User('joe','secure');

Code language: PHP (php)
0 theo mặc định cho đến khi bạn gán giá trị cho thuộc tính đó

Do đó, PHP chỉ hỗ trợ chỉ đọc trên thuộc tính đã nhập. Nếu bạn cố gắng sử dụng từ khóa

class User { public readonly string $username; public function __construct(string $username) { $this->username = $username; } }

Code language: PHP (php)
1 với thuộc tính không có loại, bạn sẽ gặp lỗi. Ví dụ

class MyClass { public function __construct(private readonly type propertyName) { } }

Code language: PHP (php)
3

Lỗi

class MyClass { public function __construct(private readonly type propertyName) { } }

Code language: PHP (php)
4

khả năng biến đổi

Thuộc tính chỉ đọc không đảm bảo tính bất biến của đối tượng. Hãy xem ví dụ sau

Đầu tiên, định nghĩa một lớp

$user = new User('joe','secure');

Code language: PHP (php)
4 có hai thuộc tính

$user = new User('joe','secure');

Code language: PHP (php)
5 và

$user = new User('joe','secure');

Code language: PHP (php)
6

class MyClass { public function __construct(private readonly type propertyName) { } }

Code language: PHP (php)
5

Thứ hai, định nghĩa lớp

class User { public readonly string $username; public function __construct(string $username) { $this->username = $username; } }

Code language: PHP (php)
2 có thuộc tính có kiểu là một đối tượng của lớp

$user = new User('joe','secure');

Code language: PHP (php)
4

class MyClass { public function __construct(private readonly type propertyName) { } }

Code language: PHP (php)
6

Thứ ba, tạo một đối tượng

class User { public readonly string $username; public function __construct(string $username) { $this->username = $username; } }

Code language: PHP (php)
2 và gán một cấu hình cho nó

class MyClass { public function __construct(private readonly type propertyName) { } }

Code language: PHP (php)
7

class MyClass { private readonly type propertyName; }

Code language: PHP (php)
00 là thuộc tính chỉ đọc của lớp

class User { public readonly string $username; public function __construct(string $username) { $this->username = $username; } }

Code language: PHP (php)
2. Và bạn có thể khởi tạo nó một lần. Tuy nhiên, bạn có thể thay đổi thuộc tính của thuộc tính chỉ đọc như thế này

Làm cách nào để tạo trường văn bản chỉ đọc trong PHP?

Bạn có thể làm điều đó với. ? php echo form_input(array('name'=>'price','value'=>$item['price'],'size . This will be xhtml compatible.

Làm cách nào bạn có thể đặt trường chỉ đọc?

Thuộc tính chỉ đọc của phần tử được sử dụng để xác định rằng trường đầu vào là chỉ đọc. Nếu một đầu vào là chỉ đọc, thì nội dung của nó không thể thay đổi nhưng có thể được sao chép và đánh dấu. Nó là một thuộc tính boolean. Ví dụ. Ví dụ này sử dụng thuộc tính chỉ đọc

Cú pháp chính xác để làm cho phần tử chỉ đọc trong biểu mẫu là gì?

Thuộc tính chỉ đọc của phần tử trong HTML được sử dụng để xác định rằng trường đầu vào là chỉ đọc.

Các thuộc tính của chỉ đọc là gì?

Chỉ đọc nghĩa là chúng ta có thể truy cập giá trị của thuộc tính nhưng không thể gán giá trị cho thuộc tính đó . Khi một thuộc tính không có bộ truy cập đã đặt thì đó là thuộc tính chỉ đọc. Ví dụ: trong lớp người, chúng tôi có thuộc tính Giới tính chỉ có bộ truy cập get và không có bộ truy cập set.