Tutorial OOP Dasar Pada PHP

Namespace

Materi ini memiliki 1 buah lampiran. Namun Anda tidak dapat mengakses lampiran karena belum terdaftar di kursus ini. Klik disini untuk mendaftar.

Pada video ini kita akan membicarakan mengenai namespace. Nantinya kalau kita sudah menulis kode dengan skala proyek atau aplikasi, maka kode yang harus kita tulis akan menjadi banyak sekali. Dan dari kode yang banyak tersebut, bisa saja terjadi duplikasi nama sehingga menyebabkan error. Sebagai contoh, misalkan kita hendak membuat aplikasi untuk sekolah. Kemudian kita hendak menuliskan kode untuk Membership kegiatan ekstrakulikuler. Akan ada beberapa membership yang berbeda. Misalnya membership untuk klub komputer, membership untuk klub seni, membership untuk klub Olah Raga, dan lain-lain. Namun kalau kita menuliskan semua kodenya menggunakan nama Membership, maka pada PHP terjadi fatal error karena PHP tidak memperbolehkan penggunaan nama yang sama lebih dari 1 kali.

Disinilah kegunaan dari fitur Namespace. Dengan menggunakan namespace, maka kita bisa mengelompokkan kode berdasarkan klasifikasinya. Asalkan kode berada di dalam namespace yang berbeda, kita bisa menggunakan nama yang sama.

Namespace digunakan bukan hanya untuk menulis kode kelas saja ya. Namun bisa juga digunakan untuk menulis function dan konstan. Dan nantinya kalau kita hendak mengakses kode yang berada di dalam namespace, maka kita harus menyebutkan nama namespace-nya. Namespace bersifat nested, jadi kita bisa menambahkan namespace di dalam namespace.

Berikut adalah contoh kode namespace. Kita bisa membuat namespace dengan cara menuliskan kata kunci namespace diikuti oleh nama namespace-nya. Misalkan disini kita membuat namespace dengan nama Helper. Tulislah namespace di bagian paling atas file, maka semua kode yang berada di dalam file ini menjadi berada di dalam namespace Helper. Nantinya pada saat kita hendak menggunakan kelas MathHelper, kita sudah tidak bisa menuliskan langsung nama kelasnya. Melainkan kita harus menulis nama namespacenya terlebih dahulu, sehingga tulisannya menjadi Helper\MathHelper.

Ini adalah contoh lain dari cara menggunakan namespace. Apabila kita ingin menuliskan 2 namespace dalam file yang sama, maka kita menambahkan kurung kurawal setelah kata kunci namespace. Artinya semua kode yang berada di dalam kurung kurawal akan berada di dalam namespace. Misalkan kita membuat kelas Membership di dalam namespace Club\Art. Nantinya pada saat kita hendak menggunakan kelas tersebut, maka kita harus menyebut nama namespacenya terlebih dahulu menjadi Club\Art\Membership.

Kalau teman-teman sedang melihat source code milik orang lain, terkadang teman-teman akan menemukan ada yang menulis namespace langsung diikuti oleh kurung kurawal tanpa ada nama namespace-nya. Ini disebut Global Namespace. Ini adalah cara default yang digunakan oleh PHP kalau kita tidak menuliskan namespace sama sekali. Nantinya kalau kita hendak menuliskan nama kelasnya, kita tinggal panggil saja langsung nama kelasnya seperti biasa. Sebenarnya tidak ada manfaat tambahan untuk menuliskan kata kunci namespace seperti ini, namun masih ada beberapa programmer yang melakukannya.

Agar lebih jelas, kita coba praktek coding. Kita buat file baru pada folder class, kita beri nama Membership.php. Di dalamnya kita buka tag php. Lalu kita buat kelas Membership. Yang isinya ada public function info(): void. Di dalam function kita echo saja "Klub Olah Raga\n". Misalkan kelas ini adalah untuk keanggotaan klub olah raga.

Kita copy paste kodenya. Lalu isi functionnya kita ubah menjadi "Klub Kesenian\n". Misalkan kelas Membership yang kedua ini adalah untuk klub kesenian.

Selanjutnya kita buat file baru main.php. Kita buka tag PHP. Lalu kita require_once('class/Membership.php'). Kita coba jalankan. Dan disini saja kita sudah mendapatkan fatal error ya. Karena nama kelas Membership digunakan sebanyak 2 kali.

Jadi disini kita mesti melakukan pengelompokkan terhadap kelas Membership. Kita bisa menggunakan namespace. Pada kelas yang pertama, kita gunakan namespace Club\Sport. Kita pindahkan kode kelasnya ke dalam namespace. Sedangkan untuk kelas yang kedua kita gunakan namespace Club\Art. Kita pindahkan juga kelasnya ke dalam namespace.

Nah, sekarang kalau kita jalankan main.php sudah tidak error ya. Namun kita masih belum menggunakan kode dari kelas Membership-nya.

Biasanya kalau kita ingin membuat objek dari kelas Membership, kita menulis kodenya seperti ini ya.

$membership = new Membership();

Namun kalau kita jalankan, ternyata kita mendapatkan error karena kelas Membership tidak ditemukan. Hal ini terjadi karena kita menaruh kode kelas Membership di dalam namespace. Jadi kalau kita hendak menggunakan kodenya, maka kita harus menambahkan nama namespace-nya sehingga nama kelasnya menjadi Club\Sport\Membership.

Sekarang sudah bisa berjalan dengan benar ya. Selanjutnya kita coba panggil method info(). Sekarang sudah muncul tulisan Klub Olah Raga.

Untuk penulisan nama namespace dan nama kelasnya, kita boleh saja menambahkan backspace di bagian paling depannya. Kode tetap berjalan normal ya. Yang penting simbol yang kita gunakan adalah backslash. Jangan terbalik dengan garing miring biasa. Kalau kita menggunakan slash maka kita mendapatkan error.

Apabila kita ingin menggunakan membership dari klub kesenian, maka kita tinggal mengganti namespacenya menjadi Club\Art. Dan tulisan yang muncul juga sudah berganti menjadi Klub Kesenian.

Kita sudah mencoba menggunakan namespace untuk mengelompokkan kelas ya. Namun namespace juga bisa digunakan untuk mengelompokkan konstanta dan function. Pertama kita coba konstanta terlebih dahulu ya.

Kita tambahkan konstanta pada namespace Club\Sport. Misalkan const VERSION = '1.0'. Nah, untuk memanggil konstanta pada main, kita tidak bisa langsung menggunakan nama konstantanya VERSION ya. Kalau misalkan kita var_dump. Maka kita mendapatkan fatal error karena VERSION tidak ditemukan. Kita harus menambahkan nama namespace-nya menjadi Club\Sport\VERSION.

Kita juga bisa menambahkan konstanta yang sama pada klub art. Kita copy paste saja ya kode konstantanya. Namun kita ubah nilainya pada art, misalkan menjadi '2.0'. Kita lihat kembali ke main.php. Kalau kita jalankan saat ini tidak error ya. Kita mendapatkan hasil 1.0 walaupun ada 2 buah konstanta dengan nama yang sama VERSION. Namun kalau kita ubah namespacenya menjadi Club\Art, maka kita mendapatkan nilai '2.0'.

Kita juga bisa menambahkan function pada namespace. Misalkan pada namespace Club\Sport kita tambahkan function test(): void. Isinya kita echo saja "Namespace club sport\n". Kemudian kita coba panggil di main.php ya. Kalau kita tulis langsung nama functionnya test(), maka kita mendapatkan hasil bahwa PHP tidak mengenal function test. Seperti biasa, pada nama functionnya perlu kita tambahkan namespace ya. Jadi kalau kita tambahkan menjadi Club\Sport\test(), maka function dapat berfungsi dengan benar.

Kita masuk ke topik selanjutnya. Apabila kita sering menggunakan kode pada namespace, maka kita malah kesulitan karena setiap kali harus menuliskan nama namespace-nya. Oleh karena itu, lebih baik kita melakukan import kode dari namespace agar menjadi global, sehingga bisa langsung kita gunakan tanpa perlu menyebutkan nama namespace. Untuk melakukan hal ini, kita bisa menggunakan kata kunci use.

Nama kode yang kita import menggunakan use, tidak harus menggunakan nama aslinya. Kita bisa menggantinya menjadi nama alias dengan menambahkan kata kunci as. Kata kunci as ini juga bisa kita gunakan untuk mengakali masalah yang timbul karena menggunakan nama yang sama berkali-kali.

Ini adalah contoh kode yang menggunakan use. Apabila kita hendak mengimport kelas dari namespace, kita sebutkan saja kata kunci use diikuti oleh nama namespace backspace nama kelas. Kemudian kita bisa langsung menggunakan kelas tersebut tanpa perlu menyebutkan nama namespace.

Apabila kita hendak mengimport dua kelas yang menggunakan nama yang sama dari namespace yang berbeda, maka kita perlu mengubah nama kelasnya agar tidak terjadi penamaan ganda. Kita bisa menggunakan kata kunci as untuk mengganti nama kelasnya, misalkan disini nama kelas Membership kita ganti menjadi ArtMembership.

Untuk mengimport function, kita perlu menggunakan kata kunci use function. Dan yang terakhir, untuk mengimport konstanta, kita menggunakan kata kunci use const.

Kita langsung coba praktek ya. Misalkan yang pertama ini kita hendak menggunakan kelas Membership pada namespace Club\Sport. Pada kode lama kita perlu menyebutkan nama namespacenya terlebih dahulu. Untuk menyingkat kode ini, kita bisa mengimport dahulu kelas tersebut dengan menggunakan perintah use Club\Sport\Membership. Maka selanjutnya untuk menggunakan kelas Membership, kita bisa langsung menyebutkan nama kelas tanpa perlu menyebutkan nama namespace-nya.

Apabila kita mengimport juga kelas Club\Art\Membership, maka kita kembali lagi dihadapkan ke masalah penamaan ganda. Sehingga kita perlu mengganti minimal salah satu namanya. Misalkan kita ganti saja nama pada klub art menjadi ArtMembership. Sekarang kode sudah tidak error ya. Namun kalau kita hendak menggunakan kelasnya, kita harus menyebutnya dengan nama ArtMembership.

Kita coba lagi untuk mengimport function ya. Kita harus menggunakan kata kunci use function, diikuti oleh nama namespace Club\Sport backslash nama function test. Selanjutnya untuk menggunakan function kita tinggal sebutkan saja langsung nama functionnya test.

Dan yang terakhir kita coba untuk mengimport konstata. Untuk mengimport konstanta kita gunakan kata kunci use const, diikuti oleh nama namespace Club\Sport baclslah nama konstanta VERSION. Untuk mencetak nilai konstanta, kita tinggal ketik saja echo diikuti oleh nama konstanta. Agar rapi kita tambahkan PHP_EOL.

2 Jam 41 Menit

Dengan menggunakan fasilitas tanya jawab, maka Anda bisa bertanya dan akan dijawab langsung oleh instruktur kursus.

Anda belum terdaftar pada kursus ini sehingga tidak bisa mengajukan pertanyaan.