Nimitilojen syntaksi OOP:ssa PHP:ssä

Asettaaksesi luokalle nimitilan, tulee luokan sisältävän tiedoston ensimmäisellä rivillä kirjoittaa komento namespace, ja sen jälkeen välilyönnillä erotettuna - kyseisen nimitilan nimi.

Jos luokka kuuluu johonkin nimitilaan, luokan olion luomista varten on ilmoitettava paitsi luokan nimi, myös sen nimitila, erotettuna kenoviivalla. Katsotaanpa esimerkkiä.

Oletetaan, että meillä on luokka Page, joka ei kuulu mihinkään nimitilaan. Tällöin luomme tämän luokan olion seuraavasti:

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

Oletetaan nyt, että tämä luokka kuuluu nimitilaan Admin. Tässä tapauksessa luomme tämän luokan olion jo tällä tavalla:

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

Erotellaan käyttäjien ja ylläpitäjien luokat eri nimitiloihin, vähentääksemme edellä kuvattuja luokkakonflikteja.

Asetetaan tiedostossa /admin/page.php olevalle luokalle Page nimitilaksi Admin:

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

Ja asetetaan tiedostossa /users/page.php olevalle luokalle Page nimitilaksi Users:

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

Luodaan nyt tiedostossa /index.php molempien luokkien Page oliot:

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

Oletetaan, että sinulla on kansio core ja kansio project. Kummassakin kansiossa on oma luokkansa Controller. Varmista, että nämä luokat kuuluvat eri nimitiloihin. Tiedostossa index.php luo kummankin luokan oliot.