Klassenaliase für Namensräume in OOP in PHP
Nehmen wir an, wir haben zwei Klassen Data,
die zu verschiedenen Namensräumen gehören.
Nehmen wir an, wir benötigen in einer Klasse Objekte
beider dieser Klassen:
<?php
namespace Project;
class Test
{
public function __construct()
{
$data1 = new \Core\Users\Data; // erstellen ein Objekt
$data2 = new \Core\Admin\Data; // erstellen ein Objekt
}
}
?>
Nehmen wir an, wir haben entschieden, die Klassenaufrufe
über den Befehl use zu vereinfachen. In diesem Fall
erwartet uns ein Problem: beide Klassen haben den Namen Data,
was bedeutet, dass wir einen Namenskonflikt haben werden:
<?php
namespace Project;
// Es wird einen Namenskonflikt geben:
use \Core\Users\Data; // schließen die erste Klasse an
use \Core\Admin\Data; // schließen die zweite Klasse an
class Test
{
public function __construct()
{
$data1 = new Data;
$data2 = new Data;
}
}
?>
Um dieses Problem zu lösen, existiert ein spezieller
Befehl as, der es erlaubt, der anzuschließenden
Klasse einen Alias zuzuweisen - einen Namen, unter dem
diese Klasse in dieser Datei verfügbar sein wird. Lasst uns
die Umbenennung unserer Klassen Data durchführen:
<?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;
}
}
?>
Vereinfachen Sie den folgenden Code mit
use:
<?php
namespace Project;
class Test
{
public function __construct()
{
$pageController = new \Resource\Controller\Page;
$pageModel = new \Resource\Model\Page;
}
}
?>
Vereinfachen Sie den folgenden Code mit
use:
<?php
namespace Project\Data;
class Test
{
public function __construct()
{
$pageController = new \Project\Data\Controller\Page;
$pageModel = new \Project\Data\Model\Page;
}
}
?>