Subruang Nama dalam OOP di PHP
Misalkan sekarang kita memiliki situasi yang lebih kompleks:
untuk admin perlu dibuat dua kelas Page
- satu dengan data halaman, dan yang kedua - dengan tampilan
data tersebut. Misalkan kelas pertama berada
di file /admin/data/page.php, dan yang kedua
- di file /admin/view/page.php.
Dalam pelajaran sebelumnya, kita telah memutuskan bahwa semua kelas dari folder
admin akan termasuk ke dalam ruang nama
Admin. Namun, sekarang di dalam
ruang nama yang sama kita memiliki konflik dua kelas.
Untuk menyelesaikan masalah, dapat dibuat tambahan
subruang nama. Misalnya, dapat dibuat
ruang nama Admin, dan di dalamnya subruang nama
Data dan View. Dalam hal ini
nama subruang nama ini cukup ditulis
menggunakan garis miring terbalik - baik saat menetapkan ruang nama
maupun saat membuat objek kelas.
Di sini perlu diperjelas bahwa tingkat nested subruang nama tidak terbatas (dapat dibuat sub subruang nama di dalam subruang nama dan seterusnya).
Jadi, mari kita selesaikan contoh yang dijelaskan di atas
tersebut. Untuk kelas Page dari file /admin/data/page.php
tentukan ruang nama Admin\Data:
<?php
namespace Admin\Data;
class Page
{
}
?>
Untuk kelas Page dari file /admin/view/page.php
tentukan ruang nama Admin\View:
<?php
namespace Admin\View;
class Page
{
}
?>
Mari buat objek dari kelas-kelas kita:
<?php
require_once '/admin/data/page.php';
require_once '/admin/view/page.php';
$adminDataPage = new \Admin\Data\Page;
$adminViewPage = new \Admin\View\Page;
?>
Misalkan Anda memiliki folder modules/cart.
Buatlah agar semua kelas dari folder ini
termasuk ke dalam ruang nama
Modules\Cart.
Misalkan Anda memiliki folder modules/shop/cart/.
Buatlah agar semua kelas dari folder ini
termasuk ke dalam ruang nama
Modules\Shop\Cart.