Ruang Nama Sub dalam OOP dalam PHP
Sekarang mari kita andaikan situasi yang lebih kompleks:
untuk admin, dua kelas Page diperlukan
- satu untuk data halaman, dan satu lagi untuk paparan
data tersebut. Katakan kelas pertama terletak
dalam fail /admin/data/page.php, dan kelas kedua
- dalam fail /admin/view/page.php.
Dalam pelajaran sebelumnya, kita telah memutuskan bahawa semua kelas dari folder
admin akan tergolong dalam ruang nama
Admin. Walau bagaimanapun, sekarang dalam
ruang nama yang sama, kita mempunyai konflik antara dua kelas.
Untuk menyelesaikan masalah ini, ruang nama sub tambahan
boleh dibuat. Sebagai contoh, ruang nama
Admin boleh dibuat, dan di dalamnya ruang nama sub
Data dan View. Dalam kes ini,
nama ruang nama sub ini hanya ditulis
menggunakan garis miring belakang - sama ada ketika menetapkan ruang nama
atau ketika mencipta objek kelas.
Perlu dijelaskan di sini bahawa tahap nesting ruang nama sub adalah tidak terhad (anda boleh mencipta ruang nama sub dalam ruang nama sub dan sebagainya).
Jadi, mari kita selesaikan contoh yang dijelaskan di atas.
Untuk kelas Page dari fail /admin/data/page.php,
tetapkan ruang nama Admin\Data:
<?php
namespace Admin\Data;
class Page
{
}
?>
Untuk kelas Page dari fail /admin/view/page.php,
tetapkan ruang nama Admin\View:
<?php
namespace Admin\View;
class Page
{
}
?>
Mari cipta objek 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;
?>
Andaikan anda mempunyai folder modules/cart.
Pastikan semua kelas dari folder ini
tergolong dalam ruang nama
Modules\Cart.
Andaikan anda mempunyai folder modules/shop/cart/.
Pastikan semua kelas dari folder ini
tergolong dalam ruang nama
Modules\Shop\Cart.