Nimeruumide suhtelised teed OOP-s PHP-s

Oletame, et failis index.php tehakse järgmine kutse:

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

Nagu te juba teate, tuleb klassi poole pöördumisel selle nimeruumi eest kirjutada kurakaldkriips. Tegelikult pole see kohustuslik. Kui seda kaldkriipsu ei kirjutata, arvutatakse kutsutav nimeruum suhteliselt praeguse nimeruumi suhtes. Vaadake näidet:

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

Antud on kaks klassi:

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

Lihtsustage klassi pärimise koodi, võttes arvesse seda, et meie klasside nimeruumidel on kattuv osa.

Задание 2

Antud on kaks klassi:

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

Nende klasside objektid luuakse failis index.php järgmiselt:

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

Lihtsustage objektide loomise koodi, võttes arvesse nimeruumi, milles meie klasside objektid luuakse.