Menu
Coddy logo textTech

Le mot-clé use

Fait partie de la section Programmation Orientée Objet du Journey PHP de Coddy — leçon 11 sur 91.

Écrire le chemin complet de l'espace de noms à chaque fois que vous utilisez une classe peut devenir fastidieux. Le mot-clé use vous permet d'importer une classe en haut de votre fichier, afin que vous puissiez la référencer par son nom court.

Au lieu d'écrire \Blog\User de manière répétée, vous pouvez l'importer une seule fois :

<?php
use Blog\User;

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

Lorsque vous avez besoin de classes provenant de différents espaces de noms portant le même nom, vous pouvez créer un alias en utilisant le mot-clé 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";

Sortie :

Alice
alice@example.com

Vous pouvez également importer plusieurs classes à partir du même espace de noms en utilisant des importations groupées :

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

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

Point clé : L'instruction use doit apparaître après la déclaration namespace (le cas échéant) et avant tout autre code. Cela rend votre code plus propre et plus facile à lire en éliminant les chemins d'espace de noms répétitifs.

challenge icon

Défi

Facile

Organisons une application de messagerie en utilisant le mot-clé use pour importer les classes proprement et éviter d'écrire les chemins complets des espaces de noms partout.

Vous allez créer trois fichiers qui fonctionnent ensemble :

  • Messaging/Email.php — Définissez une classe Email dans l'espace de noms Messaging. Elle doit avoir une propriété public $address, un constructeur qui accepte et définit l'adresse, et une méthode send() qui retourne "Sending email to [address]".
  • Messaging/SMS.php — Définissez une classe SMS dans l'espace de noms Messaging. Elle doit avoir une propriété public $phone, un constructeur qui accepte et définit le numéro de téléphone, et une méthode send() qui retourne "Sending SMS to [phone]".
  • main.php — Incluez les deux fichiers de classe, puis utilisez le mot-clé use pour importer les deux classes. Créez un objet Email avec l'adresse "alice@example.com" et un objet SMS avec le téléphone "555-1234". Affichez le résultat de l'appel à send() sur chaque objet (chacun sur sa propre ligne).

Dans main.php, au lieu d'écrire new \Messaging\Email(...), vous importerez les classes en haut avec des instructions use afin de pouvoir simplement écrire new Email(...) et new SMS(...).

Aide-mémoire

Le mot-clé use importe une classe en haut de votre fichier, vous permettant de la référencer par son nom court au lieu du chemin complet de l'espace de noms (namespace) :

<?php
use Blog\User;

$user = new User("Alice");

Lorsque des classes provenant de différents espaces de noms partagent le même nom, créez un alias en utilisant le mot-clé as :

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

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

Importez plusieurs classes du même espace de noms en utilisant des importations groupées :

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

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

L'instruction use doit apparaître après la déclaration namespace (le cas échéant) et avant tout autre code.

Essayez vous-même

<?php
// Inclure les fichiers de classe
require_once 'Messaging/Email.php';
require_once 'Messaging/SMS.php';

// TODO : Utiliser le mot-clé 'use' pour importer les deux classes de l'espace de noms Messaging
// Cela vous permet d'écrire 'new Email(...)' au lieu de 'new \Messaging\Email(...)'


// TODO : Créer un objet Email avec l'adresse "alice@example.com"


// TODO : Créer un objet SMS avec le téléphone "555-1234"


// TODO : Afficher le résultat de l'appel de send() sur chaque objet (chacun sur sa propre ligne)

?>
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Programmation Orientée Objet