Синтаксис на именните пространства в ООП в PHP
За да зададете именнo пространствo на клас, трябва
първият ред на файла, в който се съхранява този
клас да напишете командата namespace,
а след нея с интервал - името на това
пространство.
Ако класът принадлежи към някакво именнo пространство, то за създаване на обект от класа ще трябва да посочите не само името на класа, но и неговото именнo пространство, разделени с обратна наклонена черта. Нека да разгледаме пример.
Да предположим, че имаме клас Page, който не принадлежи
към никое именнo пространство. Тогава обект
от този клас ще създадем по следния начин:
<?php
$page = new Page;
?>
Да предположим сега, че този клас принадлежи на именнoто пространство
Admin. В този случай обект от този
клас ще създаваме вече по следния начин:
<?php
$page = new \Admin\Page;
?>
Нека да разделим класовете за потребители и класовете за администратори в различни именни пространства, за да избегнем описаните по-горе конфликти между класове.
За класа Page от файла /admin/page.php
ще посочим именнo пространство Admin:
<?php
namespace Admin;
class Page
{
}
?>
А за класа Page от файла /users/page.php
ще посочим именнo пространство 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 създайте обекти
от единия и от другия клас.