PHP OOP - Công cụ sửa đổi truy cập
PHP - Công cụ sửa đổi truy cập
Các thuộc tính và phương thức có thể có các công cụ sửa đổi quyền truy cập để kiểm soát nơi chúng có thể được truy cập.
Có ba công cụ sửa đổi truy cập:
-
public
- thuộc tính hoặc phương thức có thể được truy cập từ mọi nơi. Đây là mặc định -
protected
- thuộc tính hoặc phương thức có thể được truy cập trong lớp và bởi các lớp dẫn xuất từ lớp đó -
private
- thuộc tính hoặc phương thức CHỈ có thể được truy cập trong lớp
Trong ví dụ sau, chúng tôi đã thêm ba công cụ sửa đổi truy cập khác nhau vào ba thuộc tính (tên, màu sắc và trọng lượng). Ở đây, nếu bạn cố gắng đặt thuộc tính name thì nó sẽ hoạt động tốt (vì thuộc tính name là công khai và có thể được truy cập từ mọi nơi). Tuy nhiên, nếu bạn cố gắng đặt thuộc tính màu hoặc trọng lượng thì sẽ dẫn đến lỗi nghiêm trọng (vì thuộc tính màu và trọng lượng được bảo vệ và riêng tư):
Ví dụ
<?php
class Fruit {
public
$name;
protected $color;
private $weight;
}
$mango = new Fruit();
$mango->name = 'Mango'; // OK
$mango->color = 'Yellow'; // ERROR
$mango->weight = '300'; // ERROR
?>
Trong ví dụ tiếp theo, chúng tôi đã thêm công cụ sửa đổi quyền truy cập vào hai hàm. Ở đây, nếu bạn cố gọi hàm set_color() hoặc hàm set_weight() thì sẽ gây ra lỗi nghiêm trọng (vì hai hàm này được coi là được bảo vệ và riêng tư), ngay cả khi tất cả các thuộc tính đều ở chế độ công khai:
Ví dụ
<?php
class Fruit {
public
$name;
public $color;
public $weight;
function set_name($n) {
// a public function (default)
$this->name = $n;
}
protected function set_color($n) {
// a protected function
$this->color = $n;
}
private function set_weight($n) {
// a private function
$this->weight = $n;
}
}
$mango = new Fruit();
$mango->set_name('Mango'); // OK
$mango->set_color('Yellow'); // ERROR
$mango->set_weight('300'); // ERROR
?>