PHP: $this và self - Không khó để phân biệt.
Bài đăng này đã không được cập nhật trong 5 năm
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.

- Để biết vtable là gì? Tham khảo tại đây
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

- Nguồn tham khảo: https://www.programmerinterview.com/php-questions/php-self-vs-this/
All rights reserved
 
  
 