Псевдоними на класи за именски простори во ООП во PHP
Нека имаме две класи Data,
кои припаѓаат на различни именски простори.
Нека во некоја класа ни требаат објекти
од двете овие класи:
<?php
namespace Project;
class Test
{
public function __construct()
{
$data1 = new \Core\Users\Data; // креираме објект
$data2 = new \Core\Admin\Data; // креираме објект
}
}
?>
Нека решиме да ги поедноставиме повиците на класите
преку командата use. Во овој случај
ние ќе наидеме на проблем: двете класи имаат име Data,
а тоа значи дека ќе имаме конфликт на имиња:
<?php
namespace Project;
// Ќе има конфликт на имиња:
use \Core\Users\Data; // ја поврзуваме првата класа
use \Core\Admin\Data; // ја поврзуваме втората класа
class Test
{
public function __construct()
{
$data1 = new Data;
$data2 = new Data;
}
}
?>
За решавање на овој проблем постои специјална
команда as, која овозможува да се зададе на поврзаната
класа псевдоним - име, под кое
оваа класа ќе биде достапна во оваа датотека. Ајде
да ги преименуваме нашите класи 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;
}
}
?>
Поедноставете го следниот код со употреба на
use:
<?php
namespace Project;
class Test
{
public function __construct()
{
$pageController = new \Resource\Controller\Page;
$pageModel = new \Resource\Model\Page;
}
}
?>
Поедноставете го следниот код со употреба на
use:
<?php
namespace Project\Data;
class Test
{
public function __construct()
{
$pageController = new \Project\Data\Controller\Page;
$pageModel = new \Project\Data\Model\Page;
}
}
?>