Naamruimtesubruimtes in OOP in PHP
Gestel ons het nou 'n meer ingewikkelde situasie:
vir die admin moet twee klasse Page gemaak word
- een met die bladsy data, en die tweede - met die vertoning
van hierdie data. Gestel die eerste klas is geleë
in die lêer /admin/data/page.php, en die tweede
- in die lêer /admin/view/page.php.
In vorige lesse het ons reeds besluit dat alle klasse uit die gids
admin sal behoort tot die naamruimte
Admin. Maar nou is daar in hierdie
selfde naamruimte 'n konflik van twee klasse.
Om die probleem op te los, kan bykomende
naamruimtesubruimtes gemaak word. Byvoorbeeld, kan 'n
naamruimte Admin gemaak word, en daarin subruimtes
Data en View. In so 'n geval
word die name van hierdie subruimtes eenvoudig geskryf
met 'n agteroorskuinsstreep - beide wanneer die naamruimte gespesifiseer word
en wanneer 'n objek van die klas geskep word.
Hier moet dit verduidelik word dat die vlak van inkapseling van subruimtes nie beperk is nie (mens kan sub-subruimtes binne subruimtes skep en so aan).
Kom ons voltooi dus ons bogenoemde
voorbeeld. Vir die klas Page uit die lêer /admin/data/page.php
spesifiseer ons die naamruimte Admin\Data:
<?php
namespace Admin\Data;
class Page
{
}
?>
Vir die klas Page uit die lêer /admin/view/page.php
spesifiseer ons die naamruimte Admin\View:
<?php
namespace Admin\View;
class Page
{
}
?>
Kom ons skep objekte van ons klasse:
<?php
require_once '/admin/data/page.php';
require_once '/admin/view/page.php';
$adminDataPage = new \Admin\Data\Page;
$adminViewPage = new \Admin\View\Page;
?>
Gestel jy het die gids modules/cart.
Sorg dat alle klasse uit hierdie gids
behoort tot die naamruimte
Modules\Cart.
Gestel jy het die gids modules/shop/cart/.
Sorg dat alle klasse uit hierdie gids
behoort tot die naamruimte
Modules\Shop\Cart.