Klassealias for navnerum i OOP i PHP
Lad os sige, at vi har to klasser Data,
der tilhører forskellige navnerum.
Lad os sige, at vi i en bestemt klasse har brug for objekter
fra begge disse klasser:
<?php
namespace Project;
class Test
{
public function __construct()
{
$data1 = new \Core\Users\Data; // opretter objekt
$data2 = new \Core\Admin\Data; // opretter objekt
}
}
?>
Lad os sige, at vi besluttede at forenkle kald af klasser
via kommandoen use. I dette tilfælde
venter der os et problem: begge klasser har navnet Data,
og det betyder, at vi vil have en navnekonflikt:
<?php
namespace Project;
// Der vil være navnekonflikt:
use \Core\Users\Data; // tilslutter den første klasse
use \Core\Admin\Data; // tilslutter den anden klasse
class Test
{
public function __construct()
{
$data1 = new Data;
$data2 = new Data;
}
}
?>
For at løse dette problem findes der en speciel
kommando as, der tillader at tildele den tilsluttede
klasse et alias - et navn, under hvilket
denne klasse vil være tilgængelig i denne fil. Lad os
udføre omdøbning af vores Data-klasser:
<?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;
}
}
?>
Forenkl følgende kode ved hjælp af
use:
<?php
namespace Project;
class Test
{
public function __construct()
{
$pageController = new \Resource\Controller\Page;
$pageModel = new \Resource\Model\Page;
}
}
?>
Forenkl følgende kode ved hjælp af
use:
<?php
namespace Project\Data;
class Test
{
public function __construct()
{
$pageController = new \Project\Data\Controller\Page;
$pageModel = new \Project\Data\Model\Page;
}
}
?>