Nënhapësirat e Emrave në OOP në PHP
Le të themi tani që kemi një situatë më të ndërlikuar:
për administratorin duhen bërë dy klasa Page
- një me të dhënat e faqes, dhe e dyta - me paraqitjen
e këtyre të dhënave. Le të themi që klasa e parë ndodhet
në skedarin /admin/data/page.php, dhe e dyta
- në skedarin /admin/view/page.php.
Në mësimet e mëparshme kemi vendosur tashmë, që të gjitha klasat nga dosja
admin do t'i përkasin hapësirës së emrave
Admin. Megjithatë, tani në këtë
të njëjtën hapësirë kemi një konflikt midis dy klasave.
Për të zgjidhur problemin mund të bëhen nënhapësira
shtesë të emrave. Për shembull, mund të bëhet
hapësira e emrave Admin, dhe brenda saj nënhapësirat
Data dhe View. Në këtë rast
emrat e këtyre nënhapësirave thjesht shkruhen
përmes së prapthi - si gjatë caktimit të hapësirës së emrave,
ashtu edhe gjatë krijimit të objektit të klasës.
Këtu duhet sqaruar se niveli i folezimit i nënhapësirave nuk është i kufizuar (mund të krijohen nën nënhapësira brenda nënhapësirave dhe kështu me radhë).
Pra, le të përfundojmë shembullin tonë të përshkruar më lart.
Për klasën Page nga skedari /admin/data/page.php
le të caktojmë hapësirën e emrave Admin\Data:
<?php
namespace Admin\Data;
class Page
{
}
?>
Për klasën Page nga skedari /admin/view/page.php
le të caktojmë hapësirën e emrave Admin\View:
<?php
namespace Admin\View;
class Page
{
}
?>
Le të krijojmë objektet e klasave tona:
<?php
require_once '/admin/data/page.php';
require_once '/admin/view/page.php';
$adminDataPage = new \Admin\Data\Page;
$adminViewPage = new \Admin\View\Page;
?>
Le të themi që keni dosjen modules/cart.
Bëni që të gjitha klasat nga kjo dosje
t'i përkasin hapësirës së emrave
Modules\Cart.
Le të themi që keni dosjen modules/shop/cart/.
Bëni që të gjitha klasat nga kjo dosje
t'i përkasin hapësirës së emrave
Modules\Shop\Cart.