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 есім кеңістігіне жатқызылғандай етіңіз.