PHP да ООПда Исмлар фазоси қисмлари

Энди бизда янада мураккаб вазият бўлсин: админ учун иккита Page класини яратиш керак - бири саҳифа маълумотлари билан, иккинчиси - ушбу маълумотларнинг кўриниши билан. Биринчи класс файлда /admin/data/page.php жойлашсин, иккинчиси - /admin/view/page.php файлда.

Олдинги дарсларда биз баарчи admin папкасидан олинган класслар Admin исмлар фазосига тегишли бўлишини ҳал қилган эдик. Аммо, энди ўша исмлар фазосида иккита класснинг номзиллиги мавжуд. Муаммони ҳал этиш учун қўшимча исмлар фазоси қисмларини яратиш мумкин. Масалан, Admin исмлар фазосини яратиш, ундан эса Data ва View қисмларини яратиш мумкин. Бундай ҳолда ушбу қисмлар номлари орқа қатиқ чизиқ орқали ёзилади - исмлар фазосини белгилашда ҳам, класс объектини яратишда ҳам.

Бу ерда айтиш керакки, қисмларнинг қаватлашиш даражаси чегараланмаган (қисмлар ичида қисмлар яратиш ва ҳоказо).

Шундай қилиб, келтирилган мисолимизни тугазайлик. /admin/data/page.php файлидаги Page класи учун Admin\Data исмлар фазосини кўрсатамиз:

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

/admin/view/page.php файлидаги Page класи учун Admin\View исмлар фазосини кўрсатамиз:

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

Классларимизнинг объектларини яратамиз:

/index.php<?php
  require_once '/admin/data/page.php';
  require_once '/admin/view/page.php';
  
  $adminDataPage = new \Admin\Data\Page;
  $adminViewPage = new \Admin\View\Page;
?>
Задание 1

Сизда modules/cart папкаси бор бўлсин. Ушбу папкадан олинган барча класслар Modules\Cart исмлар фазосига тегишли бўлишини таъминланг.

Задание 2

Сизда modules/shop/cart/ папкаси бор бўлсин. Ушбу папкадан олинган барча класслар Modules\Shop\Cart исмлар фазосига тегишли бўлишини таъминланг.