Use-komennon ja nimiavaruuksien käyttö OOP:ssa PHP:ssä
Oletetaan, että meillä on seuraava luokka Data:
<?php
namespace \Core\Admin;
class Data
{
public function __construct($num)
{
}
}
?>
Oletetaan myös, että on olemassa luokka Page, joka luo
sisällään Data-luokan olioita:
<?php
namespace Users;
class Page
{
public function __construct()
{
$data1 = new \Core\Admin\Data('1');
$data2 = new \Core\Admin\Data('2');
}
}
?>
Kuten näette, molemmat luokkamme sijaitsevat
hyvin erilaisissa nimiavaruuksissa, joten
Data-luokan kutsuja ei voida yksinkertaistaa
samalla tavalla kuin teimme edellisessä
oppitunnissa. Nämä kutsut ovat kuitenkin hyvin pitkiä
ja hankalia, koska jokaisessa Data-luokan kutsussa
on määritettävä sen pitkä
nimiavaruus.
Tällaisen ongelman ratkaisemiseksi on olemassa
erityiskomento use. Tämän
-komennon avulla riittää, että yhdistät luokan
kerran sen täydellisellä nimellä, ja sen jälkeen
voit viitata tähän luokkaan yksinkertaisesti
luokan nimellä. Katso esimerkki:
<?php
namespace Users;
use \Core\Admin\Data; // yhdistetään luokka
class Page extends Controller
{
public function __construct()
{
$data1 = new Data('1'); // kutsutaan yksinkertaisesti nimellä
$data2 = new Data('2'); // kutsutaan yksinkertaisesti nimellä
}
}
?>
Yksinkertaista seuraava koodi käyttämällä
use:tä:
<?php
namespace Project;
class Test
{
public function __construct()
{
// Luodaan 3 oliota yhdestä luokasta:
$data1 = new \Core\Users\Data('user1');
$data2 = new \Core\Users\Data('user3');
$data3 = new \Core\Users\Data('user3');
}
}
?>
Annettu seuraavat luokat:
<?php
namespace Core\Admin;
class Controller
{
}
?>
<?php
namespace Users;
class Page extends \Core\Admin\Controller
{
}
?>
Yksinkertaista periytymiskoodi käyttämällä
use-komentoa.