Aliasuri pentru clase în spații de nume în OOP în PHP
Să presupunem că avem două clase Data,
care aparțin unor spații de nume diferite.
Să presupunem că într-o anumită clasă avem nevoie de obiecte
din ambele clase:
<?php
namespace Project;
class Test
{
public function __construct()
{
$data1 = new \Core\Users\Data; // creăm un obiect
$data2 = new \Core\Admin\Data; // creăm un obiect
}
}
?>
Să presupunem că am decis să simplificăm apelurile claselor
prin comanda use. În acest caz ne
așteaptă o problemă: ambele clase au numele Data,
ceea ce înseamnă că vom avea un conflict de nume:
<?php
namespace Project;
// Va fi conflict de nume:
use \Core\Users\Data; // conectăm prima clasă
use \Core\Admin\Data; // conectăm a doua clasă
class Test
{
public function __construct()
{
$data1 = new Data;
$data2 = new Data;
}
}
?>
Pentru a rezolva această problemă există o comandă specială
as, care permite setarea unui alias pentru clasa conectată
- un nume sub care
această clasă va fi accesibilă în acest fișier. Să
efectuăm redenumirea claselor noastre 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;
}
}
?>
Simplificați următorul cod folosind
use:
<?php
namespace Project;
class Test
{
public function __construct()
{
$pageController = new \Resource\Controller\Page;
$pageModel = new \Resource\Model\Page;
}
}
?>
Simplificați următorul cod folosind
use:
<?php
namespace Project\Data;
class Test
{
public function __construct()
{
$pageController = new \Project\Data\Controller\Page;
$pageModel = new \Project\Data\Model\Page;
}
}
?>