Blog de programación, errores, soluciones

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).

<?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 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 así namespace/subnamespace/sub../sub../clase. En el caso de que haya muchos subdominios directamente 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 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.

referencias:php.net

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Last 4 post in same category