Menu
Coddy logo textTech

La palabra clave use

Parte de la sección Programación Orientada a Objetos del Journey de PHP de Coddy — lección 11 de 91.

Escribir la ruta completa del espacio de nombres cada vez que usas una clase puede resultar tedioso. La palabra clave use te permite importar una clase en la parte superior de tu archivo, para que puedas referenciarla por su nombre corto.

En lugar de escribir \Blog\User repetidamente, puedes importarlo una vez:

<?php
use Blog\User;

$user = new User("Alice");
echo $user->name;

Cuando necesites clases de diferentes espacios de nombres con el mismo nombre, puedes crear un alias utilizando la palabra clave as:

<?php
use Blog\User as BlogUser;
use Shop\User as ShopUser;

$blogger = new BlogUser("Alice");
$customer = new ShopUser("alice@example.com");

echo $blogger->name . "\n";
echo $customer->email . "\n";

Salida:

Alice
alice@example.com

También puedes importar múltiples clases desde el mismo espacio de nombres utilizando importaciones agrupadas:

<?php
use Blog\{User, Post, Comment};

$user = new User("Alice");
$post = new Post("Hello World");

Punto clave: La sentencia use debe aparecer después de la declaración namespace (si la hay) y antes de cualquier otro código. Hace que su código sea más limpio y fácil de leer al eliminar rutas de espacios de nombres repetitivas.

challenge icon

Desafío

Fácil

Vamos a organizar una aplicación de mensajería utilizando la palabra clave use para importar clases de forma limpia y evitar escribir rutas de espacio de nombres completas en todas partes.

Crearás tres archivos que funcionan juntos:

  • Messaging/Email.php — Define una clase Email en el espacio de nombres Messaging. Debe tener una propiedad public $address, un constructor que acepte y establezca la dirección, y un método send() que devuelva "Sending email to [address]".
  • Messaging/SMS.php — Define una clase SMS en el espacio de nombres Messaging. Debe tener una propiedad public $phone, un constructor que acepte y establezca el número de teléfono, y un método send() que devuelva "Sending SMS to [phone]".
  • main.php — Incluye ambos archivos de clase, luego usa la palabra clave use para importar ambas clases. Crea un objeto Email con la dirección "alice@example.com" y un objeto SMS con el teléfono "555-1234". Imprime el resultado de llamar a send() en cada objeto (cada uno en su propia línea).

En main.php, en lugar de escribir new \Messaging\Email(...), importarás las clases en la parte superior con sentencias use para que puedas escribir simplemente new Email(...) y new SMS(...).

Hoja de referencia

La palabra clave use importa una clase en la parte superior de tu archivo, permitiéndote referenciarla por su nombre corto en lugar de la ruta completa del espacio de nombres:

<?php
use Blog\User;

$user = new User("Alice");

Cuando clases de diferentes espacios de nombres comparten el mismo nombre, crea un alias utilizando la palabra clave as:

<?php
use Blog\User as BlogUser;
use Shop\User as ShopUser;

$blogger = new BlogUser("Alice");
$customer = new ShopUser("alice@example.com");

Importa múltiples clases desde el mismo espacio de nombres utilizando importaciones agrupadas:

<?php
use Blog\{User, Post, Comment};

$user = new User("Alice");
$post = new Post("Hello World");

La sentencia use debe aparecer después de la declaración namespace (si existe) y antes de cualquier otro código.

Pruébalo tú mismo

<?php
// Incluir los archivos de clase
require_once 'Messaging/Email.php';
require_once 'Messaging/SMS.php';

// TODO: Usar la palabra clave 'use' para importar ambas clases desde el espacio de nombres Messaging
// Esto te permite escribir 'new Email(...)' en lugar de 'new \Messaging\Email(...)'


// TODO: Crear un objeto Email con la dirección "alice@example.com"


// TODO: Crear un objeto SMS con el teléfono "555-1234"


// TODO: Imprimir el resultado de llamar a send() en cada objeto (cada uno en su propia línea)

?>
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Programación Orientada a Objetos