Pseudonimet e Klasave për Hapësirat e Emrave në OOP në PHP
Le të supozojmë se kemi dy klasa Data,
që i përkasin hapësirave të ndryshme të emrave.
Le të themi se në një klasë të caktuar na duhen objektet
e të dy këtyre klasave:
<?php
namespace Project;
class Test
{
public function __construct()
{
$data1 = new \Core\Users\Data; // krijojmë një objekt
$data2 = new \Core\Admin\Data; // krijojmë një objekt
}
}
?>
Le të themi se kemi vendosur të thjeshtojmë thirrjet e klasave
përmes komandës use. Në këtë rast, ne
do të përballemi me një problem: të dyja klasat kanë emrin Data,
dhe kjo do të thotë se do të kemi një konflikt emërish:
<?php
namespace Project;
// Do të ketë konflikt emërish:
use \Core\Users\Data; // lidhim klasën e parë
use \Core\Admin\Data; // lidhim klasën e dytë
class Test
{
public function __construct()
{
$data1 = new Data;
$data2 = new Data;
}
}
?>
Për zgjidhjen e këtij problemi ekziston një komandë e veçantë
as, e cila lejon të caktohet klasës që po lidhet një
pseudonim - një emër, nën të cilin
ky klasë do të jetë i disponueshëm në këtë skedar. Le të
kryejmë riemërtimin e klasave tona 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;
}
}
?>
Thjeshtoni kodin e mëposhtëm duke përdorur
use:
<?php
namespace Project;
class Test
{
public function __construct()
{
$pageController = new \Resource\Controller\Page;
$pageModel = new \Resource\Model\Page;
}
}
?>
Thjeshtoni kodin e mëposhtëm duke përdorur
use:
<?php
namespace Project\Data;
class Test
{
public function __construct()
{
$pageController = new \Project\Data\Controller\Page;
$pageModel = new \Project\Data\Model\Page;
}
}
?>