Home » PHP » OOP PHP : Namespace – Kode dan Contohnya

OOP PHP : Namespace – Kode dan Contohnya

by Hanifah Nurbaeti
by Hanifah Nurbaeti

Section Artikel

Namespaces PHP

Namespaces adalah kualifikasi yang menyelesaikan dua masalah berbeda, yaitu:

  1. Mereka memungkinkan pengorganisasian yang lebih baik dengan mengelompokkan kelas-kelas yang bekerja sama untuk melakukan tugas
  2. 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.
  */

You may also like