Příkaz use a jmenné prostory v OOP v PHP
Předpokládejme, že máme následující třídu Data:
<?php
namespace \Core\Admin;
class Data
{
public function __construct($num)
{
}
}
?>
Předpokládejme také, že existuje třída Page, která vytváří
uvnitř sebe objekty třídy Data:
<?php
namespace Users;
class Page
{
public function __construct()
{
$data1 = new \Core\Admin\Data('1');
$data2 = new \Core\Admin\Data('2');
}
}
?>
Jak vidíte, obě naše třídy se nacházejí
v úplně jiných jmenných prostorech, proto
volání třídy Data nelze zjednodušit,
podobně jako jsme to dělali v předchozí
lekci. Tato volání jsou však velmi dlouhá
a nepohodlná, protože v každém volání třídy
Data musíme uvádět její dlouhý
jmenný prostor.
Pro řešení podobného problému existuje
speciální příkaz use. Pomocí
tohoto příkazu stačí jednou připojit
třídu podle jejího úplného jména, a poté
lze k této třídě přistupovat jednoduše
podle názvu třídy. Podívejte se na příklad:
<?php
namespace Users;
use \Core\Admin\Data; // připojíme třídu
class Page extends Controller
{
public function __construct()
{
$data1 = new Data('1'); // voláme jednoduše podle jména
$data2 = new Data('2'); // voláme jednoduše podle jména
}
}
?>
Zjednodušte následující kód pomocí
use:
<?php
namespace Project;
class Test
{
public function __construct()
{
// Vytváříme 3 objekty jedné třídy:
$data1 = new \Core\Users\Data('user1');
$data2 = new \Core\Users\Data('user3');
$data3 = new \Core\Users\Data('user3');
}
}
?>
Jsou dány následující třídy:
<?php
namespace Core\Admin;
class Controller
{
}
?>
<?php
namespace Users;
class Page extends \Core\Admin\Controller
{
}
?>
Zjednodušte kód dědičnosti třídy pomocí
příkazu use.