Trong bài này, chúng ta sẽ tìm hiểu về cách sử dụng access modifier trong PHP. Để học tốt bài này, các bạn cần đọc lại bài Cài đặt môi trường lập trình Web PHP với XAMPP để biết cách chạy ứng dụng web PHP với XAMPP.
Những thuộc tính (properties) và phương thức (methods) của lớp (class) có thể có access modifiers để xác định phạm vi mà chúng được truy cập. Có 3 access modifiers trong PHP là public, protected, private.
– Những thuộc tính và phương thức có chỉ định truy cập là public thì sẽ được truy cập ở bất cứ đâu trong chương trình. Chỉ định truy cập public là mặc định.
– Những thuộc tính và phương thức có chỉ định truy cập là protected thì chỉ được truy cập bên trong lớp (class) chứa nó và lớp dẫn xuất (derived class) của lớp đó.
– Những thuộc tính và phương thức có chỉ định truy cập là private thì chỉ được truy cập bên trong lớp (class) chứa nó.
1. Ví dụ các thuộc tính public, protected, private trong class
<?php
class Cat {
public $name;
protected $color;
private $weight;
}
$tom = new Cat();
$tom->name = 'Tom'; // OK
$tom->color = 'grey and white'; // ERROR
$tom->weight = '3.5'; // ERROR
?>
2. Ví dụ các phương thức public, protected, private trong class
<?php
class Cat {
public $name;
public $color;
public $weight;
// a public function (default)
function set_name($name) {
$this->name = $name;
}
// a protected function
protected function set_color($color) {
$this->color = $color;
}
// a private function
private function set_weight($weight) {
$this->weight = $weight;
}
}
$tom = new Cat();
$tom->set_name('Tome'); // OK
$tom->set_color('grey and white'); // ERROR
$tom->set_weight('3.5'); // ERROR
?>
3. Ví dụ thuộc tính protected trong lớp dẫn xuất
<?php
class Cat {
public $name;
public $color;
protected $weight;
public function __construct($name, $color, $weight) {
$this->name = $name;
$this->color = $color;
$this->weight = $weight;
}
}
class Kitty extends Cat {
public function message() {
echo "Hello, my name is " . $this->name . ", has " . $this->color . " color";
// using protected $weight in derived class
echo "<br> And my weight is " . $this->weight . " kilograms";
}
}
$kitty = new Kitty("Kitty", "pink and white", "3.5");
$kitty->message();
?>
Trong ví dụ trên, thuộc tính $weight
có chỉ định truy cập là protected và có thể sử dụng trong lớp dẫn xuất. Tương tự, các phương thức có chỉ định truy cập là protected cũng có thể sử dụng trong lớp dẫn xuất.