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;
}
}
?>