Cách thiết lập phạm vi truy cập các thuộc tính, phương thức của lớp trong PHP
- Trong quá trình khai báo một lớp, chúng ta cần phải xác định rõ “phạm vi” có thể truy cập vào các thuộc tính & các phương thức của lớp.
- Dưới đây là ba từ khóa dùng để xác định phạm vi truy cập vào các thuộc tính & phương thức của lớp.
- public (mặc định) - Thuộc tính & phương thức có thể được truy cập ở bất cứ đâu.
- protected - Thuộc tính & phương thức chỉ có thể được truy cập bên trong lớp, hoặc bên trong các lớp được kế thừa từ lớp này.
- private - Thuộc tính & phương thức chỉ có thể được truy cập bên trong lớp.
- Trong lớp Laptop bên dưới, ba thuộc tính $model, $color, $price có phạm vi truy cập khác nhau. Trong đó, thuộc tính $model có thể được truy cập ở bất cứ đâu (bởi vì nó là public), còn thuộc tính $color & $price thì không thể truy cập ở bên ngoài lớp, nếu các bạn cố truy cập chúng ở bên ngoài lớp thì sẽ xảy ra lỗi.
<?php
class Laptop{
public $model;
protected $color;
private $price;
}
$asus = new Laptop();
$asus->model = "ASUS FX503"; //OK
$asus->color = "Gray"; //ERROR
$asus->price = "25.000.000"; //ERROR
?>
- Một ví dụ khác.
- Phương thức set_name() không được xác định phạm vi, cho nên mặc định là public, nó có thể được truy cập ở bất cứ đâu.
- Phương thức set_color() được thiết lập protected, cho nên nó chỉ có thể được truy cập bên trong lớp Laptop, hoặc bên trong những lớp kế thừa từ lớp Laptop.
- Phương thức set_price() được thiết lập private, cho nên nó chỉ có thể được truy cập bên trong lớp Laptop.
<?php
class Laptop{
public $model;
public $color;
public $price;
function set_model($input_model){ //phương thức không xác định phạm vi, mặc định là “public”
$this->model = $input_model;
}
protected function set_color($input_color){
$this->color = $input_color;
}
private function set_price($input_price){
$this->price = $input_price;
}
}
$asus = new Laptop();
$asus->set_model("ASUS FX503"); //OK
$asus->set_color("Gray"); //ERROR
$asus->set_price("25.000.000"); //ERROR
?>