სახელთა სივრცეების ქვესივრცეები OOP-ში PHP-ში
დავუშვათ, ახლა ჩვენ გვაქვს უფრო რთული სიტუაცია:
ადმინისტრატორისთვის საჭიროა გაკეთდეს ორი კლასი Page
- ერთი გვერდის მონაცემებით, ხოლო მეორე - ამ
მონაცემების წარმოდგენით. დავუშვათ, პირველი კლასი მდებარეობს
ფაილში /admin/data/page.php, ხოლო მეორე
- ფაილში /admin/view/page.php.
წინა გაკვეთილებში ჩვენ უკვე გადავწყვიტეთ, რომ ყველა კლასი საქაღალდიდან
admin ეკუთვნის სახელთა სივრცეს
Admin. თუმცა, ახლა ამავე
სივრცეში ჩვენ გვაქვს ორი კლასის კონფლიქტი.
პრობლემის მოსაგვარებლად შესაძლებელია დამატებითი
სახელთა ქვესივრცეების შექმნა. მაგალითად, შესაძლებელია შევქმნათ
სახელთა სივრცე Admin, ხოლო მასში ქვესივრცეები
Data და View. ამ შემთხვევაში
ამ ქვესივრცეების სახელები უბრალოდ იწერება
შებრუნებული ხაზით - როგორც სახელთა სივრცის
მითითებისას, ისე კლასის ობიექტის შექმნისას.
აქ უნდა დაზუსტდეს, რომ ქვესივრცეების ბუდობის დონე არის შეუზღუდავი (შესაძლებელია ქვესივრცეებში ქვე-ქვესივრცეების შექმნა და ა.შ.).
მოდით, დავასრულოთ ზემოთ აღწერილი
მაგალითი. კლასისთვის Page ფაილიდან /admin/data/page.php
მივუთითოთ სახელთა სივრცე Admin\Data:
<?php
namespace Admin\Data;
class Page
{
}
?>
კლასისთვის Page ფაილიდან /admin/view/page.php
მივუთითოთ სახელთა სივრცე Admin\View:
<?php
namespace Admin\View;
class Page
{
}
?>
შევქმნათ ჩვენი კლასების ობიექტები:
<?php
require_once '/admin/data/page.php';
require_once '/admin/view/page.php';
$adminDataPage = new \Admin\Data\Page;
$adminViewPage = new \Admin\View\Page;
?>
დავუშვათ, გაქვთ საქაღალდე modules/cart.
გახადეთ ისე, რომ ამ საქაღალდის ყველა კლასი
ეკუთვნოდეს სახელთა სივრცეს
Modules\Cart.
დავუშვათ, გაქვთ საქაღალდე modules/shop/cart/.
გახადეთ ისე, რომ ამ საქაღალდის ყველა კლასი
ეკუთვნოდეს სახელთა სივრცეს
Modules\Shop\Cart.