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*/
?>

Ademas de esta sintaxis podemos definir varios namespace en un mismo archivo(fichero).

<?php
   namespace namespace_name;
   /*bloque de code*/
   namespace namespace_name2;
   /*bloque de codigo*/
?>

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

Algo de ejemplo asi usamos use, en algunos frameworks como laravel vera que usamos el use solamente, esto ocurre porque laravel usa composer autoload.

Use por si solo importa el namespace o clase a el ambito actual, no incluye el archivo.

<?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 asi namespace/subnamespace/sub../sub../clase. En el caso de que haya muchos subdominios directamete podemos usar new Clase.

<?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 de 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 golbales o referirnos a cosas en el ambito 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.

Mas de php en: PHP 101 -mini tutorial de PHP

referencias:php.net

Ayudame: Por favor deja un comentario antes de irte, tu opinión es bienvenida. Si te gusta el contenido comparte.