Menu
Coddy logo textTech

A Palavra-chave use

Parte da seção Programação Orientada a Objetos do Journey de PHP da Coddy. Lição 11 de 91.

Escrever o caminho completo do namespace sempre que você usa uma classe pode ser cansativo. A palavra-chave use permite importar uma classe no topo do seu arquivo, para que você possa referenciá-la pelo nome curto.

Instead de escrever \Blog\User repetidamente, você pode importá-lo uma vez:

<?php
use Blog\User;

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

Quando você precisa de classes de namespaces diferentes com o mesmo nome, pode criar um alias usando a as keyword:

<?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";

Saída:

Alice
alice@example.com

Você também pode import várias classes do mesmo namespace usando import agrupado:

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

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

Ponto principal: A instrução use deve aparecer após a declaração de namespace (se houver) e antes de qualquer outro código. Ela torna seu código mais limpo e fácil de ler, eliminando caminhos de namespace repetitivos.

challenge icon

Desafio

Fácil

Vamos organizar uma aplicação de Messaging usando a use keyword para importar classes de forma limpa e evitar escrever os caminhos completos de namespace em todos os lugares.

Você criará três files que funcionam em conjunto:

  • Messaging/Email.php: Define uma Email class no namespace Messaging. Ela deve ter uma property public $address, um constructor que accepts e sets o address, e um send() method que returns "Sending email to [address]".
  • Messaging/SMS.php: Define uma SMS class no namespace Messaging. Ela deve ter uma property public $phone, um constructor que accepts e sets o phone number, e um send() method que returns "Sending SMS to [phone]".
  • main.php: Include os dois class files e, em seguida, use a use keyword para importar as duas classes. Crie um Email object com address "alice@example.com" e um SMS object com phone "555-1234". Print o result de calling send() em cada object (cada um em sua own line).

Em main.php, em vez de escrever new \Messaging\Email(...), você importará as classes no topo com instruções use, para poder simplesmente escrever new Email(...) e new SMS(...).

Experimente você mesmo

<?php
// Inclua os arquivos de classe
require_once 'Messaging/Email.php';
require_once 'Messaging/SMS.php';

// TODO: Use a palavra-chave 'use' para importar ambas as classes do namespace Messaging
// Isso permite que você escreva 'new Email(...)' em vez de 'new \Messaging\Email(...)'


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


// TODO: Crie um objeto SMS com o telefone "555-1234"


// TODO: Imprima o resultado de chamar send() em cada objeto (cada um em sua própria linha)

?>
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Programação Orientada a Objetos

Pratique por conta própria: Compilador de PHP online