Tutorial OOP PHP Bagian 15 – Namespace

Namespace atau penentuan tempat file berada diperlukan untuk mencegah name collision, memiliki nama Class atau nama file yang sama pada satu aplikasi.

Misalnya kita memiliki satu file dengan banyak Class di dalamnya : Calculator{}, Mobil{}, Toyota{}, Honda{}.

Kenyataannya proyek php tidak hanya dijalankan pada satu file saja, namun terpisah-pisah agar lebih mudah dimanage.

PHP memiliki standard yang dinamakan PSR (PHP Standard Recommendation). Tujuannya agar file PHP mudah dipertukarkan. Di antaranya terdapat standar PSR-4, yang menyebutkan bahwa sebuah class harus disimpan pada file-nya masing-masing, dan nama class harus sama dengan nama file. Aturan penamaan nama class dan nama file ini akan berguna saat kita nanti melakukan autoload dengan composer.

Kode di atas akan kita coba untuk ubah menjadi standard PSR.

1. Buat file Calculator.php

2. Buat folder Mobil dan file Mobil.php di dalamnya.

3. Buat file Toyota.php dan Honda.php di dalam folder Mobil.

4. Buat file bernama index.php di atas folder yang berada file Calculator.php

Tutorial OOP PHP namespace

File index.php sekarang menjadi gerbang masuk ke aplikasi.

Mendefinisikan Namespace dan Cara Pemanggilannya

Contoh di atas masih memungkinkan terjadinya name collision, karena itu kita harus memberikan namespace pada setiap Class.

Calculator.php ditambahkan namespace yang kita beri nama Dummy, menjadi :

Mobil.php, Toyota.php, Honda.php menjadi :

Ubah index.php untuk menyertakan namespace Class :

Hasilnya akan sama dengan sebelumnya.

Mengimport Namespace

Agar penulisan lebih mudah, kita bisa mengimport dulu namespace seperti ini.

Ubah Calculator.php menjadi :

Ubah index.php menjadi :

Membuat Alias pada Namespace

Supaya lebih mudah diingat, kita bisa menggunakan Alias sebagai pengganti namespace.

Ubah index.php menjadi :

Hasilnya akan sama saja.

Leave a Reply

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.