Rumah > Artikel > pembangunan bahagian belakang > Apakah yang dimaksudkan dengan garis bawah dalam php
Satu garis bawah dalam php mewakili pembolehubah persendirian dan kaedah persendirian, dan dua garis bawah ialah pembolehubah terbina dalam PHP Contohnya, PHP menetapkan bahawa kaedah yang bermula dengan dua garis bawah dikhaskan sebagai kaedah ajaib, jadi adalah disyorkan agar anda. mempunyai nama fungsi terbaik Jangan mulakan dengan __ melainkan anda membebankan kaedah ajaib sedia ada.
Persekitaran pengendalian artikel ini: sistem Windows 7, PHP versi 7.1, komputer DELL G3
Apakah yang digariskan oleh php min?
Maksud pembolehubah yang bermula dengan garis bawah dalam PHP
Peraturan penamaan
Menambah satu adalah peribadi
Menambah dua biasanya lalai sistem , dipratakrifkan oleh sistem, iaitu apa yang dipanggil:
=========
"Kaedah ajaib" dan "Pemalar ajaib" ”
=====================
★Pemalar PHP bermula dan berakhir dengan garis bawah berganda ialah "pemalar ajaib":
__LINE__Nombor baris semasa dalam fail.
__FILE__Laluan penuh dan nama fail fail.
__DIR__Direktori tempat letak fail. Jika digunakan dalam fail yang disertakan, mengembalikan direktori tempat fail yang disertakan berada. Ia bersamaan dengan diname(__FILE__). Melainkan ia adalah direktori akar, nama direktori tidak termasuk garis miring di belakang
Nota: Kandungan di atas adalah daripada "Manual PHP Cina->Rujukan Bahasa->Constant->Magic Constant".
Daripada versi php5 dan yang lebih baru, kelas php boleh menggunakan kaedah ajaib.
PHP menetapkan bahawa kaedah yang bermula dengan dua garis bawah (__) dikhaskan sebagai kaedah ajaib, jadi adalah disyorkan bahawa nama fungsi anda tidak boleh bermula dengan __ melainkan ia adalah untuk membebankan kaedah sihir sedia ada.
Kaedah ajaib dalam PHP ialah: __build, __destruct, __call, __callStatic,__get, __set, __isset, __unset, __sleep, __wakeup, __toString, __set_state, __clone, __autoload
Dua kaedah ini direka untuk sifat yang tidak diisytiharkan dalam kelas dan kelas induknya
__get( $property ) Kaedah ini digunakan apabila sifat yang tidak ditentukan dipanggil Akan dicetuskan, parameter yang diluluskan ialah nama sifat sedang diakses
__set( $property, $value ) Apabila memberikan nilai kepada sifat yang tidak ditentukan, kaedah ini akan dicetuskan, parameter yang diluluskan ialah sifat yang ditetapkan Nama dan nilai
Bukan pengisytiharan di sini termasuk atribut yang kawalan aksesnya dilindungi dan peribadi (iaitu, atribut yang tidak mempunyai kebenaran untuk mengakses) apabila dipanggil menggunakan objek.
2. __isset, __unset
__isset( $property ) Kaedah ini dipanggil apabila fungsi isset() dipanggil pada undefined property
__unset( $property ) Ini kaedah dipanggil apabila fungsi unset() dipanggil pada sifat yang tidak ditentukan
Sama seperti kaedah __get dan kaedah __set. Apabila dipanggil dengan objek, kawalan akses dilindungi, peribadi . Atribut (iaitu, atribut tanpa kebenaran untuk mengakses)
3 __call
__call( $method, $arg_array ) Apabila memanggil kaedah yang tidak ditentukan, kaedah ini dipanggil
Kaedah yang tidak ditentukan di sini termasuk kaedah yang tidak mempunyai kebenaran untuk mengakses jika kaedah itu tidak wujud, pergi ke kelas induk untuk mencari kaedah Jika ia tidak wujud dalam kelas induk, panggil kaedah __call() ini kelas. Jika kelas ini Jika kaedah __call() tidak wujud dalam kelas induk, pergi ke kaedah __call() dalam kelas induk 4 __autoloadfungsi __autoload muncul secara automatik apabila cuba menggunakan kelas yang belum ditakrifkan. Dengan memanggil fungsi ini, enjin skrip mempunyai peluang terakhir untuk memuatkan kelas yang diperlukan sebelum PHP gagal dengan ralat. Jika anda ingin menentukan kelas autoloading global, anda mesti menggunakan kaedah spl_autoload_register() untuk mendaftarkan kelas pemprosesan ke perpustakaan standard PHP:Nota: dilemparkan ke dalam __autoload fungsi Pengecualian tidak boleh ditangkap oleh blok pernyataan tangkapan dan menyebabkan ralat maut, jadi ia harus ditangkap dalam fungsi itu sendiri.
<?php class Loader { static function autoload_class($class_name) { //寻找正确的$class_name类,并引入,没有则抛出异常 } } /** * 设置对象的自动载入 * spl_autoload_register — Register given function as __autoload() implementation */ spl_autoload_register(array('Loader', 'autoload_class')); $a = new Test();//Test没用require就实例化,实现自动加载,很多框架就用这种方法自动加载类 ?>5. __build, __destructkaedah constructor __, kaedah ini dipanggil apabila objek dicipta Kelebihan menggunakan kaedah ini berbanding PHP4 ialah kaedah konstruktor boleh mempunyai nama yang unik . Tidak kira apa nama kelasnya Dengan cara ini, apabila anda menukar nama kelas, anda tidak perlu menukar nama pembina __destruct destructor kaedah akan mengeluarkan objek dari ingatan sebelum ia dimusnahkan Sebelum membersihkan) panggil kaedah ini. Secara lalai, PHP hanya melepaskan memori yang diduduki oleh sifat objek dan memusnahkan sumber berkaitan objek. Pemusnah membenarkan anda melaksanakan kod sewenang-wenangnya untuk mengosongkan memori selepas menggunakan objek. Apabila PHP memutuskan bahawa skrip anda tidak lagi dikaitkan dengan objek, pemusnah akan dipanggil. Dalam ruang nama fungsi, ini akan berlaku apabila fungsi itu kembali. Untuk pembolehubah global, ini berlaku pada penghujung skrip. Jika anda ingin memusnahkan objek secara eksplisit, anda boleh menetapkan sebarang nilai lain kepada pembolehubah yang menunjuk ke objek Biasanya tetapkan pembolehubah kepada NULL atau panggilan tidak ditetapkan.6 >
Penugasan objek dalam PHP5 menggunakan tugasan rujukan Jika anda ingin menyalin objek, anda perlu menggunakan kaedah klon Apabila memanggil kaedah ini, objek akan secara automatik memanggil kaedah ajaib __clone operasi permulaan perlu dilakukan , boleh dilaksanakan dalam kaedah __clone.
7. __toString
Kaedah __toString dipanggil secara automatik apabila menukar objek kepada rentetan, seperti semasa menggunakan gema untuk mencetak objek.
Jika kelas tidak melaksanakan kaedah ini, objek tidak boleh dicetak melalui gema, jika tidak, ia akan memaparkan: Ralat maut yang boleh ditangkap: Objek ujian kelas tidak boleh ditukar kepada rentetan dalam
Kaedah ini mesti kembali seutas tali.
Sebelum PHP 5.2.0, kaedah __toString hanya boleh berkuat kuasa apabila digunakan bersama echo() atau print(). Selepas PHP 5.2.0, ia boleh berkuat kuasa dalam mana-mana persekitaran rentetan (contohnya, melalui printf(), menggunakan pengubah %s), tetapi tidak boleh digunakan dalam persekitaran bukan rentetan (seperti menggunakan pengubah %d). Daripada PHP 5.2.0, jika objek yang tidak mentakrifkan kaedah __toString ditukar kepada rentetan, ralat E_RECOVERABLE_ERROR akan dilaporkan.
8. __sleep, __wakeup
__sleep Gunakan
__wakeup apabila bersiri dan panggil
serialize() untuk menyemak kelas Adakah terdapat fungsi dengan sihir nama __tidur. Jika ya, fungsi tersebut akan dijalankan sebelum sebarang siri. Ia mengosongkan objek dan harus mengembalikan tatasusunan yang mengandungi nama semua pembolehubah dalam objek yang harus bersiri.
Tujuan menggunakan __sleep adalah untuk menutup sebarang sambungan pangkalan data yang mungkin ada pada objek, menyerahkan data yang belum selesai atau melaksanakan tugas pembersihan yang serupa. Selain itu, fungsi ini berguna jika anda mempunyai objek yang sangat besar yang tidak perlu disimpan sepenuhnya.
Sebaliknya, unserialize() menyemak kewujudan fungsi dengan nama ajaib __wakeup. Fungsi ini boleh membina semula sebarang sumber yang mungkin ada pada objek, jika ada.
Tujuan menggunakan __wakeup adalah untuk mewujudkan semula mana-mana sambungan pangkalan data yang mungkin hilang semasa penyirian dan untuk mengendalikan tugas pemulaan semula yang lain.
9. __set_state
Apabila var_export() dipanggil, kaedah statik ini akan dipanggil (sah sejak PHP 5.1.0).
Satu-satunya parameter kaedah ini ialah tatasusunan, yang mengandungi sifat kelas yang disusun dalam format tatasusunan('property' => nilai, …).
10. __invoke
Apabila cuba memanggil objek dengan memanggil fungsi, kaedah __invoke akan dipanggil secara automatik.
PHP5.3.0 atau ke atas adalah sah
11 __callStatic
Ia berfungsi serupa dengan kaedah ajaib __callStatic() adalah untuk mengendalikan panggilan kaedah statik 🎜>
Sah untuk PHP 5.3.0 dan ke atas PHP sememangnya telah mengukuhkan takrifan kaedah __callStatic() ia mestilah awam dan mesti diisytiharkan statik. Begitu juga, kaedah sihir __call() mesti ditakrifkan sebagai awam, begitu juga semua kaedah sihir lain. Pembelajaran yang disyorkan: "Tutorial Video PHP"
Atas ialah kandungan terperinci Apakah yang dimaksudkan dengan garis bawah dalam php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!