Hướng dẫn dùng access modifiers trong PHP

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

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

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

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 "
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.

  • Cài đặt Python và môi trường lập trình với Visual Studio Code
  • Câu lệnh switch case và toán tử điều kiện trong Java
  • Bộ nhớ biến và quản lý bộ nhớ trong Python
  • Trích xuất chuỗi với hàm substr() trong PHP
  • Truyền đối tượng (object) vào hàm (function) trong C++

PHP programming web programming

Hướng dẫn dùng access modifiers trong PHP

Đã đăng vào thg 11 20, 2020 2:38 SA 1 phút đọc

1) Khái quát nội dung

Access ModifiersClassSub ClassWorld
Public Yes Yes Yes
Protected Yes Yes No
Private Yes No No
  • 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

2) Ví dụ cụ thể

  • Public:
      
		class Fruit {
			public $name;
			public $color;

			function setName($name) {
				$this->name = $name;
			}

			function setColor($color) {
				$this->color = $color;
			}

			function getName() {
				return $this->name;
			}

			function getColor() {
				return $this->color;
			}
		}

		class A extends Fruit {
			function call() {
				return $this->name;
			}
		}

		$fruit = new Fruit();
		$fruit->setName('a');
		echo $fruit->name; // OK
        echo $fruit->getName(); // OK 
        $a = new A();
        $a->setName('demo');
        echo $a->call(); // OK
	?>

Quyền truy cập là public, chúng ta có thể gọi ở bất kỳ vị trí nào:

  • Bên ngoài gọi được bên trong Class mà không bị lỗi: echo $fruit->name;
  • Tương tự Class con có thể gọi được và bên trong Class

  • Protected:
      
		class Fruit {
			protected $name;
			public $color;

			function setName($name) {
				$this->name = $name;
			}

			function setColor($color) {
				$this->color = $color;
			}

			function getName() {
				return $this->name;
			}

			function getColor() {
				return $this->color;
			}
		}

		class A extends Fruit {
			function call() {
				return $this->name;
			}
		}

		$fruit = new Fruit();
		$fruit->setName('a');
		echo $fruit->name; // Error
        echo $fruit->getName(); // OK
        $a = new A();
        $a->setName('demo');
        echo $a->call(); // OK
	?>

Khi quyền truy cập là protected:

  • Trong Class và Class con, ta có thể gọi và sử dụng
  • Ở ngoài Class, khi gọi đến và hiển thị ra màn hình. Sẽ báo lỗi do quyền truy cập thiết lập không đúng.

  • Private:
      
		class Fruit {
			private $name;
			public $color;

			function setName($name) {
				$this->name = $name;
			}

			function setColor($color) {
				$this->color = $color;
			}

			function getName() {
				return $this->name;
			}

			function getColor() {
				return $this->color;
			}
		}

		class A extends Fruit {
			function call() {
				return $this->name;
			}
		}

		$fruit = new Fruit();
		$fruit->setName('a');
		echo $fruit->name; // Error
        echo $fruit->getName(); // OK
        $a = new A();
        $a->setName('demo');
        echo $a->call(); // Error
	?>

Quyền truy cập private:

  • Class con và gọi từ bên ngoài sẽ báo lỗi do quyền truy cập không khả thi
  • Từ trong Class, ta vẫn gọi được bình thường. Quyền truy cập là nội bộ, ở trong hàm có thể gọi được

3) Tài liệu liên hệ

https://www.w3schools.com/php/php_oop_access_modifiers.asp

All rights reserved