Pada tutorial kali ini akan membahas tentang apa itu namespace pada php.
Namespace digunakan untuk menghindari konflik dari penamaan Class yang sama, karena terkadang para Developer menggunakan nama Class yang sama namun dalam kategori yang berbeda.
Ketika PHP masih dalam versi kurang dari 5.3, hal ini menjadi masalah, namun sudah diperbaiki oleh PHP versi 5.3 keatas.
Misal kita memiliki Mobil dengan merek yang berbeda – beda, yakni Audi , Ferari, Ford dan Lamborgini, yang ke masing – masing kita buat foldernya dan di dalamnya kita buat file bernama mobil.php, dan di dalam file mobil.php ini kita buat Class bernama Mobil. Terakhir, semua Class Mobil ini akan kita panggil satu per satu dalam sebuah file yang akan di letakkan di luar folder mobil – mobil tadi, bernama index.php.
Ke semua merek Mobil di atas saya buat ke dalam bentuk folder dengan kategori yang berbeda – beda. Berikut gambarannya :
Lalu pada tiap file mobil.php yang berada pada tiap folder audi, ferari, ford, dan lamborgini saya isi dengan nama Class yang sama, yakni Class Mobil.
Pada folder audi/mobil.php.
1 2 3 4 5 6 7 8 9 |
<?php class Mobil{ public function cetak(){ return 'Ini adalah method() dari Mobil Audi'; } } ?> |
Pada folder ferari/mobil.php.
1 2 3 4 5 6 7 8 9 |
<?php class Mobil{ public function cetak(){ return 'Ini adalah method() dari Mobil Ferari'; } } ?> |
Pada folder ford/mobil.php.
1 2 3 4 5 6 7 8 9 |
<?php class Mobil{ public function cetak(){ return 'Ini adalah method() dari Mobil Ford'; } } ?> |
Pada folder lamborgini/mobil.php.
1 2 3 4 5 6 7 8 9 |
<?php class Mobil{ public function cetak(){ return 'Ini adalah method() dari Mobil Lamborgini'; } } ?> |
Kemudian buat sebuah file di luar folder, bernama index.php.
Kemudian pada file index.php silahkan coding dengan code di bawah ini :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?php require 'audi/mobil.php'; require 'ferari/mobil.php'; require 'ford/mobil.php'; require 'lamborgini/mobil.php'; $Audi = new Mobil; $Ferari = new Mobil; $Ford = new Mobil; $Lamborgini = new Mobil; ?> <p><?= $Audi->cetak(); ?></p> <p><?= $Ferari->cetak(); ?></p> <p><?= $Ford->cetak(); ?></p> <p><?= $Lamborgini->cetak(); ?></p> |
Kemudian anda jalankan, maka akan muncul pesan error seperti ini :
Berdasarkan pesan error di atas, anda tidak dapat mendeklarasikan ulang Class Mobil. Padahal isi dari Class Mobil ini berbeda – beda, namun hanya nama Class – nya saja yang sama. Maka anda dapat mengatasinya dengan mengatur ulang path – nya (jalur), nah untuk mengatur ulang kembali path – nya, anda dapat menggunakan keyword namespace.
Sekarang, tambahkan code namespace nama_path pada masing – masing Class Mobil dan letakkan di atas nama Class.
Pada folder audi/mobil.php.
1 2 3 4 5 6 7 8 9 10 11 |
<?php namespace audi; class Mobil{ public function cetak(){ return 'Ini adalah method() dari Mobil Audi'; } } ?> |
Pada folder ferari/mobil.php.
1 2 3 4 5 6 7 8 9 10 11 |
<?php namespace ferari; class Mobil{ public function cetak(){ return 'Ini adalah method() dari Mobil Ferari'; } } ?> |
Pada folder ford/mobil.php.
1 2 3 4 5 6 7 8 9 10 11 |
<?php namespace ford; class Mobil{ public function cetak(){ return 'Ini adalah method() dari Mobil Ford'; } } ?> |
Pada folder lamborgini/mobil.php.
1 2 3 4 5 6 7 8 9 10 11 |
<?php namespace lamborgini; class Mobil{ public function cetak(){ return 'Ini adalah method() dari Mobil Lamborgini'; } } ?> |
Kita sudah merubah path masing – masing Class menggunakan namespace, sekarang kita rubah code yang ada pada file index.php menjadi seperti ini :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?php require 'audi/mobil.php'; require 'ferari/mobil.php'; require 'ford/mobil.php'; require 'lamborgini/mobil.php'; $Audi = new audi\Mobil; $Ferari = new ferari\Mobil; $Ford = new ford\Mobil; $Lamborgini = new lamborgini\Mobil; ?> <p><?= $Audi->cetak(); ?></p> <p><?= $Ferari->cetak(); ?></p> <p><?= $Ford->cetak(); ?></p> <p><?= $Lamborgini->cetak(); ?></p> |
Perhatikan pada script :
1 2 3 4 |
$Audi = new audi\Mobil; $Ferari = new ferari\Mobil; $Ford = new ford\Mobil; $Lamborgini = new lamborgini\Mobil; |
Dimana saya pun turut merubah path dari masing – masing object. Jadi anda juga harus merubah path – nya tergantung dari nama namespace\nama_class. Dan di bawah ini adalah hasil dari kode sumber di atas :
Demikian Apa Itu Namespace Pada PHP, silahkan kunjungi tutorial pemrograman berbasis objek lainnya, seperti :
6 thoughts on “Apa Itu Namespace Pada PHP”
terima kasih gan tutorialnya membantu tugas kuliah saya… izin copas ya gan, paling saya edit2 dikit
terima kasih gan tutorialnya membantu saya dalam belajar php, kalau boleh request buat tutorial tentang get and setter dong gan di php hehehe
hhe sama2 gan, siap gan saya tampung dlu ya requestnya
thanks bro
Sama2 gan