Зарегистрируйтесь, чтобы продолжить обучение

Импорт функций Основы PHP

Ничего не дается бесплатно, в том числе и пространства имен. Вызовы функций становятся длинными и неудобными:

<?php

require_once(__DIR__ . '/src/Formatters/Pretty.php');

namespace Generator;

function generate($data)
{
    return \Formatters\Pretty\render($data);
}

Представьте, что будет, если понадобится вызвать эту функцию много раз. В глазах очень быстро начнет рябить от обратных слешей. Для решения этой задачи придумали механизм импорта, с которым мы познакомимся в этом уроке.

С помощью механизма импорта можно импортировать функцию в текущее пространство имен так, как будто она определена прямо здесь:

<?php

require_once(__DIR__ . '/src/Formatters/Pretty.php');

namespace Generator;

use function Formatters\Pretty\render;

function generate($data)
{
    return render($data);
}

Импорт функции выполняется оператором use, за которым идет ключевое слово function и затем полный путь до функции с указанием всех его пространств имен — без обратного слэша в начале.

Количество импортов при этом ничем не ограничено. Их используют и добавляют исключительно по соображениям удобства:

<?php

// Подключаем файл, в котором определены функции:
// cons(), car(), cdr(), toString()
require_once(__DIR__ . '/src/Pairs.php');

namespace Php\Pairs\Data\Lists;

use function Php\Pairs\Pairs\cons;
use function Php\Pairs\Pairs\car;
use function Php\Pairs\Pairs\cdr;
use function Php\Pairs\Pairs\toString;

Изредка случаются ситуации, когда хочется импортировать функцию, но в текущем пространстве это невозможно:

  • Либо уже определена функция с таким именем
  • Либо функция с таким именем была импортирована ранее из другого пространства имен

Чтобы исправить ситуацию, можно использовать алиасы (псевдонимы) — механизм, позволяющий переименовывать импортируемые функции:

<?php

require_once(__DIR__ . '/src/Formatters/Pretty.php');
require_once(__DIR__ . '/src/Formatters/Simple.php');

namespace Generator;

use function Formatters\Pretty\render;
use function Formatters\Simple\render as simpleRender;

function generate($data)
{
    return simpleRender($data);
}

Для переименования достаточно в конце импорта добавить ключевое слово as, а затем имя, под которым функция должна стать доступна.


Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff
Рекомендуемые программы
профессия
от 25 000 ₸ в месяц
Разработка веб-приложений на Laravel
10 месяцев
с нуля
Старт 26 декабря

Используйте Хекслет по-максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»