PHP-ում OOP տարածության անունների շարահյուսություն

Դասին տարածության անուն նշանակելու համար անհրաժեշտ է այն ֆայլի առաջին տողում, որտեղ պահվում է այս դասը, գրել namespace հրամանը, իսկ դրանից հետո բացատով՝ այդ տարածության անունը:

Եթե դասը պատկանում է ինչ-որ տարածության անունների, ապա դասի օբյեկտը ստեղծելու համար անհրաժեշտ կլինի նշել ոչ միայն դասի անունը, այլև նրա տարածության անունը, որոնք բաժանված են հակադարձ շեղագծով: Եկեք նայենք օրինակով:

Ենթադրենք, մենք ունենք Page դաս, որը չի պատկանում ոչ մի տարածության անունների: Այդ դեպքում այս դասի օբյեկտը մենք կստեղծենք հետևյալ կերպ.

index.php<?php
  $page = new Page;
?>

Ենթադրենք, այժմ այս դասը պատկանում է անունների Admin տարածությանը: Այս դեպքում այս դասի օբյեկտը մենք արդեն կստեղծենք այսպես.

index.php<?php
  $page = new \Admin\Page;
?>

Եկեք տարանջատենք օգտատերերի դասերն ու դասերը ադմինիստրատորների համար տարբեր տարածությունների անունների, որպեսզի խուսափենք վերը նկարագրված դասերի հակամարտություններից:

Page դասի համար /admin/page.php ֆայլից նշենք անունների Admin տարածությունը.

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

Իսկ Page դասի համար /users/page.php ֆայլից նշենք անունների Users տարածությունը.

/users/page.php<?php
  namespace Users;
  
  class Page
  {
    
  }
?>

Եկեք այժմ /index.php ֆայլում ստեղծենք մեկ և երկրորդ Page դասի օբյեկտները.

index.php<?php
  require_once '/admin/page.php';
  require_once '/users/page.php';
  
  $adminPage = new \Admin\Page;
  $usersPage = new \Users\Page;
?>
Задание 1

Ենթադրենք, դուք ունեք core պանակ և պանակ project: Պանակներից յուրաքանչյուրում կա իր Controller դասը: Ապահովեք, որ այդ դասերը պատկանեն տարբեր տարածությունների անունների: index.php ֆայլում ստեղծեք օբյեկտներ մեկ և երկրորդ դասերից: