⊗ppOpNsCA 104 of 107 menu

Aliasy klas dla przestrzeni nazw w OOP w PHP

Załóżmy, że mamy dwie klasy Data, należące do różnych przestrzeni nazw. Załóżmy, że w jakiejś klasie potrzebujemy obiektów obu tych klas:

<?php namespace Project; class Test { public function __construct() { $data1 = new \Core\Users\Data; // tworzymy obiekt $data2 = new \Core\Admin\Data; // tworzymy obiekt } } ?>

Załóżmy, że postanowiliśmy uprościć wywołania klas poprzez komendę use. W tym przypadku czeka nas problem: obie klasy mają nazwę Data, a to oznacza, że będziemy mieli konflikt nazw:

<?php namespace Project; // Będzie konflikt nazw: use \Core\Users\Data; // podłączamy pierwszą klasę use \Core\Admin\Data; // podłączamy drugą klasę class Test { public function __construct() { $data1 = new Data; $data2 = new Data; } } ?>

Dla rozwiązania tego problemu istnieje specjalna komenda as, pozwalająca nadać podłączanej klasie alias - nazwę, pod którą ta klasa będzie dostępna w tym pliku. Nadajmy przemianowanie naszych klas 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; } } ?>

Uprość następujący kod wykorzystując use:

<?php namespace Project; class Test { public function __construct() { $pageController = new \Resource\Controller\Page; $pageModel = new \Resource\Model\Page; } } ?>

Uprość następujący kod wykorzystując use:

<?php namespace Project\Data; class Test { public function __construct() { $pageController = new \Project\Data\Controller\Page; $pageModel = new \Project\Data\Model\Page; } } ?>
huptswkauz