Relatiiviset polut nimiavaruuksissa OOP:ssa PHP:ssä
Oletetaan, että tiedostossa index.php tapahtuu
seuraava kutsu:
<?php
namespace Admin\Data;
new \Core\Controller;
?>
Kuten jo tiedät, kun viittaat luokkaan, sen nimiavaruuden edessä tulisi kirjoittaa kenoviiva. Itse asiassa tämä ei ole pakollista. Jos tätä viivaa ei kirjoiteta, kutsuttava nimiavaruus lasketaan suhteessa nykyiseen nimiavaruuteen. Katso esimerkki:
<?php
namespace Admin\Data;
new Core\Controller; // vastaa \Admin\Data\Core\Controller
?>
Annettu kaksi luokkaa:
<?php
namespace Modules\Shop\Core;
class Cart
{
}
?>
<?php
namespace Modules\Shop;
class UserCart extends \Modules\Shop\Core\Cart
{
}
?>
Yksinkertaista koodi periytymistä varten ottaen huomioon, että luokkien nimiavaruuksillamme on päällekkäinen osa.
Annettu kaksi luokkaa:
<?php
namespace Core\Data;
class Controller
{
}
?>
<?php
namespace Core\Data;
class Model
{
}
?>
Näin näiden luokkien oliot luodaan
tiedostossa index.php:
<?php
namespace Core\Data;
$controller = new \Core\Data\Controller;
$model = new \Core\Data\Model;
?>
Yksinkertaista koodi olioiden luomista varten ottaen huomioon nimiavaruuden, jossa luokkien oliot luodaan.