Thursday, September 8, 2011

PHP Annotation

Annotation memberikan meta data dari code yang dibuat oleh programmer sehingga code dapat lebih rapi dan mudah untuk di manage. Selain itu Annotation memberikan jalan pintas untuk boiler plate code. Tapi sayang PHP sendiri tidak memiliki native support terhadap Annotation.

Tapi beruntung sekali terdapat sebuah library yang memberikan support untuk php yang meng extend class reflection dari php. Library dapat di download di http://code.google.com/p/addendum/.

Library Addendum tersebut memberikan support kepada php yang mana menambahkan fungsi dari comment menjadi menjadi fungsi annotation. Sehingga class / method / property dapat memiki annotation layak nya bahasa pemrograman lain.

Cara penggunaan library ini juga sangat mudah , library tinggal di include ke source code, gunakan comment sebagai annotation, dan kita siap memecah - mecah class dan mengambil meta data yang terdapat pada annotation.

Misalkan kita memiliki class AdminResource seperti berikut :

/**
 * @Secure("admin")
 */
class AdminResource{}

kemudian kita ekstrak meta data dari class tersebut dengan :

require_once(dirname(__FILE__).'/annotations.php');
require_once(dirname(__FILE__).'/AdminResource.php');

// buat descripsi anotasi dengan nama Secure
class Secure extends Annotation {}

// instantiate class AdminResource
$resources = new AdminResource();

// instantiate class ReflectionAnnotatedClass 
$annotatedReflection = new ReflectionAnnotatedClass($resources);

// ReflectionAnnotatedClass merupakan turunan dari ReflectionClass, 
// sehingga memiliki akses ke semua method dari ReflectionClass
echo $annotatedReflection->getName() . 
		" is accessible for  : " . 
		$annotatedReflection->getAnnotation('Secure')->value; 
Keluaran dari code tersebut adalah :
AdminResource is accessible for : Admin
Nah, annotasi tersebut juga dapat di deklarasikan pada method ataupun property dari class. Dengan penggunaan library ini, tentu sangat memudahkan programmer PHP untuk menciptakan sebuah program yang lebih rapi dan lebih mudah dibaca.

Dengan annotasi ini, PHP juga dapat di transformasi sehingga memiliki kemampuan serupa dengan Spring framework pada java. Termasuk juga dependency injection dapat juga di clone pada php. Di tulisan saya selanjut nya, akan saya gabungkan Codeigniter dan Annotation tersebut sehingga dapat melindungi resource dalam implementasinya bersama dengan ACL.

Have fun !

6 comments:

  1. I appreciate that you produced this wonderful article to help us get more knowledge about this topic.
    I know, it is not an easy task to write such a big article in one day, I've tried that and I've failed. But, here you are, trying the big task and finishing it off and getting good comments and ratings. That is one hell of a job done!



    Selenium training in bangalore
    Selenium training in Chennai
    Selenium training in Bangalore
    Selenium training in Pune
    Selenium Online training

    ReplyDelete
  2. Your good knowledge and kindness in playing with all the pieces were very useful. I don’t know what I would have done if I had not encountered such a step like this.
    Python Online training
    python Course institute in Chennai
    Python Course institute in Bangalore

    ReplyDelete
  3. Informative post indeed, I’ve being in and out reading posts regularly and I see alot of engaging people sharing things and majority of the shared information is very valuable and so, here’s my fine read.
    DevOps Training | Certification in Chennai | DevOps Training | Certification in anna nagar | DevOps Training | Certification in omr | DevOps Training | Certification in porur | DevOps Training | Certification in tambaram | DevOps Training | Certification in velachery

    ReplyDelete