Ruang Nama PHP
Ruang Nama PHP
Namespace adalah kualifikasi yang memecahkan dua masalah berbeda:
- Mereka memungkinkan organisasi yang lebih baik dengan mengelompokkan kelas yang bekerja sama untuk melakukan tugas
- Mereka mengizinkan nama yang sama digunakan untuk lebih dari satu kelas
Misalnya, Anda mungkin memiliki satu set kelas yang menggambarkan tabel HTML, seperti Tabel, Baris dan Sel sementara juga memiliki set kelas lain untuk menggambarkan furnitur, seperti Meja, Kursi dan Tempat Tidur. Ruang nama dapat digunakan untuk mengatur kelas menjadi dua kelompok yang berbeda sementara juga mencegah dua kelas Tabel dan Tabel agar tidak tercampur.
Mendeklarasikan Namespace
Ruang nama dideklarasikan di awal file menggunakan namespace
kata kunci:
Sintaksis
Deklarasikan namespace bernama Html:
namespace Html;
Catatan: Deklarasi namespace
harus menjadi hal pertama dalam file PHP. Kode berikut tidak valid:
<?php
echo "Hello World!";
namespace Html;
...
?>
Konstanta, kelas, dan fungsi yang dideklarasikan dalam file ini akan menjadi milik namespace Html :
Contoh
Buat kelas Tabel di namespace HTML:
<?php
namespace Html;
class Table {
public $title = "";
public
$numRows = 0;
public function message() {
echo "<p>Table
'{$this->title}' has {$this->numRows} rows.</p>";
}
}
$table = new
Table();
$table->title = "My table";
$table->numRows = 5;
?>
<!DOCTYPE html>
<html>
<body>
<?php
$table->message();
?>
</body>
</html>
Untuk organisasi lebih lanjut, dimungkinkan untuk memiliki ruang nama bersarang:
Sintaksis
Deklarasikan namespace bernama Html di dalam namespace bernama Code:
namespace Code\Html;
Menggunakan Namespace
Kode apa pun yang mengikuti namespace
deklarasi beroperasi di dalam namespace, sehingga kelas yang termasuk dalam namespace dapat dipakai tanpa kualifikasi apa pun. Untuk mengakses kelas dari luar namespace, kelas harus memiliki namespace yang dilampirkan padanya.
Contoh
Gunakan kelas dari namespace HTML:
$table = new Html\Table()
$row = new Html\Row();
Ketika banyak kelas dari namespace yang sama digunakan secara bersamaan, akan lebih mudah untuk menggunakan namespace
kata kunci:
Contoh
Gunakan kelas dari namespace Html tanpa memerlukan Html\qualifier:
namespace Html;
$table = new Table();
$row = new Row();
Namespace Alias
Akan berguna untuk memberikan sebuah namespace atau kelas sebuah alias untuk membuatnya lebih mudah untuk menulis. Ini dilakukan dengan use
kata kunci:
Contoh
Berikan namespace alias:
use Html as H;
$table = new H\Table();
Contoh
Berikan kelas sebuah alias:
use Html\Table as
T;
$table = new T();