PHP Tutorial : Berkenalan dan PDKT Dengan Namespace di PHP

PHP namespace

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.

7 comments

  1. Pingback: Laravel Tutorial : Menggunakan Namespace Pada Aplikasi Berbasis Laravel | Ng`Blog Biar Gak GobloG – BlogNya Gede Lumbung

Leave a Reply

Your email address will not be published. Required fields are marked *