Welcome to Abdul Malik Ikhsan's Blog

Namespace ‘jadi-jadian’ ala PHP

Posted in Tutorial PHP by samsonasik on October 20, 2009

Namespace dapat dikatakan container yang mengelompokkan source code. Sejak lama, dalam Java telah kita kenal namespace, berupa penggunaan package di mana ketika kita mendefinisikan, misalnya, package org.postgresql , berarti class yang dipanggil berada dalam folder org/postgresql. Bagaimana dengan php ? Di php 5.3, namespace sudah mulai diperkenalkan, hanya saja, pendefinisian-nya menjadi rancu ketika kita masih tetap membutuhkan require. Lah, terus buat apa ada namespace? Tentu saja gunanya untuk pengelompokan file sehingga lebih dapi dan mudah untuk ditrace. Tentu saja kita ingin hal lain dong selain hal tersebut. Nah, untuk itu, perlu ada nya trik khusus, seperti di bawah ini.

Anggap saja kita mempunyai struktur direktori seperti di bawah ini :
namespacer Nah, yang kita perlukan adalah trik penggunaan function __autoload dalam php, yang akan mendefinisikan hal2 yg harus dilakukan ketika sebuah class diinstansiasi menjadi sebuah object.

Tentu penggunaan function __autoload ini bukan tanpa aturan. sebagai contoh, dalam file TestClass.php, saya buat sebuah class bernama org_samsonasik_TestClass , hal ini berguna untuk pemisahan folder nantinya.
source code TestClass.php :

<?php
 class org_samsonasik_TestClass{
 public function __construct($args)
 {
 echo $args ;
 }
 }

Nah, dalam file pemanggilnya, kita buat function __autoload :
sourcecode index.php

<?php

function __autoload($class)
{
 $file = str_replace("_","/",$class.".php");
 require_once $file;
}

$test = new org_samsonasik_TestClass("test");

ketika pemanggilan new org_samsonasik_TestClass, berarti telah merequire folder2 dalam package dengan akal-akalan function __autoload tersebut. Fungsi inilah yg digunakan seperti pada framework Zend.