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

Advertisements
Tagged with:

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: