⊗ppOpNsCU 101 of 107 menu

Dyrektywa use i przestrzenie nazw w OOP w PHP

Załóżmy, że mamy następującą klasę Data:

<?php namespace \Core\Admin; class Data { public function __construct($num) { } } ?>

Załóżmy również, że istnieje klasa Page, tworząca wewnątrz siebie obiekty klasy Data:

<?php namespace Users; class Page { public function __construct() { $data1 = new \Core\Admin\Data('1'); $data2 = new \Core\Admin\Data('2'); } } ?>

Jak widzicie, obie nasze klasy znajdują się w całkowicie różnych przestrzeniach nazw, dlatego wywołań klasy Data nie można uprościć, podobnie jak robiliśmy to w poprzedniej lekcji. Te wywołania są jednak bardzo długie i niewygodne, ponieważ w każdym wywołaniu klasy Data trzeba podawać jego długą przestrzeń nazw.

Aby rozwiązać ten problem, istnieje specjalna komenda use. Za pomocą tej komandy wystarczy raz podłączyć klasę po jej pełnej nazwie, a po tym można będzie odwoływać się do tej klasy po prostu po nazwie klasy. Spójrzcie na przykład:

<?php namespace Users; use \Core\Admin\Data; // podłączamy klasę class Page extends Controller { public function __construct() { $data1 = new Data('1'); // wywołujemy po prostu po nazwie $data2 = new Data('2'); // wywołujemy po prostu po nazwie } } ?>

Uprośćcie następujący kod przy użyciu use:

<?php namespace Project; class Test { public function __construct() { // Tworzymy 3 obiekty jednej klasy: $data1 = new \Core\Users\Data('user1'); $data2 = new \Core\Users\Data('user3'); $data3 = new \Core\Users\Data('user3'); } } ?>

Dane są następujące klasy:

<?php namespace Core\Admin; class Controller { } ?>
<?php namespace Users; class Page extends \Core\Admin\Controller { } ?>

Uprośćcie kod dziedziczenia klasy, stosując komendę use.

swbytruzen