Menu
Coddy logo textTech

Ключевое слово use

Часть раздела Объектно-ориентированное программирование путешествия по PHP на Coddy. Урок 11 из 91.

Каждый раз записывать полный путь пространства имён при использовании class может быть утомительно. Ключевое слово use позволяет выполнить import class в верхней части файла, чтобы обращаться к нему по короткому имени.

Instead многократного написания \Blog\User вы можете import его один раз:

<?php
use Blog\User;

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

Когда вам нужны classes из разных namespace с одинаковым именем, вы можете создать псевдоним с помощью keyword 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";

Вывод:

Alice
alice@example.com

Вы также можете импортировать несколько классов из одного пространства имён, используя сгруппированные импорты:

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

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

Ключевой момент: оператор use должен находиться после объявления namespace (если оно есть) и перед любым другим кодом. Он делает ваш код более чистым и удобным для чтения, устраняя повторяющиеся пути namespace.

challenge icon

Задание

Легко

Давайте организуем приложение для обмена сообщениями с помощью ключевого слова use, чтобы аккуратно импортировать классы и не писать полные пути к пространствам имён повсюду.

Вы создадите три файла, которые работают вместе:

  • Messaging/Email.php: Define класс Email в пространстве имён Messaging. У него должно быть свойство public $address, constructor, который принимает и устанавливает address, а также метод send(), возвращающий "Sending email to [address]".
  • Messaging/SMS.php: Define класс SMS в пространстве имён Messaging. У него должно быть свойство public $phone, constructor, который принимает и устанавливает номер phone, а также метод send(), возвращающий "Sending SMS to [phone]".
  • main.php: Include both файлов классов, затем используйте ключевое слово use, чтобы импортировать оба класса. Create объект Email с address "alice@example.com" и объект SMS с phone "555-1234". Print result вызова send() для каждого объекта (each в отдельной строке).

В main.php вместо записи new \Messaging\Email(...) вы импортируете классы в верхней части с помощью инструкций use, чтобы можно было просто написать new Email(...) и new SMS(...).

REQUIRED OUTPUT FORMAT: [Your translated content here]

Попробуйте сами

<?php
// Подключите файлы классов
require_once 'Messaging/Email.php';
require_once 'Messaging/SMS.php';

// TODO: Используйте ключевое слово 'use' для импорта обоих классов из пространства имён Messaging
// Это позволяет писать 'new Email(...)' вместо 'new \Messaging\Email(...)'


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


// TODO: Создайте объект SMS с телефоном "555-1234"


// TODO: Выведите результат вызова send() для каждого объекта (каждый на своей строке)

?>
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Объектно-ориентированное программирование

Потренируйтесь самостоятельно: Онлайн-компилятор PHP