Apa metode ajaib dalam PHP? dan Bagaimana Menerapkannya?



Artikel ini akan memberi Anda pengetahuan terperinci dan komprehensif tentang berbagai Metode Ajaib di PHP dengan Contoh.

Di , fungsi khusus dapat didefinisikan sedemikian rupa sehingga dapat dipanggil secara otomatis dan tidak memerlukan pemanggilan fungsi apa pun untuk menjalankan kode di dalam fungsi ini. Fitur ini tersedia dalam metode khusus yang dikenal sebagai metode ajaib. Pada artikel ini, kita akan membahas Metode Ajaib teratas di PHP.

Apa Metode Ajaib di PHP?

Metode yang dimulai dengan 2 garis bawah (__) umumnya disebut metode Ajaib di PHP. Nama metode ini dibatasi pada beberapa daftar PHP kata kunci yang didukung yang sudah dipesan. Jadi fungsi apa pun tidak boleh didefinisikan dengan nama metode ajaib PHP.





Magic-Methods-in-PHP

Biasanya, fungsi ini harus ditentukan oleh pengguna dan tidak perlu memanggilnya secara eksplisit.



Daftar Metode Ajaib di PHP

  • __membangun()
  • __menghancurkan()
  • __call ($ fun, $ arg)
  • __callStatic ($ fun, $ arg)
  • __get ($ property)
  • __set ($ property, $ value)
  • __isset ($ konten)
  • __unset ($ konten)
  • __tidur()
  • __bangun()
  • __toString ()
  • __memohon()
  • __set_state ($ larik)
  • __klon()
  • __debugInfo ()
  • __membangun(): Ini adalah metode yang dipanggil secara otomatis setelah pembuatan objek. Sejumlah argumen dapat ditentukan di sini yang akan diteruskan saat objek dibuat.
sampel kelas {function user_def () {echo 'user ditentukan konstruktor'} function __construct () {echo 'konstruktor yang telah ditentukan'}} $ obj = sampel baru ()?>

  • __menghancurkan(): Destruktor adalah fitur umum dari bahasa berorientasi objek yang dipicu segera setelah tidak ada referensi lain ke objek tertentu.
user_def () // periksa objek dihancurkan atau tidak echo is_object ($ obj). ' '?>

  • __call ($ fun, $ arg): Metode ini dipanggil ketika metode yang tidak ditentukan atau tidak dapat diakses dipanggil. Yang berarti dipanggil ketika metode yang tidak ditentukan atau tidak dapat diakses dipanggil pada suatu objek.
run ('teacher') // Jika metode yang tidak ada dipanggil di dalam objek, maka metode __call () akan dipanggil secara otomatis. $ obj-> makan ('ashok', 'orange') $ obj-> user_define ()?>



  • __callStatic ($ fun, $ arg): Metode ini dipanggil ketika metode yang tidak ditentukan atau tidak dapat diakses dipanggil secara statis.
user_define ()?>

  • __get ($ property): Metode ini digunakan untuk mendapatkan nilai properti kelas yang dibuat secara dinamis oleh overloading properti PHP.
name = $ name $ this-> reg = $ reg} public function __get ($ propertyName) {if ($ propertyName == 'reg') {if ($ this-> reg> 30) {return $ this-> reg - 10} else {return $ this -> $ propertyName}} else {return $ this -> $ propertyName}}} $ obj = new Student ('Ashok', 60) // Buat instance objek dengan kelas Student dan tetapkan nilai awal ke properti dengan konstruktor. echo 'Nama :'. $ obj-> nama. '' // Ketika private property diakses, metode __get () akan dipanggil secara otomatis, sehingga kita bisa mendapatkan nilai property secara tidak langsung. echo 'reg :'. $ obj-> reg. '' // Metode __get () dipanggil secara otomatis, dan mengembalikan nilai yang berbeda sesuai dengan objek itu sendiri. ?>

  • __set ($ property, $ value): Metode ini digunakan untuk meletakkan nilai untuk properti kelas yang dibuat secara dinamis oleh overloading properti PHP.
name = $ name $ this-> reg = $ reg} public function __set ($ property, $ value) {if ($ property == 'reg') $ value $ property = $ value public function fun () {echo 'My name is '. $ this-> name.', Nomor registrasi saya adalah '. $ this-> reg}} $ obj = siswa baru (' Ashok ', 40) // Perhatikan bahwa nilai awal akan diubah oleh kode di bawah. $ obj-> name = 'Sushma' // Properti 'name' akan berhasil ditetapkan. Jika tidak ada metode __set (), maka program akan mengeluarkan pengecualian. $ obj-> age = 16 // Properti 'reg' akan berhasil ditetapkan. $ obj-> reg = 160 // 160 adalah nilai yang tidak valid, jadi gagal untuk ditetapkan. $ obj-> fun ()?>

  • __isset ($ konten); Metode ini akan dipanggil saat memanggil isset () atau empty () untuk anggota yang tidak ditentukan atau tidak dapat diakses. Ini dipanggil secara otomatis saat memeriksa apakah properti kelebihan beban yang diperlukan disetel atau tidak, dengan menggunakan fungsi PHP isset ().
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} public function __isset ($ content) {echo 'Properti {$ content} bersifat pribadi, metode __isset () dipanggil secara otomatis. 'echo isset ($ this -> $ content)}} $ obj = siswa baru (' Ashok ', 30) // Awalnya ditetapkan. echo isset ($ obj-> gender), '' echo isset ($ obj-> nama), '' echo isset ($ obj-> reg), ''?>

  • __unset ($ konten): Metode ini akan dipanggil saat memanggil reset () untuk anggota yang tidak ditentukan atau tidak dapat diakses.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} public function __unset ($ content) {echo 'Ini dipanggil secara otomatis ketika kita menggunakan metode unset () di luar kelas. 'echo isset ($ this -> $ content)}} $ obj = siswa baru (' Ashok ', 30) // Awalnya ditetapkan. unset ($ obj-> gender) unset ($ obj-> nama) unset ($ obj-> reg)?>

c ++ urutan fibonacci
  • __tidur(): Metode ini dipanggil pertama kali saat menjalankan serialize (). Ini mengembalikan array properti objek saat membersihkan objek kelas PHP sebelum serialisasi.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} public function __sleep () {echo 'Ini dipanggil ketika metode serialize () dipanggil di luar kelas. '$ this-> name = base64_encode ($ this-> name) return array (' name ',' reg ') // Ini harus mengembalikan nilai yang elemennya adalah nama properti yang dikembalikan. }} $ obj = Mahasiswa baru ('Ashok') // Awalnya ditetapkan. echo serialize ($ obj) echo ''?>

  • __bangun(): Metode ini dipanggil saat deserialization () dijalankan. Ini akan membalikkan pekerjaan untuk memulihkan properti objek dan sumber daya saat menjalankan deserialization ().
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} public function __sleep () {echo 'Ini dipanggil ketika metode serialize () dipanggil di luar kelas. '$ this-> name = base64_encode ($ this-> name) return array (' name ',' reg ') // Ini harus mengembalikan nilai yang elemennya adalah nama properti yang dikembalikan. } public function __wakeup () {echo 'Ini dipanggil ketika metode unserialize () dipanggil di luar kelas. '$ this-> name = 2 $ this-> gender =' Male '}} $ obj = siswa baru (' Ashok ') // Awalnya ditugaskan. var_dump (serialize ($ obj)) var_dump (unserialize (serialize ($ obj)))?>

  • __toString (): Metode ini akan dipanggil saat menggunakan metode echo untuk mencetak objek secara langsung. Diharapkan untuk mengembalikan nilai string saat menggunakan instance kelas dengan pernyataan pencetakan PHP.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} public function __toString () {return 'go go go'}} $ obj = new Student ('Ashok') // Awalnya ditetapkan. echo $ obj?>

  • __memohon(): Metode ini didefinisikan dalam kelas yang akan dipanggil saat mencoba memanggil suatu objek dengan cara memanggil fungsi.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} public function __invoke () {echo 'This is an object'}} $ obj = new Student ('Ashok') // Awalnya ditetapkan . $ obj ()?>

  • __set_state ($ array): Metode ini dipanggil saat memanggil var_export (). Ini adalah metode statis yang dipanggil saat mengekspor array properti objek dan mengharapkan variabel array seperti argumennya.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender}} $ obj = siswa baru ('Ashok') // Awalnya ditetapkan. var_export ($ obj)?>

  • __klon(): Metode ini dipanggil saat objek disalin.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} public function __clone () {echo __METHOD __. 'Anda sedang menggandakan objek. '}} $ obj = Mahasiswa baru (' Ashok ') // Awalnya ditetapkan. $ obj2 = klon $ obj var_dump ('object1:') var_dump ($ obj) echo '' var_dump ('object2:') var_dump ($ obj2)?>

  • __debugInfo (): Metode ini dipanggil oleh var_dump () saat membuang objek untuk mendapatkan properti yang seharusnya ditampilkan. Jika metode tidak ditentukan pada objek, maka semua properti publik, dilindungi, dan privat akan ditampilkan.
prop = $ val} public function __debugInfo () {return ['propSquared' => $ this-> prop ** 2,]}} var_dump (Contoh baru (22))?>

Dengan ini, kita sampai pada akhir metode ajaib ini dalam artikel PHP. Saya harap Anda mendapat gambaran tentang berbagai metode ajaib di PHP.

Lihat oleh Edureka, perusahaan pembelajaran online tepercaya dengan jaringan lebih dari 250.000 pelajar yang puas dan tersebar di seluruh dunia.

Ada pertanyaan untuk kami? Harap sebutkan di bagian komentar ' Metode Ajaib dalam PHP 'Dan saya akan menghubungi Anda kembali.