Từ khóa this, self trong PHP

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.

self-static

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.

Related Posts

Namespace trong PHP

Namespace cho phép các lớp / hàm / hằng cùng tên được sử dụng trong các ngữ cảnh khác nhau mà không có bất kỳ xung đột…

Hàm str_split() trong PHP

Bài viết này chúng ta sẽ đi tìm hiểu về hàm str_split(). Một trong những hàm thường được dùng trong PHP. Vậy cách sử dụng str_split() như…

Tạo chức năng sửa xoá thành viên bằng PHP & MySQL

Với một số trang web để quản lý thành viên (user) dễ dàng trong phần quản trị admin bạn phải khởi tạo chức năng sửa xoá thành…

Hàm str_replace trong PHP

Hàm str_replace trong PHP là gì? Hàm str_replace() trong PHP là một hàm được sử dụng để thay thế tất cả các xuất hiện của một chuỗi…

laravel8-vews-1

Views trong Laravel 8

Trong chuỗi series hướng dẫn học Laravel thì Views cũng quan trọng không kém gì so với Controller hay Model. Vậy chúng ta sẽ làm thế nào…

Validate Form trong PHP

Mặc dù trình duyệt hỗ trợ JavaScript để xác thực người dùng cho website. Tuy nhiên nếu JavaScript bị lỗi hoặc tắt đi thì công việc này…