Ahhh,,, apalagi itu namespace?? Itu yang muncul di benak saya setahun yang lalu ketika php 5.3 resmi dirilis. Ketika itu saya tidak terlalu begitu menaruh perhatian lebih pada fitur baru yang disematkan pada php. Dan beberapa minggu yang lalu, kebetulan ada teman yang meminta bantuan saya mengerjakan tugas C# di kampusnya. Saat itu juga, saya ingat kembali dengan fitur namespace yang ada di php. Ketika saya mencoba kembali meraba-raba C# yang sudah lama tidak saya jamah lagi, disana saya bertemu lagi dengan namespace. Saya baru paham saat itu juga, ohhh…ternyata ini toh fungsi namespace di php :D.
Hampir sama dengan namespace di C#. Sama juga dengan package di java atau actionscript pada flash. Tujuannya sama, mengelompokkan class. Menjadikan kode lebih rapi, terstruktur dan mudah dibaca. Jika kita coba melihat contoh package pada java, class disimpan ke dalam folder yang namanya berbeda. Contohnya seperti berikut :
import com.pckg.mobil.toyota import com.pckg.mobil.lamborghini import com.pckg.mobil.bmw
Pada C#, biasanya seperti berikut :
using System; using System.Text; using System.Console;
Dengan namespace, kita bisa memberikan nama class yang sama pada setiap foldernya, tanpa takut muncul pesan error seperti di bawah ini ketika memanggil dan menggunakan class tersebut.
Fatal error: Cannot redeclare class.......
Sekarang kita coba untuk mengimplementasikan penggunaan namespace yang sederhana di php. Monggo, buat rekan-rekan yang ingin berkenalan lebih jauh tentang namespace di php dan keunggulannya, bisa mengunjungi link berikut : http://php.net/manual/en/language.namespaces.php.
Global Namespace
Jika kita tidak mendeklarasikan nama namespace dan mendefiniskan class secara umum seperti contoh $car = new Car;, class tersebut akan otomatis masuk ke global namespace. Misalnya seperti kode di bawah ini :
<?php include_once 'Car.php'; $car = new Car; $car->drive();
Atau dengan penulisan lainnya seperti di bawah ini, dengan menambahkan backslah \, dimana akan memanggil class Car dari global namespace.
<?php include_once 'Car.php'; $car = new \Car; $car->drive();
Namespace
Sekarang bagaimana kita memanggil 4 buah class dengan nama yang sama yaitu ‘Car’ tanpa muncul pesan error seperti yang saya sebutkan di atas. Kita coba untuk membuat 3 buah class tambahan dengan nama yang sama, yaitu “Car”. Dan juga mempunyai method yang sama yaitu “drive()”. Kita pisahkan ke dalam beberapa folder dan struktur foldernya seperti di bawah ini :
index.php Car.php Bmw - Car.php Lambhorgini - Car.php Toyota - Car.php
Bmw/Car.php
<?php
namespace Bmw; //namespace kita deklarasikan terlebih dahulu
class Car {
function drive()
{
echo 'Saya naik, BMW';
}
}
Lamborghini/Car.php
<?php
namespace Lamborghini; //namespace kita deklarasikan terlebih dahulu
class Car {
function drive()
{
echo 'Saya naik, Lamborghini';
}
}
Toyota/Car.php
<?php
namespace Toyota; //namespace kita deklarasikan terlebih dahulu
class Car {
function drive()
{
echo 'Saya naik, Toyota';
}
}
index.php
<?php include_once 'Car.php'; include_once 'Bmw/Car.php'; include_once 'Lamborghini/Car.php'; include_once 'Toyota/Car.php'; $car = new \Car; $car->drive(); $bmw = new \Bmw\Car; $bmw->drive(); $lamborghini = new \Lamborghini\Car; $lamborghini->drive(); $toyota = new \Toyota\Car; $toyota->drive();
Jika kita jalankan file index.php di browser, maka akan muncul tampilan seperti berikut tanpa adanya pesan error seperti biasanya 😀
Saya naik, mobil Saya naik, BMW Saya naik, Lamborghini Saya naik, Toyota
Jreeeenggg, sekarang dalam sekali jalan kita sudah bisa mengendarai 4 mobil secara bersamaan ;). Framework masa kini seperti laravel di dalam core system nya telah menggunakan namespace. Perlahan tapi pasti, bahasa pemrograman PHP mulai melangkah maju untuk bersaing dengan java, C#, ruby dan lainnya :D.

Nice Tutorial… Thanks gan…!!!
mantap om …
Wow… that’s great!…Bli
Broo Mau Nanya Kalo Buat Php Untuk Blog bisa gan 😀
Pingback: Laravel Tutorial : Menggunakan Namespace Pada Aplikasi Berbasis Laravel | Ng`Blog Biar Gak GobloG – BlogNya Gede Lumbung
nice posting , , ,
Mantap gannn