A use parancs és a névterek az OOP-ban PHP-ben
Tegyük fel, hogy a következő Data osztályunk van:
<?php
namespace \Core\Admin;
class Data
{
public function __construct($num)
{
}
}
?>
Tegyük fel, hogy van egy Page osztály is, amely
belül Data objektumokat hoz létre:
<?php
namespace Users;
class Page
{
public function __construct()
{
$data1 = new \Core\Admin\Data('1');
$data2 = new \Core\Admin\Data('2');
}
}
?>
Amint látod, mindkét osztályunk teljesen eltérő
névterekben található, ezért
a Data osztály hívásait nem lehet leegyszerűsíteni,
ahogyan azt az előző leckében tettük. Ezek a hívások azonban nagyon hosszúak
és kényelmetlenek, mivel minden Data osztály hívásakor
meg kell adni a hosszú névterét.
Egy ilyen probléma megoldására létezik
egy speciális use parancs. Ezzel
a paranccsal elég egyszer csatlakoztatni
az osztályt a teljes nevével, és ezután
egyszerűen az osztály nevével lehet hivatkozni rá. Lásd a példát:
<?php
namespace Users;
use \Core\Admin\Data; // csatlakoztatjuk az osztályt
class Page extends Controller
{
public function __construct()
{
$data1 = new Data('1'); // egyszerűen a névvel hívjuk
$data2 = new Data('2'); // egyszerűen a névvel hívjuk
}
}
?>
Egyszerűsítsd a következő kódot a
use használatával:
<?php
namespace Project;
class Test
{
public function __construct()
{
// 3 objektumot hozunk létre ugyanabból az osztályból:
$data1 = new \Core\Users\Data('user1');
$data2 = new \Core\Users\Data('user3');
$data3 = new \Core\Users\Data('user3');
}
}
?>
Adottak a következő osztályok:
<?php
namespace Core\Admin;
class Controller
{
}
?>
<?php
namespace Users;
class Page extends \Core\Admin\Controller
{
}
?>
Egyszerűsítsd az osztály öröklésének kódját a
use parancs alkalmazásával.