Псевдоними на класове за именни пространства в ООП в 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;
}
}
?>