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 al principio de tu archivo, para que puedas hacer referencia a ella 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 distintos espacios de nombres con el mismo nombre, puedes crear un alias usando 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 varias clases del mismo espacio de nombres mediante importaciones agrupadas:

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

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

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

challenge icon

Desafío

Fácil

Organicemos una aplicación de mensajería usando la palabra clave use para importar clases de forma clara y evitar escribir rutas completas de espacios de nombres en todas partes.

Crearás tres archivos que funcionan conjuntamente:

  • 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 y, después, 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 al principio mediante instrucciones use para poder escribir simplemente new Email(...) y new SMS(...).

Pruébalo tú mismo

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

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


// TODO: Create an Email object with address "alice@example.com"


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


// TODO: Imprime 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

Practica por tu cuenta: Compilador de PHP online