Comando use y espacios de nombres en POO en PHP
Supongamos que tenemos la siguiente clase Data:
<?php
namespace \Core\Admin;
class Data
{
public function __construct($num)
{
}
}
?>
Supongamos también que existe la clase Page, que crea
dentro de sí objetos de la clase Data:
<?php
namespace Users;
class Page
{
public function __construct()
{
$data1 = new \Core\Admin\Data('1');
$data2 = new \Core\Admin\Data('2');
}
}
?>
Como puedes ver, ambas clases se encuentran
en espacios de nombres completamente diferentes, por lo que
las llamadas a la clase Data no se pueden simplificar,
similar a como lo hicimos en la lección anterior. Sin embargo, estas llamadas son muy largas
e incómodas, ya que en cada llamada a la clase
Data es necesario especificar su largo
espacio de nombres.
Para resolver este problema existe
el comando especial use. Con
este comando es suficiente conectar una vez
la clase por su nombre completo, y después de eso
se podrá acceder a esta clase simplemente
por el nombre de la clase. Mira el ejemplo:
<?php
namespace Users;
use \Core\Admin\Data; // conectamos la clase
class Page extends Controller
{
public function __construct()
{
$data1 = new Data('1'); // llamamos simplemente por nombre
$data2 = new Data('2'); // llamamos simplemente por nombre
}
}
?>
Simplifique el siguiente código utilizando
use:
<?php
namespace Project;
class Test
{
public function __construct()
{
// Creamos 3 objetos de una misma clase:
$data1 = new \Core\Users\Data('user1');
$data2 = new \Core\Users\Data('user3');
$data3 = new \Core\Users\Data('user3');
}
}
?>
Se dan las siguientes clases:
<?php
namespace Core\Admin;
class Controller
{
}
?>
<?php
namespace Users;
class Page extends \Core\Admin\Controller
{
}
?>
Simplifique el código de herencia de la clase, aplicando
el comando use.