1. Pendahuluan
Halo teman-teman semua. apa akabar? mudah-mudahan dalam keadaan sehat dan bahagia. Kali ini kita akan membahas sebuah fitur yang dapat membantu kita dalam penamaan kelas. Sebelum kita membahas mengenai namespace mari kita pahami dahulu bahwasannya dalam php tidak membolehkan ada nama kelas yang sama. Kapan nama kelas bisa sama dalam satu aplikasi milik kita? sekarang coba anda cari contoh nya sendiri.
Baik, mungkin anda sudah menemukan jawaban anda sendiri. Atau mungkin sama dengan jawaban saya. Penggunaan nama kelas yang sama bisa terjadi jika kita menggunakan kode program orang lain third party istilanya. Saat ini banyak programmer yang berbagi koding mereka dan bisa digunakan orang lain secara geratis. Begitulah analoginya. Kode program milik orang lain tersebut bisa saja memiliki nama kelas yang sama dengan kita (mungkin satu guru, hehe). Nah hal tersebut tentunya menjadi masalah alias error. Solusinya tentu saja dapat mengubah atau menambahi nama kelas tersebut. Namun tentu saja akan repot bukan!. Nah disinalah peran dari namespace.
NameSpace adalah sebuah fitur yang membolehkan nama kelas yang sama digunakan dalam satu aplikasi. Misalnya kelas komputer . Kelas komputer berada dalam folder A, B, dan C dapat di inisiasi menjadi objek tanpa error. Hanya saja harus diberikan namespace yang berbeda. Oke langsung saja kita lihat implementasi sederhananya.
2. Tanpa Menggunakan NameSpace
Berikut ini contohnya saya memiliki dua buah kelas dengan nama kelas yang sama yaitu Komputer. Kelas Komputer yang pertama adalah milik saya yang berada di folder app . Sedangkan kelas Komputer yang kedua berada di folder library milik pihak ketiga. Lihat struktur folder berikut.
Ada tiga buah file di dalam aplikasi tersebut seperti terlihat pada gambar di atas. File tersebut adalah Komputer.php yang berada di folder app. Keludian file Komputer.php yang berada di folder library. Terakhir adalah file index.php yang berada di root folder.
// folder app
<?php
class Komputer
{
function __construct()
{
echo "Ini kelas Komputer Milik Saya";
}
}
// folder library
<?php
class Komputer
{
function __construct()
{
echo "Ini kelas Komputer Milik pihak ketiga";
}
}
//index.php
<?php
include "app/Komputer.php";
include "library/Komputer.php";
$a=new Komputer;
$b= new Komputer;
Setelah file index diakses maka akan tampil kesalahan Fatal error: Cannot declare class Komputer, because the name is already in use in. Pesan kesalahan tersebut mengatakan bahwa tidak boleh mendeklarasikan kelas komputer karena nama tersebut telah digunakan. Lalu bagaimana sulusinya? tentu saja menggunakan NameSpace.
3. Cara Menggunakan NameSpace
Untuk menggunakan namespace kita cukup menuliskannya diatas kelas. Keyword yang digunakan adalah namespace [spasi] nama. Maka php dapat membedakan kelas tersebut walaupun dengan nama yang sama.
// folder app
<?php
namespace app;
class Komputer
{
function __construct()
{
echo "Ini kelas Komputer Milik Saya";
}
}
// folder library
<?php
namespace library;
class Komputer
{
function __construct()
{
echo "Ini kelas Komputer Milik pihak ketiga";
}
}
Selanjutnya menginisiasi objek dengan namespace. Sedikit berbeda dari inisiasi objek biasanya. Kita perlu menambahkan nama namsepace sebelum nama kelas saat menginisasi objek.
//index.php
<?php
include "app/Komputer.php";
include "library/Komputer.php";
$a=new app\Komputer;
echo "<br>";
$b= new library\Komputer;
//Hasil:
//Ini kelas Komputer Milik Saya
//Ini kelas Komputer Milik pihak ketiga
Perlu diperhatikan saat menginisiasi objek. Penyebutan nama namspace di ikuti back slash (\). Jika tidak maka akan tampil pesan kesalahan.
4. Kesimpulan
Dari contoh di atas dapat ditarik beberapa kesimpulan berikut:
- Penggunaan nama kelas yang sama boleh dilakukan pada dua atau lebih nama kelas yang sama dengan namespace berbeda.
- Dalam sebuah aplikasi tidak menutup kemungkinan ada keinginan menamai kelas dengan nama yang sudah ada. Penamaan namespace bisa berdasarkan kategori dari kelas tersebut atau nama folder tempat kelas tersebut berada.
- Penggunaan namespace juga muncul karena penggunaan kode program pihak ketiga yang dewasa ini banyak membantu dalam pengembangan aplikasi yang lebih cepat.