Relatiiviset polut nimiavaruuksissa OOP:ssa PHP:ssä

Oletetaan, että tiedostossa index.php tapahtuu seuraava kutsu:

index.php<?php
  namespace Admin\Data;
  
  new \Core\Controller;
?>

Kuten jo tiedät, kun viittaat luokkaan, sen nimiavaruuden edessä tulisi kirjoittaa kenoviiva. Itse asiassa tämä ei ole pakollista. Jos tätä viivaa ei kirjoiteta, kutsuttava nimiavaruus lasketaan suhteessa nykyiseen nimiavaruuteen. Katso esimerkki:

index.php<?php
  namespace Admin\Data;
  
  new Core\Controller; // vastaa \Admin\Data\Core\Controller
?>
Задание 1

Annettu kaksi luokkaa:

php<?php
  namespace Modules\Shop\Core;
  
  class Cart
  {
    
  }
?>
php<?php
  namespace Modules\Shop;
  
  class UserCart extends \Modules\Shop\Core\Cart
  {
    
  }
?>

Yksinkertaista koodi periytymistä varten ottaen huomioon, että luokkien nimiavaruuksillamme on päällekkäinen osa.

Задание 2

Annettu kaksi luokkaa:

php<?php
  namespace Core\Data;
  
  class Controller
  {
    
  }
?>
php<?php
  namespace Core\Data;
  
  class Model
  {
    
  }
?>

Näin näiden luokkien oliot luodaan tiedostossa index.php:

index.php<?php
  namespace Core\Data;
  
  $controller = new \Core\Data\Controller;
  $model      = new \Core\Data\Model;
?>

Yksinkertaista koodi olioiden luomista varten ottaen huomioon nimiavaruuden, jossa luokkien oliot luodaan.