Imenski prostori v OOP v PHP
Recimo, da imamo zdaj bolj zapleteno situacijo:
za administratorja moramo narediti dva razreda Page
- enega s podatki strani in drugega - s prikazom
tih podatkov. Naj bo prvi razred v
datoteki /admin/data/page.php, drugi
pa - v datoteki /admin/view/page.php.
V prejšnjih lekcijah smo se že odločili, da bodo vsi razredi iz mape
admin pripadali imenskemu
prostoru Admin. Vendar imamo zdaj v tem
istem prostoru konflikt dveh razredov.
Za rešitev problema lahko naredimo dodatne
imenske prostore. Na primer, lahko naredimo
imenski prostor Admin, v njem pa podprostora
Data in View. V tem primeru
se imena teh podprostorov preprosto zapišejo
z obratno poševnico - tako pri določanju imenskega prostora
kot pri ustvarjanju objekta razreda.
Tukaj je treba pojasniti, da raven gnezdenja podprostorov ni omejena (lahko ustvarjate podpodprostore v podprostorih in tako naprej).
Torej, dokončajmo naš zgoraj opisani
primer. Za razred Page iz datoteke /admin/data/page.php
navedimo imenski prostor Admin\Data:
<?php
namespace Admin\Data;
class Page
{
}
?>
Za razred Page iz datoteke /admin/view/page.php
navedimo imenski prostor Admin\View:
<?php
namespace Admin\View;
class Page
{
}
?>
Ustvarimo objekte naših razredov:
<?php
require_once '/admin/data/page.php';
require_once '/admin/view/page.php';
$adminDataPage = new \Admin\Data\Page;
$adminViewPage = new \Admin\View\Page;
?>
Recimo, da imate mapo modules/cart.
Poskrbite, da bodo vsi razredi iz te mape
pripadali imenskemu prostoru
Modules\Cart.
Recimo, da imate mapo modules/shop/cart/.
Poskrbite, da bodo vsi razredi iz te mape
pripadali imenskemu prostoru
Modules\Shop\Cart.