Luokkaliilnimet nimiavaruuksille OOP:ssa PHP:ssä
Oletetaan, että meillä on kaksi Data-luokkaa,
joita kuuluu eri nimiavaruuksiin.
Oletetaan, että jossain luokassa tarvitsemme objekteja
molemmista näistä luokista:
<?php
namespace Project;
class Test
{
public function __construct()
{
$data1 = new \Core\Users\Data; // luodaan objekti
$data2 = new \Core\Admin\Data; // luodaan objekti
}
}
?>
Oletetaan, että päätimme yksinkertaistaa luokkien kutsuja
use-komennon avulla. Tässä tapauksessa meitä
odottaa ongelma: molemmilla luokilla on nimi Data,
mikä tarkoittaa, että meillä on nimen conflict:
<?php
namespace Project;
// Nimen conflict tapahtuu:
use \Core\Users\Data; // yhdistetään ensimmäinen luokka
use \Core\Admin\Data; // yhdistetään toinen luokka
class Test
{
public function __construct()
{
$data1 = new Data;
$data2 = new Data;
}
}
?>
Tämän ongelman ratkaisemiseksi on olemassa erityinen
as-komento, jonka avulla voidaan antaa yhdistettävälle
luokalle aliaksen - nimi, jona
tämä luokka on saatavilla tässä tiedostossa. Annetaan
uudet nimet luokillemme 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;
}
}
?>
Yksinkertaista seuraava koodi käyttämällä
use:ä:
<?php
namespace Project;
class Test
{
public function __construct()
{
$pageController = new \Resource\Controller\Page;
$pageModel = new \Resource\Model\Page;
}
}
?>
Yksinkertaista seuraava koodi käyttämällä
use:ä:
<?php
namespace Project\Data;
class Test
{
public function __construct()
{
$pageController = new \Project\Data\Controller\Page;
$pageModel = new \Project\Data\Model\Page;
}
}
?>