Rumah >pembangunan bahagian belakang >tutorial php >Bila hendak menggunakan `self` vs. `$this` dalam PHP 5 untuk Mengakses Ahli Kelas?

Bila hendak menggunakan `self` vs. `$this` dalam PHP 5 untuk Mengakses Ahli Kelas?

Patricia Arquette
Patricia Arquetteasal
2024-12-17 15:41:11954semak imbas

When to Use `self` vs. `$this` in PHP 5 to Access Class Members?

Bila Menggunakan 'self' berbanding '$this' dalam PHP 5

Dalam PHP 5, menggunakan kata kunci yang betul untuk merujuk kepada kelas ahli dan kaedah adalah penting. Apabila ia datang kepada pilihan antara 'diri' dan '$ini', keputusan bergantung pada sama ada anda merujuk ahli statik atau ahli instance.

Menggunakan '$this' untuk Ahli Instance.

'$this' merujuk kepada tika semasa objek. Ia digunakan untuk mengakses ahli bukan statik, yang khusus untuk setiap kejadian. Contohnya:

class MyClass {
    private $member = 1;

    function __construct() {
        echo $this->member; // Outputs 1
    }
}

Menggunakan 'diri' untuk Ahli Statik

'diri' merujuk kepada kelas semasa, tanpa mengira contoh. Ia digunakan untuk mengakses ahli statik, yang dikongsi antara semua kejadian kelas. Contohnya:

class MyClass {
    private static $staticMember = 2;

    function __construct() {
        echo self::$staticMember; // Outputs 2
    }
}

Polimorfisme dan Fungsi Ahli

'$this' membolehkan polimorfisme, membenarkan kelas terbitan mengatasi fungsi ahli kelas induk. Contohnya:

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

class DerivedClass extends BaseClass {
    function foo() {
        echo 'DerivedClass::foo()';
    }
}

$derivedObject = new DerivedClass();
$derivedObject->foo(); // Outputs 'DerivedClass::foo()'

Menindas Polimorfisme dengan 'diri'

Dengan menggunakan 'diri' dan bukannya '$this' dalam fungsi ahli, anda boleh menyekat tingkah laku polimorfik . Fungsi ini akan sentiasa memanggil pelaksanaan daripada kelas induk, tanpa mengira jenis objek sebenar. Contohnya:

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

class DerivedClass extends BaseClass {
    function foo() {
        echo 'DerivedClass::foo()';
    }
}

$derivedObject = new DerivedClass();
$derivedObject->self::foo(); // Outputs 'BaseClass::foo()'

Atas ialah kandungan terperinci Bila hendak menggunakan `self` vs. `$this` dalam PHP 5 untuk Mengakses Ahli Kelas?. 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