Vzdevki razredov za imenske prostore v OOP v PHP
Recimo, da imamo dva razreda Data,
ki pripadata različnim imenskim prostorom.
Recimo, da v nekem razredu potrebujemo objekte
obeh teh razredov:
<?php
namespace Project;
class Test
{
public function __construct()
{
$data1 = new \Core\Users\Data; // ustvarimo objekt
$data2 = new \Core\Admin\Data; // ustvarimo objekt
}
}
?>
Recimo, da smo se odločili poenostaviti klice razredov
z ukazom use. V tem primeru nas
čaka težava: oba razreda imata ime Data,
kar pomeni, da bomo imeli konflikt imen:
<?php
namespace Project;
// Prišlo bo do konflikta imen:
use \Core\Users\Data; // povežemo prvi razred
use \Core\Admin\Data; // povežemo drugi razred
class Test
{
public function __construct()
{
$data1 = new Data;
$data2 = new Data;
}
}
?>
Za rešitev te težave obstaja poseben
ukaz as, ki omogoča nastavitev vzdevka povezanemu
razredu - ime, pod katerim
bo ta razred dostopen v tej datoteki. Izvedimo
preimenovanje naših razredov Data:
<?php
namespace Project;
use \Core\Users\Data as UsersData;
use \Core\Admin\Data as AdminData;
class Test
{
public function __construct()
{
$data1 = new UsersData;
$data2 = new AdminData;
}
}
?>
Poenostavite naslednjo kodo z uporabo
use:
<?php
namespace Project;
class Test
{
public function __construct()
{
$pageController = new \Resource\Controller\Page;
$pageModel = new \Resource\Model\Page;
}
}
?>
Poenostavite naslednjo kodo z uporabo
use:
<?php
namespace Project\Data;
class Test
{
public function __construct()
{
$pageController = new \Project\Data\Controller\Page;
$pageModel = new \Project\Data\Model\Page;
}
}
?>