PHP да ООП да namespaceларда нисбий йўллаш

Файл index.php да куйидаги чақириқ амалга оширилсин деб фараз қилайлик:

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

Сиз биласиз, классга мурожаат қилганда унинг namespaceи олдига тескари чиззиқ қўйиш керак. Аслича, бу мажбурий эмас. Агар бу чиззиқ қўйилмаса, чақирилаётган namespace жорий namespaceга нисбатан ҳисобланади. Мисолга қара:

index.php<?php
  namespace Admin\Data;
  
  new Core\Controller; // \Admin\Data\Core\Controller га эквивалент
?>
Задание 1

Икки класс берилган:

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

Бизнинг классларнинг namespaceларининг мос келувчи қисмини инобатга олиб, мерос олиш учун кодни соддалаштиринг.

Задание 2

Икки класс берилган:

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

Ушбу классларнинг объектлари index.php файлида куйидагича яратилмоқда:

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

Объектлар яратилаётган namespaceни инобатга олиб, объектлар яратиш учун кодни соддалаштиринг.