Welcome to Abdul Malik Ikhsan's Blog

PHP : avoid hard-coding with Reflection Class

Posted in Teknologi, Tutorial PHP by samsonasik on July 30, 2010

Reflection, dalam ilmu komputer berarti proses di mana program komputer dapat mengamati dan memodifikasi  strukturnya sendiri. Proses ini memonitor eksekusi program pada saat runtime. Manfaat reflection adalah, kita bisa mengontrol eksekusi program berdasarkan request yang diminta dalam situasi yang dinamis. Anggaplah kita mempunyai dua kelas, kelas X, dan kelas Y yang mengoperasikan method yang sama dengan hal yang berbeda ketika situasinya berbeda. Tanpa reflection, kita diharuskan membuat hard-code, kapan method dari class X dipakai, dan kapan method dari class Y dipakai.

Contoh kode program dalam PHP :

<?php
 //get request class...
 $getClass = (empty($_GET['class'])) ? "X" : $_GET['class'];
 if ($getClass!="X" && $getClass!="Y")
 $getClass = "X";

 class X
 {
 function doaThing()
 {
 echo "do a thing of class X";
 }
 }

 class Y
 {
 function doaThing()
 {
 echo "do a thing of class Y";
 }
 }

 //instantiate Reflection class, pass the class Name
 $reflectObj = new ReflectionClass($getClass);
 //get methodName ( same as class, can dinamic too )
 $method = $reflectObj->getMethod("doaThing");

 //exec ...
 $method->invoke($reflectObj->newInstance());

Untuk PHP 5.3, bisa saja kita panggil class dan method tersebut tanpa reflection, hanya saja, penerapan reflection tentu saja tidak terbatas pada hal-hal di atas. Masih banyak lagi penggunaan-penggunaan lain yang tentu saja ini akan membantu dalam eksekusi program yang terotomatisasi. List method dari class ini dapat di lihat di sini.

Sumber :
http://en.wikipedia.org/wiki/Reflection_%28computer_science%29
http://php.net/manual/en/book.reflection.php

Tagged with: