Ключевое слово 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.
Задание
ЛегкоДавайте организуем приложение для обмена сообщениями с помощью ключевого слова 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(...).
Попробуйте сами
<?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() для каждого объекта (каждый на своей строке)
?>В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Объектно-ориентированное программирование
1Основы ООП
Внешние файлыВведение в ООПКлассы и объектыКлючевое слово $thisМетодыСвойстваКонструктор (__construct)Деструктор (__destruct)Повторение — простой калькулятор4Наследование
Основы наследованияКлючевое слово parent::Переопределение методовКлючевое слово finalАбстрактные классыПовторение — иерархия сотрудников7Инкапсуляция
Public, Protected, PrivateМодификаторы доступа подробноГеттеры и сеттерыСокрытие информацииПродвижение конструктора (8.0)Повторение — система учёта студентов2Пространства имён и автозагрузка
Введение в пространства имёнКлючевое слово useСтандарт автозагрузки PSR-4Автозагрузчик ComposerПовторение — структурированный проект5Интерфейсы и контракты
Введение в интерфейсыРеализация интерфейсовРеализация нескольких интерфейсовИнтерфейс и абстрактный классАннотация типов с интерфейсамиПовторение — калькулятор фигур8Магические методы
Введение в магические методы__toString и __debugInfo__get, __set, __isset, __unset__call и __callStatic__clone и клонирование объектов__serialize и __unserializeПовторение — пользовательская коллекция3Свойства классов
Свойства экземпляра и статические свойстваКонстанты в классахСтатические методы и свойстваПриватные и защищённые свойстваСвойства только для чтения (PHP 8.1)Повторение — менеджер банковского счёта6Полиморфизм
Повторение переопределения методовПолиморфизм через интерфейсыАннотации типов и объединённые типыПозднее статическое связываниеПовторение — обработчик платежей9Трейты
Введение в трейтыИспользование нескольких трейтовРазрешение конфликтов трейтовАбстрактные методы в трейтахТрейты и наследование12Паттерны проектирования, часть 1
Введение в паттерны проектированияПаттерн SingletonПаттерн FactoryПаттерн ObserverПаттерн StrategyПотренируйтесь самостоятельно: Онлайн-компилятор PHP