Aliasy tříd pro jmenné prostory v OOP v PHP
Předpokládejme, že máme dvě třídy Data,
které patří do různých jmenných prostorů.
Předpokládejme, že v nějaké třídě potřebujeme objekty
obou těchto tříd:
<?php
namespace Project;
class Test
{
public function __construct()
{
$data1 = new \Core\Users\Data; // vytvoříme objekt
$data2 = new \Core\Admin\Data; // vytvoříme objekt
}
}
?>
Předpokládejme, že jsme se rozhodli zjednodušit volání tříd
pomocí příkazu use. V tomto případě nás
čeká problém: obě třídy mají jméno Data,
a to znamená, že budeme mít konflikt jmen:
<?php
namespace Project;
// Bude konflikt jmen:
use \Core\Users\Data; // připojíme první třídu
use \Core\Admin\Data; // připojíme druhou třídu
class Test
{
public function __construct()
{
$data1 = new Data;
$data2 = new Data;
}
}
?>
Pro řešení tohoto problému existuje speciální
příkaz as, který umožňuje nastavit připojované
třídě alias - jméno, pod kterým
bude tato třída v tomto souboru dostupná. Pojďme
přejmenovat naše třídy 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;
}
}
?>
Zjednodušte následující kód pomocí
use:
<?php
namespace Project;
class Test
{
public function __construct()
{
$pageController = new \Resource\Controller\Page;
$pageModel = new \Resource\Model\Page;
}
}
?>
Zjednodušte následující kód pomocí
use:
<?php
namespace Project\Data;
class Test
{
public function __construct()
{
$pageController = new \Project\Data\Controller\Page;
$pageModel = new \Project\Data\Model\Page;
}
}
?>