Memahami Magic Method Pada PHP

magic method kalo diartikan bisa jadi fungsi ajaib yang ada pada PHP, yah maksudnya bukan fungsi yang punya ilmu gaib gitu ya guys :),
maksud magic method pada PHP adalah fungsi-fungsi khusus yang dimiliki PHP secara build in (dari sononya udah ada), dan magic method ini berkaitan dengan PBO (Pemrograman Berbasis Object) atau OOP (Oriented Object Programming), ada beberapa jenis magic method yang dimiliki oleh PHP, sudah pasti fungsinya juga beragam, misalnya seperti __construct() , __destruct() , __call() , __callStatic() , __get() , __set() , __isset() , __unset() , __sleep() , __wakeup(), __toString(), __invoke(), __set_state(), __colne()  dan __debugInfo() , beberapa dari magic method tersebut pasti sudah sering digunakan jika teman-teman sudah menggunakan framework atau terbiasa bekerja dengan OOP pada PHP, seperti yang terlihat, semua magic method diawali dengan dua garis bawah __ sebelum nama methodnya (saya sendiri tidak tau kenapa harus seperti itu).

Dalam tulisan ini, kita mencoba sedikit mengulas bagaiman menggunakan magic method tersebut, ya sedikit saja hehehe karena saya juga masih belajar :), misalnya seperti __construct()  atau __destruct()  sudah pasti teman-teman sudah tau kegunaanaya, jujur saya pribadi belum menggunakan semua magic method yang ada pada PHP, nah pada kesempatan ini kita mencobanya bersama-sama, beberapa magic method yang kita bahas seperti __call(),  __callStatic() , __get() , __set() , __isset() , __unset() , __toString() , untuk magic method yang lain sangat-sangat jarang digunakan (pengalaman pribadi), well… time to try and error :).

__call()

magic method yang satu ini berfungsi untuk memanggil sebuah method, tetapi method yang dipanggil tidak ada didalam sebuah class atau fungsi tersebut tidak untuk public (private method), ajaib bukan ? bingung ? mari kita perhatikan kode dibawah untuk lebih memahami maksudnya

magic method __call()
magic method __call()

dengan memahami kode diatas kita bisa langsung mengetahui cara kerja dari method __call() , yang perlu dipahami adalah dalam penggunaanya method __call()  harus mengguanakan 2 parameter function __call($method, $var) , $method  adalah nama fungsi yang akan dipanggil dan $var  adalah varible atau parameter yang akan dibawa ke fungsi yang akan dipanggil dalam bentuk array , ajaib bukan ? method __call()  bisa memanggila fungsi apasaja walapun fungsi itu tidak ada dalam sebuah class, kegunaanya buat apaan ? tergantung kebutuhan masing-masing :).

__callStatic()

magic method __callStatic()  fungsinya sama dengan magic method __call() , hanya saja pemanggilanya secara static dalam OOP, misalnya $mobil::fungsi_ajaib() , aturanya juga sama, menggunakan 2 paramater seperti halnya _call(),  jelasnya mari kita pelototin kode dibawah

magic method __callStatic()
magic method __callStatic()

dari penjelasan magic method __call() dan __callStatic()  kita bisa simpulkan secara sederhana, kedua magic method ini akan menggantikan method-method yang tidak ada didalam sebuah class atau dikarenakan method yang dipanggil tidak ada dalam sebuah class maka method __call()  atau __callStatic()  lah yang akan dijalankan.

__set() dan __get()

untuk yang dua jenis magic method ini sudah sangat jelas kegunaanya, mungkin teman-teman pernah melihat source code java (android) atau program java lainya, penggunaa __set()  dan __get()  sangant sering digunakan, apalagi jika itu berkaitan dengan model database, so fungsi magic method __set()  dan __get()  adalah untuk mengeset atau mengambil propertui yang tidak dimiliki oleh sebuah class, mari kita plototin lagi kode dibawah

__set()  dan __get()
__set() dan __get()

seperti terlihat pada kode diatas, kita mencoba menentukan nilai properti knalpot dengan nilai Racing, tetapi jelas-jelas properti knalpot tidak adalam class Mobil()  disinilah peran magic method __set() , method __set()  akan secara ajaib menjadikan properti knalpot menjadi ada, agar properti yang baru saja dibuat bisa dipanggil maka peran __get() lah yang akan beraksi, __get() akan menjadikan properti knalpot yang di tentukan oleh __set() bisa dipanggil, ajaib bukan ?

__isset() dan __unset()

hm…, peernah mengggunakan if(isset($var))  dan unset($var)  dalam program PHP ? pastinya sudah, karena kedua fungsi itu cukup sering digunakan dalam aktivitas berkoding, tetapi bagaimana dengan __isset()  dan __unset() ? jangan panik :), isset()  dan __isset()  memiliki fungsi yang sama, yaitu untuk memeriksa apakah properti sudah ada atau belum, sama halnya dengan unset() dan __unset()  fungsinya untuk menghapus properti tertentu, perbedaanya hanya jika isset()  dan unset()  merupakan global method bawaan php yang bisa digunakan dalam OOP dan Standar Kode, sedangkan __isset()  dan __unset()  interaksinya dengan OOP, binung ? mari kembali kita plototin kode dibawah, barangkali ada penjelasanya.

__isset() dan __unset()
__isset() dan __unset()

pada contoh program diatas, kita menggunakn isset()  untuk memeriksa apakah variable ban ada didalam class mobil, jika variable ban tidak ditemukan maka secara otomatis fungsi __unset()  akan dipanggil untuk menghapus variabel yang sudah pasti tidak ada, jika varibale ditemukan dan kita memanggil __unset()  maka __unset()  akan mengapus varibale tersebut, kurang kerjaan banget kan hehehe, sudah tau ga ada ngapain di hapus 😀

_toString()

well, saya rasa ini magic method yang terakhir untuk pembahasan kali ini, magic method __toString()  adalah method yang akan dipanggil ketika kita mencoba melakukan echo  atau print  out sebuah class atau object, misalnya kita melakukan echo new Mobil()  atau echo new Batman_Mobile() , jika tidak menggunakan magic method __toString()  akan terjadi Error seperti unable to convert object to String bla…bla…bla.., peran __toString()  secara pribadi menurut saya cukup penting, kita bisa menggunakan __toString()  untuk memeriksa apakah sebuah Class atau Object sudah siap diajak tempur atau belum :), well intinya __toString  akan menampilkan atau menjalankan sebuah perintah ketika kita melakukan echo atau print, nyok kita tengok kodenya

__toString()
__toString()

itulah beberapa kegunaan magic method yang ada dalam PHP, beberapa diantaranya cukup dan sangant berguna dalam kondisi tertentu, tetapi ada beberapa diantaranya juga sangat jarang sekali digunakan, entah itu karena memang tidak dibutuhkan atau karena magic method-nya yang kurang iklan :), well…well… mohon maaf jika masih kurang, harap dimaklumi, saya juga masih belajar.

Published by

Khairu Aqsara

Khairu Aqsara a Web Developer almost every day and enjoys writing about his experiences . If you need help with your next project you know where to look.