PHP-ում OOP-ի անունների ենթատարածքները
Ենթադրենք, հիմա մենք ունենք ավելի բարդ իրավիճակ.
ադմինիստրատորի համար անհրաժեշտ է ստեղծել երկու Page դաս
- մեկը էջի տվյալներով, իսկ երկրորդը՝ այդ տվյալների ներկայացմամբ
Ենթադրենք, առաջին դասը գտնվում է
/admin/data/page.php ֆայլում, իսկ երկրորդը
- /admin/view/page.php ֆայլում:
Նախորդ դասերում մենք արդեն որոշել էինք, որ admin պանակի բոլոր դասերը
կպատկանեն Admin անունների տարածքին:
Սակայն, հիմա հենց այս տարածքում մենք ունենք երկու դասի կոնֆլիկտ:
Խնդիրը լուծելու համար կարելի է ստեղծել լրացուցիչ
անունների ենթատարածքներ: Օրինակ, կարելի է ստեղծել
Admin անունների տարածք, և դրա մեջ Data և View ենթատարածքներ:
Այս դեպքում
այդ ենթատարածքների անունները պարզապես գրվում են
հակադարձ շեղատողով - և՛ անունների տարածք նշանակելիս,
և՛ դասի օբյեկտ ստեղծելիս:
Այստեղ պետք է հստակեցնել, որ ենթատարածքների բնադրման մակարդակը սահմանափակված չէ (կարելի է ստեղծել ենթատարածքների մեջ ենթա-ենթատարածքներ և այսպես շարունակ):
Այսպիսով, եկեք ավարտին հասցնենք վերը նկարագրված
օրինակը: /admin/data/page.php ֆայլի Page դասի համար
նշենք Admin\Data անունների տարածքը:
<?php
namespace Admin\Data;
class Page
{
}
?>
/admin/view/page.php ֆայլի Page դասի համար
նշենք Admin\View անունների տարածքը:
<?php
namespace Admin\View;
class Page
{
}
?>
Ստեղծենք մեր դասերի օբյեկտները:
<?php
require_once '/admin/data/page.php';
require_once '/admin/view/page.php';
$adminDataPage = new \Admin\Data\Page;
$adminViewPage = new \Admin\View\Page;
?>
Ենթադրենք, դուք ունեք modules/cart պանակ:
Կարգավորեք այնպես, որ այդ պանակի բոլոր դասերը
պատկանեն Modules\Cart անունների տարածքին:
Ենթադրենք, դուք ունեք modules/shop/cart/ պանակ:
Կարգավորեք այնպես, որ այդ պանակի բոլոր դասերը
պատկանեն Modules\Shop\Cart անունների տարածքին: