Rumah pembangunan bahagian belakang tutorial php Memahami Ahli Statik dalam PHP

Memahami Ahli Statik dalam PHP

Sep 13, 2024 am 06:22 AM

Understanding Static Members in PHP

Dalam PHP, ahli statik (kaedah dan sifat) tergolong dalam kelas itu sendiri, bukan kepada objek individu. Ini bermakna anda boleh mengaksesnya tanpa membuat contoh kelas. Ahli statik berguna apabila anda ingin berkongsi data atau fungsi merentas berbilang objek. PHP menyediakan tiga kata kunci untuk mengakses kaedah dan sifat statik: diri::, ibu bapa::, dan statik::. Masing-masing berfungsi secara berbeza, terutamanya apabila menggunakan warisan. Dalam artikel ini, kami akan menerangkan cara kata kunci ini berfungsi dan menunjukkan perbezaannya dengan contoh.

Bila Menggunakan Ahli Statik

  • Pembolehubah Global: Sifat statik boleh digunakan sebagai pembolehubah global dalam kelas, boleh diakses oleh semua kejadian.

  • Kaedah Utiliti: Kaedah statik boleh menyediakan fungsi utiliti yang bebas daripada objek individu.

  • Pemalar Peringkat Kelas: Sifat statik boleh digunakan untuk menentukan pemalar peringkat kelas.

  • Corak Singleton: Kaedah dan sifat statik adalah penting untuk melaksanakan corak Singleton.

Memanggil Kaedah Statik

Untuk memanggil kaedah statik, anda menggunakan operator :: diikuti dengan nama kaedah. Berikut ialah contoh:

class MyClass {
    public static function greet() {
        echo "Hello, world!";
    }
}

MyClass::greet(); // Output: Hello, world!

Memanggil Sifat Statik

Untuk mengakses sifat statik, anda juga menggunakan operator :: diikuti dengan nama sifat. Berikut ialah contoh:

class MyClass {
    public static $count = 0;

    public static function incrementCount() {
        self::$count++;
    }
}

MyClass::incrementCount();
echo MyClass::$count; // Output: 1

Tiga Kata Kunci: diri::, ibu bapa::, dan statik::

  1. diri sendiri::
    Kata kunci diri:: merujuk kepada kelas di mana kod itu ditulis. Ia tidak mengambil kira warisan, bermakna jika kelas kanak-kanak mengatasi kaedah atau harta statik, self:: masih akan merujuk kepada kelas induk tempat kod itu ditakrifkan.

  2. ibu bapa::
    Kata kunci induk:: digunakan untuk memanggil kaedah atau sifat statik daripada kelas induk terdekat. Ia memintas sebarang kaedah yang ditindih dalam kelas anak, memastikan kaedah atau harta ibu bapa digunakan.

  3. statik::
    Kata kunci statik:: berfungsi sama seperti diri::, tetapi ia menyumbang kepada pengikatan statik lewat. Ini bermakna jika kaedah atau sifat statik ditindih dalam kelas anak, static:: akan merujuk kepada kaedah atau sifat dalam kelas terbitan yang paling banyak, walaupun ia dipanggil daripada kelas induk.

Contoh untuk Menunjukkan Perbezaan

Mari kita lihat bagaimana setiap kata kunci ini berkelakuan dalam program PHP dengan warisan.

Contoh 1: Menggunakan diri sendiri::

class A {
    public static function sayHello() {
        return "Hello from A";
    }

    public static function test() {
        return self::sayHello();
    }
}

class B extends A {
    public static function sayHello() {
        return "Hello from B";
    }
}

echo B::test(); // Output: "Hello from A"

Dalam contoh ini, self:: dalam kelas A merujuk kepada kaedah sayHello() dalam A. Walaupun kelas B mengatasi kaedah tersebut, self:: memanggil kaedah kelas induk, menghasilkan output "Hello dari A."

Contoh 2: Menggunakan ibu bapa::

class A {
    public static function sayHello() {
        return "Hello from A";
    }
}

class B extends A {
    public static function sayHello() {
        return parent::sayHello() . " and B";
    }
}

echo B::sayHello(); // Output: "Hello from A and B"

Dalam contoh ini, kelas B memanggil ibu bapa::sayHello() untuk memasukkan mesej daripada kelas induk A dan kemudian menambahkan mesejnya sendiri. Outputnya ialah "Hello daripada A dan B."

Contoh 3: Menggunakan statik::

class A {
    public static function sayHello() {
        return "Hello from A";
    }

    public static function test() {
        return static::sayHello();
    }
}

class B extends A {
    public static function sayHello() {
        return "Hello from B";
    }
}

echo B::test(); // Output: "Hello from B"

Di sini, statik:: dalam kelas A merujuk kepada kaedah sayHello() dalam kelas paling banyak terbitan, iaitu B. Ini kerana statik:: membenarkan pengikatan statik lewat, dan kaedah dalam kelas B dipanggil, menghasilkan "Helo daripada B."

Perbezaan Utama

  • diri::: Merujuk kepada kelas di mana ia digunakan, mengabaikan warisan. Ini berguna apabila anda tidak mahu kaedah dalam kelas kanak-kanak menjejaskan kaedah yang dipanggil.

  • ibu bapa::: Secara khusus memanggil kaedah atau sifat daripada kelas induk, walaupun ia ditindih dalam kelas anak. Ia berguna apabila melanjutkan fungsi daripada kelas induk tetapi masih memerlukan akses kepada kaedah asal.

  • statik::: Mendayakan pengikatan statik lewat, bermakna ia merujuk kepada kaedah atau sifat dalam kelas terbitan paling banyak pada masa jalan, walaupun dipanggil daripada kelas induk. Ia berguna untuk situasi yang anda mahu tingkah laku disesuaikan bergantung pada kelas panggilan.

Memahami perbezaan antara diri::, ibu bapa::, dan statik:: membantu menulis kod PHP yang lebih mantap dan boleh diselenggara, terutamanya dalam sistem berorientasikan objek yang kompleks.

Atas ialah kandungan terperinci Memahami Ahli Statik dalam PHP. 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

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Agnes Tachyon Build Guide | Musume Derby Pretty
2 minggu yang lalu By Jack chen
Oguri Cap Build Guide | Musume Derby Pretty
3 minggu yang lalu By Jack chen
Puncak: Cara Menghidupkan Pemain
4 minggu yang lalu By DDD
Puncak bagaimana untuk emote
3 minggu yang lalu By Jack chen

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimanakah saya tetap terkini dengan perkembangan php terkini dan amalan terbaik? Bagaimanakah saya tetap terkini dengan perkembangan php terkini dan amalan terbaik? Jun 23, 2025 am 12:56 AM

Tostaycurrentwithphpdevelopmentsandbestpractices, followeyNewsssourcesLikePhp.netandphpweekly, engageWithCommunitiesonforumsandconference, keeptoolingupdatedandgraduallyAdoptNewFeatures, dan readribcoursourcourceSource

Apakah php, dan mengapa ia digunakan untuk pembangunan web? Apakah php, dan mengapa ia digunakan untuk pembangunan web? Jun 23, 2025 am 12:55 AM

Phpbecamepopularforwebdevelopmentduetoitseaseoflearning, seamlessintegrationwithhtml, widespreadhostingsupport, andalargeecosystemincludingframeworkslikelaravelandcmsplatformsLikeWordPress.itexcelsinhandessubmissions

Bagaimana cara menetapkan zon waktu php? Bagaimana cara menetapkan zon waktu php? Jun 25, 2025 am 01:00 AM

TosetTheRightTimeZoneinPhp, USEDATE_DEFAULT_TIMEZONE_SET () functionAtthestArtAfyourscriptwithavalididentifiersuchas'america/new_york'.1.usedate_default_timeSet ()

Bagaimanakah saya mengesahkan input pengguna dalam PHP untuk memastikan ia memenuhi kriteria tertentu? Bagaimanakah saya mengesahkan input pengguna dalam PHP untuk memastikan ia memenuhi kriteria tertentu? Jun 22, 2025 am 01:00 AM

TOVALIDATEUSERIputInphp, UsEbuilt-InvalidationFunctionsLikeFilter_var () danFilter_Input (), applyRegularExpressionsforcustomformatssuchasususerorphonenumbers, checkdatatypesfornumericressplimeSpriceSprice, setLengthacheAngeAgeorpriceSprice, setLengthacheArpesenprice,

Apakah amalan terbaik untuk menulis kod PHP yang bersih dan boleh dipelihara? Apakah amalan terbaik untuk menulis kod PHP yang bersih dan boleh dipelihara? Jun 24, 2025 am 12:53 AM

Kunci untuk menulis kod PHP yang bersih dan mudah dijaga terletak pada penamaan yang jelas, berikutan piawaian, struktur yang munasabah, menggunakan komen dan kesesuaian yang baik. 1. Gunakan pembolehubah, fungsi dan nama kelas yang jelas, seperti $ userData dan calculateToTalPrice (); 2. Ikuti gaya kod bersatu piawai PSR-12; 3. Pecahkan struktur kod mengikut tanggungjawab, dan aturnya menggunakan katalog MVC atau Laravel; 4. Elakkan kod gaya mi dan memecah logik ke dalam fungsi kecil dengan satu tanggungjawab; 5. Tambah komen pada mata utama dan tulis dokumen antara muka untuk menjelaskan parameter, pulangan nilai dan pengecualian; 6. Meningkatkan kebolehlihatan, mengguna pakai suntikan pergantungan, mengurangkan kaedah keadaan global dan statik. Amalan ini meningkatkan kualiti kod, kecekapan kerjasama dan kemudahan pasca penyelenggaraan.

Apakah Serialization Data dalam PHP (Serialize (), Unserialize ())? Apakah Serialization Data dalam PHP (Serialize (), Unserialize ())? Jun 22, 2025 am 01:03 AM

ThPhpFunctionserialize () andUnserialize () diselaraskanToConvertComplexDataStructructDestoresIntoStorasandabackagain.1.Serialize () C overtsdatalikeCarraysorObjectSrayStringContainingTyPeanStructureStructureStructureStructure.2.2Serialize ()

Bagaimana saya membenamkan kod php dalam fail html? Bagaimana saya membenamkan kod php dalam fail html? Jun 22, 2025 am 01:00 AM

Anda boleh membenamkan kod PHP ke dalam fail HTML, tetapi pastikan fail itu mempunyai lanjutan .php supaya pelayan dapat menghuraikannya dengan betul. Gunakan tag standard untuk membungkus kod PHP, masukkan kandungan dinamik di mana sahaja di HTML. Di samping itu, anda boleh menukar PHP dan HTML beberapa kali dalam fail yang sama untuk merealisasikan fungsi dinamik seperti rendering bersyarat. Pastikan anda memberi perhatian kepada konfigurasi pelayan dan ketepatan sintaks untuk mengelakkan masalah yang disebabkan oleh label pendek, kesilapan tanda petikan atau label akhir yang ditinggalkan.

Bagaimana saya melaksanakan pertanyaan SQL menggunakan php? Bagaimana saya melaksanakan pertanyaan SQL menggunakan php? Jun 24, 2025 am 12:54 AM

Ya, youpanrunsqlqueriesusingphp, danTheProcessinvolveschoosingadatabaseextension, connectingTothedatabase, executingqueriSafely, andclosingconnectionswhendone.todothis, firstChoosebetweBetbeSquLiorpiorpiorpiorpiorpiorpiorpiorpiorpiorpiorpiorpiorpiorpiorpiorpiorpiorpiorpiorpdob

See all articles