PHP da OOP da Namespace lardagi nisbiy yo'llar

Faraz qilaylik, index.php faylida quyidagi chaqiruv amalga oshiriladi:

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

Siz bilganingizdek, class ga murojaat qilishda uning namespace i oldidan teskari chiziq yozish kerak. Aslida bu majburiy emas. Agar bu chiziq yozilmasa, chaqirilayotgan namespace joriy namespace ga nisbatan hisoblanadi. Misolni ko'ring:

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

Ikkita class berilgan:

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

Class larni meros olish uchun kodni soddalashtiring, bizning class larning namespace larining bir qismi mos kelishini hisobga olgan holda.

Задание 2

Ikkita class berilgan:

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

Ushbu class larning obyektlari index.php faylida shunday yaratiladi:

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

Obyektlarni yaratish uchun kodni soddalashtiring, obyektlarimizning yaratilayotgan namespace ini hisobga olgan holda.