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(...).

Шпаргалка

Ключевое слово use импортирует класс в начале вашего файла, позволяя вам обращаться к нему по короткому имени вместо полного пути пространства имен:

<?php
use Blog\User;

$user = new User("Alice");

Когда классы из разных пространств имен имеют одинаковые имена, создайте псевдоним с помощью ключевого слова as:

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

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

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

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

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

Инструкция use должна располагаться после объявления namespace (если оно есть) и перед любым другим кодом.

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

<?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Проверьте себя

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

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