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