AMU OFFICIAL

Mengenal Namespace OOP PHP

Share to

Namespace

Namespace di PHP adalah cara untuk mengatur kelompok kelas, antarmuka, fungsi, dan konstanta sehingga nama yang sama dapat digunakan dalam konteks berbeda tanpa konflik.  Fitur ini sangat berguna ketika mengembangkan aplikasi besar yang mungkin menyertakan kode dari berbagai sumber dan Anda ingin menghindari konflik nama.

Membuat alias atau nama pendek untuk kelas atau entitas yang nama lengkapnya panjang dan kompleks.

Sejarah penggunaan namespace dimulai ketika para programmer ingin berbagi kode dapat digunakan oleh satu tim. Namun, PHP mengharuskan nama kelas yang unik, dan penamaan kelas yang sama akan menimbulkan konflik.  Oleh karena itu, jika kita  memakai third party library yang memiliki class User, maka kita tidak dapat membuat kelas bernama User juga.

Awalnya, masalah ini diatasi dengan menambahkan underscore atau ditambah dengan huruf lain agar terbaca unik, hal ini mengibatkan nama class menjadi yang sangat panjang.   Namun setelah rilisnya PHP versi 5.3 penggunaan namespace sudah dapat mengatasi untuk hal tersebut.

Namespace adalah perintah khusus yang digunakan untuk menghindari konflik dengan memberi nama kelas yang sama.

Perintah namespace memberi pengembang program lebih banyak kebebasan dalam merancang struktur program mereka, bahkan ketika ada kelas dengan nama  yang sama yang dipanggil pada waktu yang sama.

Mengapa menggunakan namespace?

Namespace memungkinkan Anda untuk:

Kelompokkan kode terkait agar lebih mudah dipahami dan dikelola.

Hindari konflik nama antara kode Anda dan perpustakaan pihak ketiga.

perhatikan contoh berikut ini :

Gambar diatas saya memiliki folder utama yaitu Namespace, kemudian dialamnya sub-sub folder yaitu App, Inc dan Layout. masing-masing dari sub-sub folder tersebut memiliki nama file dan class yang sama yaitu Mahasiswa.

App/Mahasiswa.php
Class Mahasiswa {

    function __construct(){
         echo “Saya app/Mahasiswa.php”;
    }
}
Inc/Mahasiswa.php
Class Mahasiswa {
    function __construct(){
         echo “Saya inc/Mahasiswa.php”;
    }
layout/Mahasiswa.php
Class Mahasiswa {
    function __construct(){
         echo “Saya layout/Mahasiswa.php”;
    }
}
Namespace/Index.php
<?php
include “app/Mahasiswa.php”;
include “inc/Mahasiswa.php”;
include “layout/Mahasiswa.php”;
$app = new App\Mahasiswa();
echo “<br>”;
$inc = new inc\Mahasiswa();
echo “<br>”;
$layout = new layout\Mahasiswa();

Ketika file index.php dijalan, dimana file tersebut memanggil file Mahasiswa.php dari masing-masing folder, maka dapat dipastikan layar menampilkan pemberitahuan error. Hal ini karena class mahasiswa tidak bisa ditampilkan bersamaan.

Nah, sekarang bagaimana mengatasi hal ini? Disinilah peran Namespace.

Tambahkan Namespace pada setiap file menjadi seperti ini :

App/Mahasiswa.php
Class Mahasiswa {

    function __construct(){
         echo “Saya app/Mahasiswa.php”;
    }
}
Inc/Mahasiswa.php
Class Mahasiswa {
    function __construct(){
         echo “Saya inc/Mahasiswa.php”;
    }
layout/Mahasiswa.php
Class Mahasiswa {
    function __construct(){
         echo “Saya layout/Mahasiswa.php”;
    }
}
Namespace/Index.php
<?php
include “app/Mahasiswa.php”;
include “inc/Mahasiswa.php”;
include “layout/Mahasiswa.php”;
$app = new App\Mahasiswa();
echo “<br>”;
$inc = new inc\Mahasiswa();
echo “<br>”;
$layout = new layout\Mahasiswa();

Setelah ditambahkan perintah namespace, ketika dipanggil dalam file yang sama yaitu index.php, walaupun dengan nama class yang sama, maka sistem tetap berjalan dengan baik.

Sumber : php.net  medium

Exit mobile version