Komanda use i imenski prostori u OOP u PHP
Recimo da imamo sledeću klasu Data:
<?php
namespace \Core\Admin;
class Data
{
public function __construct($num)
{
}
}
?>
Neka postoji i klasa Page, koja unutar sebe
kreira objekte klase Data:
<?php
namespace Users;
class Page
{
public function __construct()
{
$data1 = new \Core\Admin\Data('1');
$data2 = new \Core\Admin\Data('2');
}
}
?>
Kao što vidite, obe naše klase se nalaze
u potpuno različitim imenskim prostorima, pa
pozive klase Data ne možemo pojednostaviti,
na sličan način kao što smo to činili u prethodnoj
lekciji. Ovi pozivi su, međutim, veoma dugi
i nezgodni, jer u svakom pozivu klase
Data moramo navesti njegov dugačak
imenski prostor.
Za rešavanje sličnog problema postoji
specijalna komanda use. Uz pomoć
ove komande dovoljno je jednom povezati
klasu po njenom punom imenu, i nakon toga
ćemo moći da se obraćamo toj klasi jednostavno
po imenu klase. Pogledajte primer:
<?php
namespace Users;
use \Core\Admin\Data; // povezujemo klasu
class Page extends Controller
{
public function __construct()
{
$data1 = new Data('1'); // pozivamo jednostavno po imenu
$data2 = new Data('2'); // pozivamo jednostavno po imenu
}
}
?>
Pojednostavite sledeći kod korišćenjem
use:
<?php
namespace Project;
class Test
{
public function __construct()
{
// Kreiramo 3 objekta iste klase:
$data1 = new \Core\Users\Data('user1');
$data2 = new \Core\Users\Data('user3');
$data3 = new \Core\Users\Data('user3');
}
}
?>
Date su sledeće klase:
<?php
namespace Core\Admin;
class Controller
{
}
?>
<?php
namespace Users;
class Page extends \Core\Admin\Controller
{
}
?>
Pojednostavite kod nasleđivanja klase, primenivši
komandu use.