Ukaz use in imenski prostori v OOP v PHP
Recimo, da imamo naslednji razred Data:
<?php
namespace \Core\Admin;
class Data
{
public function __construct($num)
{
}
}
?>
Recimo, da obstaja tudi razred Page, ki znotraj sebe ustvarja
objekte razreda Data:
<?php
namespace Users;
class Page
{
public function __construct()
{
$data1 = new \Core\Admin\Data('1');
$data2 = new \Core\Admin\Data('2');
}
}
?>
Kot vidite, sta oba naša razreda v povsem različnih
imenskih prostorih, zato klicov razreda Data ni mogoče
poenostaviti, podobno kot smo to storili v prejšnji
lekciji. Ti klici so vendar zelo dolgi
in neprijetni, saj je v vsakem klicu razreda
Data treba navesti njegov dolg
imenski prostor.
Za rešitev podobnega problema obstaja
poseben ukaz use. Z uporabo
tega ukaza je dovolj, da enkrat povežemo
razred po njegovem polnem imenu, in po tem
se bomo lahko temu razredu sklicevali preprosto
z imenom razreda. Poglejte primer:
<?php
namespace Users;
use \Core\Admin\Data; // povežemo razred
class Page extends Controller
{
public function __construct()
{
$data1 = new Data('1'); // kličemo preprosto po imenu
$data2 = new Data('2'); // kličemo preprosto po imenu
}
}
?>
Poenostavite naslednjo kodo z uporabo
use:
<?php
namespace Project;
class Test
{
public function __construct()
{
// Ustvarimo 3 objekte istega razreda:
$data1 = new \Core\Users\Data('user1');
$data2 = new \Core\Users\Data('user3');
$data3 = new \Core\Users\Data('user3');
}
}
?>
Podani so naslednji razredi:
<?php
namespace Core\Admin;
class Controller
{
}
?>
<?php
namespace Users;
class Page extends \Core\Admin\Controller
{
}
?>
Poenostavite kodo dedovanja razreda z uporabo
ukaza use.