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
Lepaskan: 2024-12-17 15:41:11
asal
1064 orang telah melayarinya

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
    }
}
Salin selepas log masuk

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
    }
}
Salin selepas log masuk

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()'
Salin selepas log masuk

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()'
Salin selepas log masuk

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 Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan