PHP Snippet : Mengenal Namespace
Haha malem malem mapir di webnya id-laravel dan nemuin artikel tentang namespace.. wkwk udah tau lama sih ni postingan, tapi baru sekarang saya mau re-post.. karna waktu itu belum punya blog ini :g. Jika kalian pernah belajar Java atau C#, maka namespace bukan merupakan hal baru. Tapi jika kalian seorang programmer fanatik PHP (saking fanatiknya tidak tertarik belajar bahasa pemrograman yang lain) maka namespace, yang baru muncul di PHP versi 5.3, merupakan mainan baru haha :v. Dan sebagaimana layaknya mainan baru, kita pasti penasaran apa sih yang bisa dilakukan mainan baru bernama namespace ini. So, mari kita jelajahi satu persatu bersama mantan saya.. :3
Apa Itu Namespace?
Apakah kalian pernah mengalami tidak bisa membuat sebuah class
hanya karena namanya sudah dipakai di tempat lain? Apakah kalian pernah menulis kode seperti di bawah ini hanya untuk memastikan bahwa nama function
yang kalian buat tidak bentrok dengan function
di tempat lain? biasanya sih kalo pake framework ci pernah :D
Atau kalian pernah menemukan nama class yang sangat panjang dan kelihatan seperti jemuran pakaian seperti ini:
Jika kalian pernah mengalami salah satu kejadian di atas, maka kalian patut bersyukur sekarang karena bahasa yang kita cintai ini akhirnya mengijinkan kita untuk menjadi programmer yang lebih berkelas. Dengan namespace, kalian ga perlu takut function
yang kalian buat memiliki nama yang sama dengan function
yang lain. Dengan namespace, kalian bisa memberi nama class
dengan lebih singkat dan jelas, tidak perlu lagi menambahkan prefix Embel_embel_ga_penting_. Dengan namespace, kalian bisa mengorganisis kode dengan lebih rapi dan terstruktur, sehingga lebih mudah di-maintenance.
Cara kerja namespace mirip dengan cara kerja folder dan file. Dalam satu folder kita tidak bisa membuat 2 buah file dengan nama yang sama. Tetapi hal tersebut bisa dilakukan jika foldernya berbeda. Misalnya kamu punya folder C:\Users\dadang dan C:\Users\icih, maka di masing-masing folder tersebut kalian bisa membuat file dengan nama yang sama, misalnya suratcinta.txt. Selanjutnya kalian bisa merefer kedua file tersebut dengan C:\Users\dadang\suratcinta.txt dan C:\Users\icih\suratcinta.txt. Jika tidak percaya silakan dicoba sendiri :) Namespace menjadi semacam pembungkus (encapsulation) untuk kode-kode di dalamnya, sehingga masing-masing kode memiliki identifier yang unik.
Bagaimana Membuat Namespace?
Untuk mempelajari bagaimana membuat namespace, mari kita praktekkan dengan contoh sederhana. Buat beberapa file php dengan struktur seperti berikut:
dan berikut code yng terdapat dalam file file tersebut :
dan ini untuk file yng di panggil
Jika kita jalankan file index.php, maka akan muncul error seperti berikut:
Yuhu mantan juga tau kalau kita ga boleh buat class dengan nama yang sama. Eits, tapi itu dulu pas bareng mantan. Sekarang hal tersebut mungkin dilakukan dengan menggunakan namespace. Saya ga tau apakah mantan mengikuti perkembangan PHP dan sudah mengetahui hal ini. :silly:
Untuk mengatasi error di atas, mari kita tambahkan namespace ke masing-masing class.
Refresh browser nya coba bro, masih error ga? Haha pasti elor :v, sama seperti file suratcinta.txt tadi, ketika kalian menggunakan namespace (membungkus file dengan folder), maka untuk mengakses semua resource dalam namespace tersebut kalian harus menulisnya dengan full path. Pada contoh di atas, jika hanya ditulis Student
saja maka akan terjadi kebingungan, yang dimaksud Student
itu yang mana. Apakah Student
itu yang ada di Meka atau Student
yang ada di RPL?
Untuk itu kita modif sedikit file index.php menjadi seperti ini:
Coba refresh kembali browser kalian dan perhatikan hasilnya.
Horeee selamat, kalian telah berhasil membuat namespace pertama kalian di PHP. Nih buat yang penasaran seperti saya, kenapa menggunakan karakter backslash '\'
sebagai karakter penanda namespace, silakan baca penjelasan resmi dari PHP.
Nah segitu aja dulu, kalo mau liat yang lebih bisa ke websitenya id-laravel.com :D
Sampai jumpa di postingan berikutnya :)) Semoga bermanfaat :D
Source : id-laravel.com
Comments