Синтаксис на именните пространства в ООП в PHP

За да зададете именнo пространствo на клас, трябва първият ред на файла, в който се съхранява този клас да напишете командата namespace, а след нея с интервал - името на това пространство.

Ако класът принадлежи към някакво именнo пространство, то за създаване на обект от класа ще трябва да посочите не само името на класа, но и неговото именнo пространство, разделени с обратна наклонена черта. Нека да разгледаме пример.

Да предположим, че имаме клас Page, който не принадлежи към никое именнo пространство. Тогава обект от този клас ще създадем по следния начин:

index.php<?php
  $page = new Page;
?>

Да предположим сега, че този клас принадлежи на именнoто пространство Admin. В този случай обект от този клас ще създаваме вече по следния начин:

index.php<?php
  $page = new \Admin\Page;
?>

Нека да разделим класовете за потребители и класовете за администратори в различни именни пространства, за да избегнем описаните по-горе конфликти между класове.

За класа Page от файла /admin/page.php ще посочим именнo пространство Admin:

/admin/page.php<?php
  namespace Admin;
  
  class Page
  {
    
  }
?>

А за класа Page от файла /users/page.php ще посочим именнo пространство Users:

/users/page.php<?php
  namespace Users;
  
  class Page
  {
    
  }
?>

Нека сега във файла /index.php създадем обект от единия и от другия клас Page:

index.php<?php
  require_once '/admin/page.php';
  require_once '/users/page.php';
  
  $adminPage = new \Admin\Page;
  $usersPage = new \Users\Page;
?>
Задание 1

Да предположим, че имате папка core и папка project. Във всяка от папките има свой клас Controller. Направете така, че тези класове да принадлежат на различни именни пространства. Във файла index.php създайте обекти от единия и от другия клас.