PHP-ში OOP-ის ნეიმსფეისების სინტაქსი
კლასისთვის ნეიმსფეისის მისანიჭებლად, საჭიროა
ფაილის, რომელშიც ეს კლასია შენახული, პირველ სტრიქონზე
დაწეროთ ბრძანება namespace,
ხოლო მის შემდეგ გამოტოვებით - ამ ნეიმსფეისის
სახელი.
თუ კლასი ეკუთვნის რომელიმე ნეიმსფეისს, მაშინ კლასის ობიექტის შესაქმნელად საჭირო იქნება მიუთითოთ არა მხოლოდ კლასის სახელი, არამედ მისი ნეიმსფეისიც, გამოყოფილი უკუ ხაზით. მოდით, მაგალითზე ვნახოთ.
დავუშვათ, გვაქვს კლასი Page, რომელიც არ ეკუთვნის
არცერთ ნეიმსფეისს. მაშინ ამ კლასის ობიექტს
შევქმნით შემდეგნაირად:
<?php
$page = new Page;
?>
დავუშვათ, ახლა ეს კლასი ეკუთვნის ნეიმსფეისს
Admin. ამ შემთხვევაში ამ კლასის ობიექტს
ჩვენ უკვე ასე შევქმნით:
<?php
$page = new \Admin\Page;
?>
მოდით, მომხმარებლებისთვის და ადმინისტრატორებისთვის განკუთვნილ კლასებს სხვადასხვა ნეიმსფეისებში გადავანაწილოთ, რათა თავიდან ავიცილოთ ზემოთ აღწერილი კლასების კონფლიქტები.
კლასისთვის Page ფაილიდან /admin/page.php
მივუთითოთ ნეიმსფეისი Admin:
<?php
namespace Admin;
class Page
{
}
?>
ხოლო კლასისთვის Page ფაილიდან /users/page.php
მივუთითოთ ნეიმსფეისი Users:
<?php
namespace Users;
class Page
{
}
?>
მოდით, ახლა ფაილში /index.php
შევქმნათ ერთი და მეორე
კლასის Page ობიექტი:
<?php
require_once '/admin/page.php';
require_once '/users/page.php';
$adminPage = new \Admin\Page;
$usersPage = new \Users\Page;
?>
დავუშვათ, გაქვთ ფოლდერი core და ფოლდერი
project. თითოეულ ფოლდერში არის საკუთარი
კლასი Controller. გახადეთ ისე, რომ
ეს კლასები სხვადასხვა ნეიმსფეისებს ეკუთვნოდნენ.
ფაილში index.php შექმენით ერთი და მეორე კლასების
ობიექტები.