Menu
Coddy logo textTech

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

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

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

Вместо того чтобы писать \Blog\User снова и снова, вы можете импортировать его один раз:

<?php
use Blog\User;

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

Когда вам нужны классы из разных пространств имен с одинаковыми именами, вы можете создать псевдоним, используя ключевое слово 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 (если оно есть) и перед любым другим кодом. Это делает ваш код чище и легче для чтения, устраняя повторяющиеся пути пространств имен.

challenge icon

Задание

Легко

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

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

  • Messaging/Email.php — Определите класс Email в пространстве имен Messaging. Он должен иметь свойство public $address, конструктор, который принимает и устанавливает адрес, и метод send(), который возвращает "Sending email to [address]".
  • Messaging/SMS.php — Определите класс SMS в пространстве имен Messaging. Он должен иметь свойство public $phone, конструктор, который принимает и устанавливает номер телефона, и метод send(), который возвращает "Sending SMS to [phone]".
  • main.php — Подключите оба файла классов, затем используйте ключевое слово use для импорта обоих классов. Создайте объект Email с адресом "alice@example.com" и объект SMS с телефоном "555-1234". Выведите результат вызова send() для каждого объекта (каждый на новой строке).

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

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

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

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


// TODO: Создайте объект Email с адресом "alice@example.com"


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


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

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

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

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

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