Mục lục bài viết

Trong bài này, chúng ta sẽ tìm hiểu về cách sử dụng access modifier trong PHP. Chưa biết chạy PHP? Xem lại bài Cài đặt môi trường lập trình Web PHP với XAMPP.

Access modifier xác định phạm vi truy cập của thuộc tính (properties) và phương thức (methods) trong lớp (class). Có 3 access modifiers trong PHP là public, protected, private.

– public: truy cập được ở mọi nơi trong chương trình. public là mặc định.

– protected: chỉ truy cập được trong lớp chứa nó và lớp dẫn xuất (derived class).

– private: chỉ truy cập được trong lớp 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();
?>

Thuộc tính $weight là protected nên dùng được trong lớp dẫn xuất. Phương thức protected cũng vậy.

Tác giả

HV Lee

500+ bài viết về lập trình, phần cứng, mạng máy tính và công nghệ. Chia sẻ kiến thức từ những gì đã học, đã dạy và đã trải nghiệm — để người học CNTT hiểu sâu hơn và làm được nhiều hơn.

Gợi ý tiếp theo

Tính kế thừa (inheritance) trong PHP

Học tiếp