Espacios de nombres de PHP
Espacios de nombres de PHP
Los espacios de nombres son calificadores que resuelven dos problemas diferentes:
- Permiten una mejor organización al agrupar clases que trabajan juntas para realizar una tarea.
- Permiten utilizar el mismo nombre para más de una clase
Por ejemplo, puede tener un conjunto de clases que describen una tabla HTML, como Mesa, Fila y Celda, mientras que también tiene otro conjunto de clases para describir muebles, como Mesa, Silla y Cama. Los espacios de nombres se pueden usar para organizar las clases en dos grupos diferentes y, al mismo tiempo, evitar que se mezclen las clases Table y Table.
Declaración de un espacio de nombres
Los espacios de nombres se declaran al principio de un archivo usando la namespace
palabra clave:
Sintaxis
Declare un espacio de nombres llamado Html:
namespace Html;
Nota: una namespace
declaración debe ser lo primero en el archivo PHP. El siguiente código no sería válido:
<?php
echo "Hello World!";
namespace Html;
...
?>
Las constantes, clases y funciones declaradas en este archivo pertenecerán al espacio de nombres Html :
Ejemplo
Cree una clase de tabla en el espacio de nombres Html:
<?php
namespace Html;
class Table {
public $title = "";
public
$numRows = 0;
public function message() {
echo "<p>Table
'{$this->title}' has {$this->numRows} rows.</p>";
}
}
$table = new
Table();
$table->title = "My table";
$table->numRows = 5;
?>
<!DOCTYPE html>
<html>
<body>
<?php
$table->message();
?>
</body>
</html>
Para una mayor organización, es posible tener espacios de nombres anidados:
Sintaxis
Declare un espacio de nombres llamado Html dentro de un espacio de nombres llamado Código:
namespace Code\Html;
Uso de espacios de nombres
Cualquier código que sigue a una namespace
declaración está operando dentro del espacio de nombres, por lo que las clases que pertenecen al espacio de nombres se pueden instanciar sin ningún calificador. Para acceder a las clases desde fuera de un espacio de nombres, la clase debe tener el espacio de nombres adjunto.
Ejemplo
Use clases del espacio de nombres Html:
$table = new Html\Table()
$row = new Html\Row();
Cuando se usan muchas clases del mismo espacio de nombres al mismo tiempo, es más fácil usar la namespace
palabra clave:
Ejemplo
Use clases del espacio de nombres Html sin necesidad del calificador Html\:
namespace Html;
$table = new Table();
$row = new Row();
Alias de espacio de nombres
Puede ser útil dar un alias a un espacio de nombres o clase para que sea más fácil de escribir. Esto se hace con la use
palabra clave:
Ejemplo
Asigne un alias a un espacio de nombres:
use Html as H;
$table = new H\Table();
Ejemplo
Dale un alias a una clase:
use Html\Table as
T;
$table = new T();