Commande use et espaces de noms en POO en PHP
Supposons que nous ayons la classe suivante Data :
<?php
namespace \Core\Admin;
class Data
{
public function __construct($num)
{
}
}
?>
Supposons également qu'il y ait une classe Page, créant
en son sein des objets de la classe Data :
<?php
namespace Users;
class Page
{
public function __construct()
{
$data1 = new \Core\Admin\Data('1');
$data2 = new \Core\Admin\Data('2');
}
}
?>
Comme vous le voyez, nos deux classes se trouvent
dans des espaces de noms complètement différents, donc
les appels à la classe Data ne peuvent pas être simplifiés,
comme nous l'avons fait dans la leçon
précédente. Ces appels, cependant, sont très longs
et peu pratiques, car dans chaque appel à la classe
Data, il faut indiquer son long
espace de noms.
Pour résoudre ce type de problème, il existe
une commande spéciale use. Avec
cette commande, il suffit de connecter une fois
la classe par son nom complet, et après cela
il sera possible d'accéder à cette classe simplement
par le nom de la classe. Regardez l'exemple :
<?php
namespace Users;
use \Core\Admin\Data; // nous connectons la classe
class Page extends Controller
{
public function __construct()
{
$data1 = new Data('1'); // nous appelons simplement par le nom
$data2 = new Data('2'); // nous appelons simplement par le nom
}
}
?>
Simplifiez le code suivant en utilisant
use :
<?php
namespace Project;
class Test
{
public function __construct()
{
// Créons 3 objets d'une même classe :
$data1 = new \Core\Users\Data('user1');
$data2 = new \Core\Users\Data('user3');
$data3 = new \Core\Users\Data('user3');
}
}
?>
Les classes suivantes sont données :
<?php
namespace Core\Admin;
class Controller
{
}
?>
<?php
namespace Users;
class Page extends \Core\Admin\Controller
{
}
?>
Simplifiez le code d'héritage de la classe en appliquant
la commande use.