⊗ppOpNsCU 101 of 107 menu

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.

rohiazplit