Rumah >pembangunan bahagian belakang >tutorial php >PHP 5: `$this` lwn. `self` – Bila Perlu Menggunakan Setiap?

PHP 5: `$this` lwn. `self` – Bila Perlu Menggunakan Setiap?

Patricia Arquette
Patricia Arquetteasal
2024-12-20 06:34:10648semak imbas

PHP 5: `$this` vs. `self` – When to Use Each?

Diri vs. $this: Bila dan Cara Menggunakan Setiap

Soalan:

Dalam PHP 5, bagaimanakah kata kunci "self" dan "$this" berbeza dalam penggunaannya? Bilakah setiap satunya harus digunakan dengan sewajarnya?

Jawapan:

Jawapan Ringkas:

Gunakan "$this" untuk merujuk pembolehubah dan kaedah contoh objek semasa. Gunakan "diri" untuk merujuk kepada pembolehubah dan kaedah statik kelas semasa.

Jawapan Penuh:

Ahli Bukan Statik lwn Statik:

  • "$this->member" mengakses pembolehubah ahli bukan statik dan kaedah khusus ke objek semasa.
  • "self::$member" mengakses pembolehubah ahli statik dan kaedah yang dikongsi oleh semua kejadian kelas.

Polymorphism:

  • "$this" boleh menunjukkan polimorfisme dengan memanggil kaedah yang ditakrifkan dalam terbitan kelas.
  • "diri" menyekat polimorfisme dan sentiasa memanggil kaedah yang ditakrifkan dalam kelas semasa.

Contoh (penggunaan yang betul):

class X {
    private $non_static_member = 1;
    private static $static_member = 2;

    function __construct() {
        echo $this->non_static_member . ' ' . self::$static_member;
    }
}

new X(); // Output: 1 2

Contoh (salah penggunaan):

class X {
    private $non_static_member = 1;
    private static $static_member = 2;

    function __construct() {
        echo self::$non_static_member . ' ' . $this->static_member; // Incorrect usage
    }
}

new X(); // Error: Undefined properties

Menindas Polimorfisme:

class X {
    function foo() {
        echo 'X::foo()';
    }

    function bar() {
        self::foo(); // Suppresses polymorphism
    }
}

class Y extends X {
    function foo() {
        echo 'Y::foo()';
    }
}

$x = new Y();
$x->bar(); // Output: X::foo()

Ringkasan:

Gunakan "$ ini" untuk akses ahli bukan statik dan polimorfisme. Gunakan "diri" untuk akses ahli statik dan apabila anda perlu menyekat polimorfisme.

Atas ialah kandungan terperinci PHP 5: `$this` lwn. `self` – Bila Perlu Menggunakan Setiap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn