Comanda use și spațiile de nume în OOP în PHP
Să presupunem că avem următoarea clasă Data:
<?php
namespace \Core\Admin;
class Data
{
public function __construct($num)
{
}
}
?>
Să presupunem că există și clasa Page, care creează
în interiorul ei obiecte ale clasei Data:
<?php
namespace Users;
class Page
{
public function __construct()
{
$data1 = new \Core\Admin\Data('1');
$data2 = new \Core\Admin\Data('2');
}
}
?>
După cum vedeți, ambele clase se află
în spații de nume complet diferite, de aceea
apelurile clasei Data nu pot fi simplificate,
similar cu cum am făcut în lecția precedentă.
Aceste apeluri, totuși, sunt foarte lungi
și incomode, deoarece în fiecare apel al clasei
Data trebuie indicat spațiul său lung de nume.
Pentru a rezolva această problemă există
o comandă specială use. Cu ajutorul
acestei comenzi este suficient să conectați o dată
clasa după numele său complet, iar după aceea
se va putea accesa această clasă pur și simplu
după numele clasei. Vedeți exemplul:
<?php
namespace Users;
use \Core\Admin\Data; // conectăm clasa
class Page extends Controller
{
public function __construct()
{
$data1 = new Data('1'); // apelăm pur și simplu după nume
$data2 = new Data('2'); // apelăm pur și simplu după nume
}
}
?>
Simplificați următorul cod folosind
use:
<?php
namespace Project;
class Test
{
public function __construct()
{
// Creăm 3 obiecte ale aceleiași clase:
$data1 = new \Core\Users\Data('user1');
$data2 = new \Core\Users\Data('user3');
$data3 = new \Core\Users\Data('user3');
}
}
?>
Sunt date următoarele clase:
<?php
namespace Core\Admin;
class Controller
{
}
?>
<?php
namespace Users;
class Page extends \Core\Admin\Controller
{
}
?>
Simplificați codul de moștenire a clasei, aplicând
comanda use.