Nếu bạn đang tìm hiểu về lập trình hướng đối tượng (OOP) ngay từ đầu sẽ làm quen với từ khóa this và self. Và bạn có thể thấy thấy cách sử dụng $this trong một số đoạn mã PHP. Vậy chúng có ý nghĩa và cách dùng như thế nào? Hãy tham khảo bài sau.
This trong PHP
$this tham chiếu đến đối tượng hiện tại của lớp. $this là biến giả được tạo ngay khi đối tượng của lớp được tạo và có thể sử dụng sau khi phương thức lớp đó được gọi từ bên trong ngữ cảnh đối tượng.
Nói chung các hàm thành viên bên trong có thể truy cập các thành viên không tĩnh của một lớp (biến hoặc hàm) cho đối tượng hiện tại.
Hãy quan sát ví dụ dùng $this bên dưới:
<?php class ConNguoi { private $ten = 'Quach Quynh'; public function setName() { return $this->ten; } } $data = new ConNguoi(); echo "Tôi tên là " . $data->setName(); ?>
Đầu tiên mình sẽ khởi tạo một Class là ConNguoi. Bên trong nó sẽ đặt $ten với giới hạn truy cập là private. Và phương thức setName là public. Có nghĩa là truy cập được mọi nơi, kể cả bên ngoài lớp.
Từ khóa this lúc này được sử dụng để gọi biến bất kỳ của Class và được dùng bên trong hàm thành viên. Hàm thành viên ở đây là setName. $this để trỏ đến đối tượng hiện tại .
Hoặc cũng có thể sử dụng $this để gọi một hàm thành viên khác.
<?php class Vidu { // Hàm thành viên A public function A() { return 'Phương thức A'; } // Hàm thành viên B public function B() { return $this->A(); } } $data = new Vidu(); echo $data->B(); ?>
Self trong PHP
Một lớp có thể chứa kết hợp của các thành viên tĩnh và không tĩnh . Để truy cập các thành viên tĩnh của lớp, nó sử dụng self cùng với toán tử phân giải phạm vi ::. Toán tử phân giải phạm vi này còn được gọi là Paamayim Nekudotayim (có nghĩa là dấu hai chấm trong tiếng Do Thái) hoặc trong những từ đơn giản hơn, dấu hai chấm kép.
Các hàm và biến static được liên kết với chính lớp đó. Có nghĩa là bất cứ giá trị nào mà biến static giữ, nó sẽ được chia sẻ cho tất cả các đối tượng được tạo khác.
Nói một cách đơn giản, giả sử chúng ta cập nhật biến static bằng cách sử dụng $a và sau đó dùng lại $a, chúng ta cố gắng truy cập vào cùng một biến static thì sẽ nhận được cùng một giá trị và ngược lại.
Self sử dụng để tham chiếu đến các phương thức và thuộc tính tĩnh (static).
Hãy làm một ví dụ sau:
<?php class Person { public static $name = "Quach Quynh"; public function getName() { return self::$name; } } $data = new Person; echo $data->getName(); ?>
Khi chạy đoạn mã hoàn toàn bình thường. Nhưng lúc này bạn hãy thử xóa static ngay trước $name đi xem sao.
Sự khác nhau | Self | This |
Có thể được sử dụng trong các hàm (function) tĩnh | Được | Không |
Có thể truy cập biến của lớp và các phương thức | Self:: | PHP> 5.3 cho phép sử dụng $this với các biến tĩnh sử dụng $this::$foo. Nếu dùng $this->foo sẽ vẫn không được xác định. |
Cần một đối tượng khởi tạo | Không | Cần |
Kết luận: Như vậy là bài viết này chúng ta đã tìm hiểu về từ khóa this, selft và cách sử dụng trong Class như thế nào rồi. Nếu có bất kỳ phản hồi nào bạn hãy comment bên dưới mình sẽ giải đáp giúp bạn.