Osztály álnevek névterekhez OOP-ban PHP-ben
Tegyük fel, hogy van két Data osztályunk,
amelyek különböző névterekhez tartoznak.
Tegyük fel, hogy valamely osztályban mindkét
osztály objektumaira szükségünk van:
<?php
namespace Project;
class Test
{
public function __construct()
{
$data1 = new \Core\Users\Data; // objektum létrehozása
$data2 = new \Core\Admin\Data; // objektum létrehozása
}
}
?>
Tegyük fel, hogy le akarjuk egyszerűsíteni az osztályok
meghívását a use paranccsal. Ebben az esetben
problémába ütközünk: mindkét osztálynak Data a neve,
ami azt jelenti, hogy névütközés lesz:
<?php
namespace Project;
// Névütközés lesz:
use \Core\Users\Data; // első osztály betöltése
use \Core\Admin\Data; // második osztály betöltése
class Test
{
public function __construct()
{
$data1 = new Data;
$data2 = new Data;
}
}
?>
Ennek a problémának a megoldására létezik egy speciális
parancs, a as, amely lehetővé teszi a betöltött
osztály álnevének megadását - egy olyan név, amely
alatt az osztály elérhető lesz ebben a fájlban. Adjunk
álnevet a Data osztályainknak:
<?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;
}
}
?>
Egyszerűsítsd a következő kódot a
use használatával:
<?php
namespace Project;
class Test
{
public function __construct()
{
$pageController = new \Resource\Controller\Page;
$pageModel = new \Resource\Model\Page;
}
}
?>
Egyszerűsítsd a következő kódot a
use használatával:
<?php
namespace Project\Data;
class Test
{
public function __construct()
{
$pageController = new \Project\Data\Controller\Page;
$pageModel = new \Project\Data\Model\Page;
}
}
?>