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

За да доделиме именски простор на класа, потребно е во првиот ред на датотеката, во која се наоѓа класата, да ја напишеме командата namespace, а по неа со празно место - името на тој именски простор.

Ако класата припаѓа на некој именски простор, тогаш за креирање на објект од класата ќе треба да наведеме не само името на класата, туку и нејзиниот именски простор, одделени со обратна коса црта. Да погледнеме на пример.

Нека имаме класа Page, која не припаѓа на ниеден именски простор. Тогаш објект од оваа класа ќе креираме на следниов начин:

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

Нека сега оваа класа припаѓа на именскиот простор Admin. Во овој случај, објект од оваа класа ќе креираме веќе на следниов начин:

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

Ајде да ги поделиме класите за корисници и класите за администратори по различни именски простори, за да ги избегнеме опишаните погоре конфликти на класи.

За класата Page од датотеката /admin/page.php ќе наведеме именски простор Admin:

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

А за класата Page од датотеката /users/page.php ќе наведеме именски простор 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 креирајте објекти од едната и од другата класа.