Namespace adalah cara untuk mengkualifikasikan set kode PHP untuk menyelesaikan dua masalah ini:
- Mengelompokkan beberapa class untuk melakukan hal tugas spesifik agar lebih terorganisir
- Membuat dua atau lebih class dapat memakai nama yang sama
Misalnya, Anda mungkin memiliki satu set class yang mendeskripsikan tabel HTML, seperti Table, Row, dan Cell sementara juga memiliki satu set class lain untuk mendeskripsikan furnitur, seperti Table, Chair, dan Bed. Namespace dapat digunakan untuk mengatur dan mengelompokkan dua set class tersebut menjadi dua grup berbeda sekaligus mencegah dua kelas dengan nama Table menjadi tercampur aduk.
Mendeklarasikan Namespace
Namaspace dideklarasikan di awal file menggunakan kata kunci namespace :
Sintaks
Deklarasikan namespace Html:
<?php
namespace Html;
?>
Catatan: Deklarasi namespace harus menjadi hal pertama dalam file PHP. Kode berikut tidak valid:
<?php
echo "Halo Dunia!";
namespace Html;
...
?>
Constant, class, dan fungsi yang dideklarasikan dalam file ini akan menjadi milik namespace Html:
Contoh
Buat kelas Table di namespace Html:
<?php
namespace Html;
class Table {
public $judul = "";
public $jumlahBaris = 0;
public function message() {
echo "<p>Table '{$this->judul}' adalah {$this->jumlahBaris} baris.</p>";
}
}
$table= new Table();
$table->judul = "Tabelku";
$table->jumlahBaris = 5;
?>
<!DOCTYPE html>
<html>
<body>
<?php
$table->message();
?>
</body>
</html>
Untuk pengelompokkan lebih lanjut, dimungkinkan untuk memiliki nested namespace:
Sintaks
Deklarasikan namespace bernama Html di dalam namespace bernama Code:
<?php
namespace Code\Html;
?>
Menggunakan Namespace
Kode apa pun yang mengikuti deklarasi namespace beroperasi di dalam namespace tersebut, sehingga class yang termasuk dalam namespace dapat dibuat instance-nya tanpa kualifikasi apa pun. Untuk mengakses class dari luar namespace, class harus memiliki namespace yang dilampirkan padanya.
Contoh
Gunakan class dari namespace Html:
<?php
include "Html.php";
$table = new Html\Table();
$table->judul = "Tabelku";
$table->jumlahBaris = 5;
$row = new Html\Row();
$row->jumlahKolom = 3;
?>
<html>
<body>
<?php $table->message(); ?>
<?php $row->message(); ?>
</body>
</html>
Ketika banyak class dari namespace yang sama digunakan pada waktu yang sama, akan lebih mudah untuk menggunakan kata kunci namespace:
Contoh
Gunakan class dari namespace Html tanpa memerlukan Html\qualifier:
<?php
namespace Html;
include "Html.php";
$table = new Table();
$table->judul = "Tabelku";
$table->jumlahBaris = 5;
$row = new Row();
$row->jumlahKolom = 3;
?>
<html>
<body>
<?php $table->message(); ?>
<?php $row->message(); ?>
</body>
</html>
Namespace Alias
Akan berguna untuk memberikan namespace atau class sebuah alias agar lebih mudah untuk menulis. Ini dapat dilakukan dengan kata kunci use:
Contoh
Berikan namespace sebuah alias:
<?php
include "Html.php";
use Html as H;
$table = new H\Table();
$table-> = "Tabelku";
$table->jumlahBaris = 5;
?>
<html>
<body>
<?php $table->message(); ?>
</body>
</html>
Contoh
Berikan alias pada class:
<?php
include "Html.php";
use Html\Table as T;
$table = new T();
$table->judul = "Tabelku";
$table->jumlahBaris = 5;
?>
<html>
<body>
<?php $table->message(); ?>
</body>
</html>
Tutorial sebelumnya : PHP Properti Static
Tutorial setelahnya : PHP Iterable
Semua Tutorial PHP : Tutorial PHP