Section Artikel
Namespaces PHP
Namespaces adalah kualifikasi yang menyelesaikan dua masalah berbeda, yaitu:
- Mereka memungkinkan pengorganisasian yang lebih baik dengan mengelompokkan kelas-kelas yang bekerja sama untuk melakukan tugas
- Mereka memungkinkan nama yang sama digunakan untuk lebih dari satu kelas
Misalnya, kita memiliki satu set kelas yang mendeskripsikan tabel HTML, seperti Tabel, Baris dan Sel sementara kita juga memiliki set kelas lain untuk mendeskripsikan furnitur, seperti Meja, Kursi dan Tempat Tidur. Namespaces dapat digunakan untuk mengatur kelas menjadi dua kelompok yang berbeda dan juga mencegah dua kelas Tabel dan Tabel agar tidak tercampur.
Mendeklarasikan Namespace
Namespaces dideklarasikan di awal file menggunakan kata kunci namespace
:
Sintaksis
Deklarasikan namespace yang disebut 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>Tabel '{$this->title}' saya memiliki {$this->numRows} baris.</p>"; } } $table = new Table(); $table->title = "My table"; $table->numRows = 5; ?> <!DOCTYPE html> <html> <body> <?php $table->message(); ?> </body> </html> //Output : Tabel 'My Table' memiliki 5 baris.
Untuk organisasi lebih lanjut, dimungkinkan untuk memiliki namespace bersarang:
Sintaksis
Deklarasikan namespace bernama Html di dalam namespace bernama Code:
namespace Code\Html;
Menggunakan Namespaces
Kode apa pun yang mengikuti deklarasi namespace
beroperasi di dalam namespace, sehingga kelas yang termasuk dalam namespace dapat dibuat instance-nya tanpa qualifier apa pun. Untuk mengakses kelas dari luar namespace, kelas tersebut harus memiliki namespace yang terpasang padanya.
Contoh
Gunakan kelas dari namespace Html:
<?php namespace Html; class Table { public $title = ""; public $numRows = 0; public function message() { echo "<p>Tabel '{$this->title}' Memiliki {$this->numRows} baris.</p>"; } } class Row { public $numCells = 0; public function message() { echo "<p>Baris tersebut {$this->numCells} sel.</p>"; } } ?> /*Output Tabel 'Tabel saya' memiliki 5 baris. Baris tersebut memiliki 3 sel. */
Saat banyak kelas dari namespace yang sama digunakan pada saat yang sama, lebih mudah menggunakan kata kunci namespace:
Contoh
Gunakan kelas dari namespace Html tanpa perlu Html \ qualifier:
<?php namespace Html; include "Html.php"; $table = new Table(); $table->title = "My table"; $table->numRows = 5; $row = new Row(); $row->numCells = 3; ?> <html> <body> <?php $table->message(); ?> <?php $row->message(); ?> </body> </html> /*Output Tabel 'Tabel saya' memiliki 5 baris. Baris tersebut memiliki 3 sel. */
Alias Namespace
Memberi nama alias kelas atau namespace akan berguna agar lebih mudah ditulis. Ini dilakukan dengan menggunakan kata kunci use
:
Contoh
Beri namespace alias:
<?php namespace Html; class Table { public $title = ""; public $numRows = 0; public function message() { echo "<p>Tabel '{$this->title}' memiliki {$this->numRows} baris.</p>"; } } class Row { public $numCells = 0; public function message() { echo "<p>Baris tersebut {$this->numCells} sel.</p>"; } } ?>
<?php include "Html.php"; use Html as H; $table = new H\Table(); $table->title = "My table"; $table->numRows = 5; ?> <html> <body> <?php $table->message(); ?> </body> </html> /*Output Tabel 'Tabel saya' memiliki 5 baris. */
Contoh
Beri kelas sebuah alias:
<?php include "Html.php"; use Html\Table as T; $table = new T(); $table->title = "My table"; $table->numRows = 5; ?> <html> <body> <?php $table->message(); ?> </body> </html> /*Output Tabel 'Tabel saya' memiliki 5 baris. */