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

PHP `self` lwn. `$this`: Bila Untuk Menggunakan Setiap?

Barbara Streisand
Barbara Streisandasal
2024-12-24 01:17:10182semak imbas

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

Bila Menggunakan 'Self' dan '$This' dalam PHP

Dalam PHP, memahami perbezaan antara 'self' dan '$ ini' adalah penting. 'Self' merujuk kepada kelas semasa, manakala '$this' merujuk kepada objek semasa.

Bila Gunakan 'Self':

  • Mengakses ahli statik (pembolehubah atau kaedah):

    class MyClass {
        static $static_member = 10;
    }
    echo MyClass::$static_member; // Output: 10
  • Memanggil kaedah kelas induk:

    class ChildClass extends ParentClass {
        public function myMethod() {
            self::parentMethod(); // Calls the parent class method
        }
    }

Bila Gunakan '$This':

  • Mengakses ahli bukan statik :

    class MyClass {
        private $instance_member = 20;
    }
    $obj = new MyClass();
    echo $obj->instance_member; // Output: 20
  • Contoh panggilan kaedah:

    class MyClass {
        public function myMethod() {
            echo $this->instance_member; // Accesses the instance member
        }
    }
  • Polymorphism: Memanggil kaedah contoh daripada kelas terbitan:

    class BaseClass {
        public function myMethod() {
            echo 'BaseClass::myMethod()';
        }
    }
    class DerivedClass extends BaseClass {
        override public function myMethod() {
            echo 'DerivedClass::myMethod()';
        }
    }
    $baseObj = new BaseClass();
    $derivedObj = new DerivedClass();
    $baseObj->myMethod(); // Output: 'BaseClass::myMethod()'
    $derivedObj->myMethod(); // Output: 'DerivedClass::myMethod()'
  • Menindas polimorfisme: Memanggil kaedah kelas induk menggunakan ' diri' dalam kelas terbitan:

    class BaseClass {
        public function myMethod() {
            echo 'BaseClass::myMethod()';
        }
    }
    class DerivedClass extends BaseClass {
        override public function myMethod() {
            parent::myMethod(); // Calls the BaseClass's myMethod() using self::
        }
    }
    $derivedObj = new DerivedClass();
    $derivedObj->myMethod(); // Output: 'BaseClass::myMethod()'

Atas ialah kandungan terperinci PHP `self` lwn. `$this`: Bila Untuk 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