PHPде ООПдо аты мейкиндиктеринин подпространстволору
Эми бизде бир татаал абал бар дейли:
админ үчүн эки 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 аты мейкиндигине таандык болушун камдагыла.