Klassalias för namnområden i OOP i PHP
Låt oss säga att vi har två klasser Data,
som tillhör olika namnområden.
Låt oss säga att vi i någon klass behöver objekt
från båda dessa klasser:
<?php
namespace Project;
class Test
{
public function __construct()
{
$data1 = new \Core\Users\Data; // skapar ett objekt
$data2 = new \Core\Admin\Data; // skapar ett objekt
}
}
?>
Låt oss säga att vi bestämde oss för att förenkla anropen till klasserna
genom kommandot use. I det här fallet
möter vi ett problem: båda klasserna har namnet Data,
vilket betyder att vi får en namngivningskonflikt:
<?php
namespace Project;
// Namngivningskonflikt kommer att uppstå:
use \Core\Users\Data; // ansluter den första klassen
use \Core\Admin\Data; // ansluter den andra klassen
class Test
{
public function __construct()
{
$data1 = new Data;
$data2 = new Data;
}
}
?>
För att lösa detta problem finns ett speciellt
kommando as, som låter dig ange ett
alias för den anslutna klassen - ett namn under vilket
denna klass kommer att vara tillgänglig i den här filen. Låt oss
byta namn på våra klasser 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;
}
}
?>
Förenkla följande kod med hjälp av
use:
<?php
namespace Project;
class Test
{
public function __construct()
{
$pageController = new \Resource\Controller\Page;
$pageModel = new \Resource\Model\Page;
}
}
?>
Förenkla följande kod med hjälp av
use:
<?php
namespace Project\Data;
class Test
{
public function __construct()
{
$pageController = new \Project\Data\Controller\Page;
$pageModel = new \Project\Data\Model\Page;
}
}
?>