PHP: $this và self - Không khó để phân biệt.

Giới thiệu

Xin chào các bạn, bài viết này tôi muốn phân biệt sự khác nhau giữa $this và self cho các bạn mới học PHP. Và hy vọng nó cũng sẽ hữu ích cho các bạn đã học để ôn lại kiến thức.

Nội dung

1. $this tham chiếu đến đối tượng hiện tại, còn self tham chiếu đến Class sử dụng nó.

  • Để minh chứng cho nhận định trên, chúng ta cùng xem xét ví dụ sau:

Tạo một class Animal, và class Tiger kế thừa từ class Animal và sẽ override lại phương thức whichClass() của Animal.

2. Sử dụng $this và self trong static function.

  • Chỉnh sửa thêm một chút, thay đổi biến $name thành non-static:
class Animal {
    public $name;  
	
    public static function nameChange()
    {
        self::$name = "Programmer Interview";
    }
}

$animalObj = new Animal();
$animalObj->nameChange();
  • Bây giờ, $name không còn là biến static, chạy đoạn code trên chúng ta sẽ gặp lỗi Uncaught Error: Access to undeclared static property: Animal::$name. Lỗi ở đây là do, chúng ta KHÔNG được phép truy cập biến non-static trong phương thức static - điều này có ý nghĩa bởi vì các hàm static có thể được gọi trực tiếp qua Class mà không cần đối tượng - Các biến non-static được sử dụng bởi đối tượng.

3. $this, self - gọi static functions.

  • Có thể gọi static function bằng $this hoặc self.

4. $this, self truy cập static variable.

  • Trong PHP, không nên sử dụng con trỏ $this để thiết lập giá trị biến static - thay vào đó, sử dụng $self.

Tổng kết


All Rights Reserved