Blog de programación, errores, soluciones

Chose Language:
Author: Admin/Publisher |finished | checked

Namespaces en PHP

¿Qué son los namespaces? En su definición más aceptada, los espacios de nombres son una manera de encapsular elementos .


En el mundo de PHP, los espacios de nombres están diseñados para solucionar dos problemas con los que se encuentran los autores de bibliotecas y de aplicaciones al crear elementos de código reusable, tales como clases o funciones.

php.net

Estos fueron creados para evitar conflictos de nomenclatura con bibliotecas de 3eros y también la habilidad de abreviar nombres largos.

Los espacios de nombres de PHP proporcionan una manera para agrupar clases, interfaces, funciones y constantes relacionadas

Sintaxis para definir un namespace
<?php
   namespace namespace_name;
   /*todo lo que este luego de la declaracion estara en este namespace*/
?>

Además de esta sintaxis podemos definir varios namespace en un mismo archivo(fichero).

más de un namespace en un archivo
<?php
   namespace namespace_name;
   /*bloque de code*/
   namespace namespace_name2;
   /*bloque de codigo*/
?>

Por lo general, usamos namespace en un MVC(Modelo vista controlador) en conjunto con las clases.

Algo de ejemplo así usamos use, en algunos frameworks como Laravel verá que usamos él use solamente, esto ocurre porque Laravel usa composer autoload.

Use por sí solo importa el namespace o clase al ámbito actual, no incluye el archivo.

Ejemplo simple de un namespace
<?php
namespace Salado;
class Ca {
    function __construct(){
    }
    public function saluda(){
        echo "hola";
    }
}
?>

Use en Namespaces

Al usar use podemos darle un alias, pero su uso es por ejemplo si nuestro namespace es algo así namespace/subnamespace/sub../sub../clase. En el caso de que haya muchos subdominios directamente podemos utilizar new ClaseName.

Utilizando la clase Ca
<?php

namespace Salado;
include("Ca.php");
use Salado\Ca as C;

$salado = new C;
$salado->saluda();
?>

Espacio de nombre(namespace) global

Sin ninguna definición de namespace, todas las definiciones de clases y funciones son colocadas en el espacio global, como si lo estuvieran antes que PHP soportara los espacios de nombres.

Prefijar un nombre con \ especificará que el nombre es requerido desde el espacio global incluso en el contexto del espacio de nombres.

php.net

Que quiere decir esto, quiere decir que podemos ingresar funciones globales o referirnos a cosas en el ámbito global cuando estemos dentro de un namespace con \ .

Esto lo puede ver en Laravel como en otros frameworks que algunos programadores usan el slash para hacer cosas algo particulares.

Estos son algunos temas que te pueden interesar luego de ver namespaces en PHP:

Referencias: php.net

Category: php
Something wrong? If you found an error or mistake in the content you can contact me on Twitter | @luisg2249_luis.
Last 4 post in same category