Yii 2. Псевдонимы
Псевдонимы в Yii 2

Старт! Честный VDS/VPS, на котором «Лунная База» живет уже 20+ лет

Задумываетесь о том, чтобы поднять свой pet-проект, сайт клиента или настроить окружение для разработки? Уже пора подумать, где арендовать железо.

Лунная База хостится на FirstVDS более 20 лет. Мыслей о том, чтобы перебраться на другой хостинг, не было ни разу (хотя опыт работы с другими вариантами, конечно, есть).

Бывали разные ситуации, но они бывают на любом железе. Главное, что нужно понять: здесь нет маркетинговой шелухи и сказок про «мы всё сделаем за вас». Если вы берете VDS — вам дают полный root, возможность накатить любую ОС и не лезут в ваши конфиги.

Если в саппорт написать с вопросом по вашему коду и получить ответ: «Читайте документацию и разбирайтесь сами» или «Обратитесь к профильному специалисту» — это не повод обижаться. Это повод углубить свои знания в DevOps и сайтостроении! Бегите от тех, кто пообещает: «Мы всё чиним и настраиваем абсолютно бесплатно!». Никто никогда не работает «по доброте душевной» в ущерб себе, а бесплатный сыр в администрировании обычно заканчивается сломанной базой данных.

Что по факту: Гибкое масштабирование ядер и RAM, экономия по сравнению с физическими серверами и адекватная панель ispmanager, если она вам нужна.



Псевдонимы

Псевдонимы используются для обозначения путей к файлам или URL адресов и помогают избежать использования абсолютных путей или URL в коде. Для того, чтобы не перепутать псевдоним с обычным путём к файлу или URL, он должен начинаться с @. В Yii имеется множество заранее определённых псевдонимов. Например, @yii указывает на директорию, в которую был установлен Yii framework, а @web можно использовать для получения базового URL текущего приложения.

Создание псевдонимов

Для создания псевдонима пути к файлу или URL используется метод [[Yii::setAlias()]]:

// псевдоним пути к файлу
Yii::setAlias('@foo', '/path/to/foo');

// псевдоним URL
Yii::setAlias('@bar', 'http://www.example.com');

// псевдоним конкретного файла, содержащего класс \foo\Bar
Yii::setAlias('@foo/Bar.php', '/definitely/not/foo/Bar.php');

Note: псевдоним пути к файлу или URL не обязательно указывает на существующий файл или ресурс.

Используя уже заданный псевдоним, вы можете получить на основе него новый без вызова [[Yii::setAlias()]]. Сделать это можно, добавив в его конец /, за которым следует один или более сегментов пути. Псевдонимы, определённые при помощи [[Yii::setAlias()]], являются корневыми псевдонимами, в то время как полученные из них называются производными псевдонимами. К примеру, @foo является корневым псевдонимом, а @foo/bar/file.php — производным.

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

Yii::setAlias('@foobar', '@foo/bar');

Корневые псевдонимы, как правило, создаются на этапе предварительной загрузки (bootstrapping). Например, вы можете вызвать [[Yii::setAlias()]] в входном скрипте. Для удобства, в приложении (Application) предусмотрено свойство aliases, которое можно задать через конфигурацию приложения:

return [
    // ...
    'aliases' => [
        '@foo' => '/path/to/foo',
        '@bar' => 'http://www.example.com',
    ],
];

Преобразование псевдонимов

Метод [[Yii::getAlias()]] преобразует корневой псевдоним в путь к файлу или URL, который этот псевдоним представляет. Этот же метод может работать и с производными псевдонимами:

echo Yii::getAlias('@foo');               // выведет: /path/to/foo
echo Yii::getAlias('@bar');               // выведет: http://www.example.com
echo Yii::getAlias('@foo/bar/file.php');  // выведет: /path/to/foo/bar/file.php

Путь или URL, представленный производным псевдонимом, определяется путём замены в нём части, соответствующей корневому псевдониму, на соответствующий ему путь или URL.

Note: Метод [[Yii::getAlias()]] не проверяет фактического существования получаемого пути или URL.

Корневой псевдоним может содержать знаки '/'. При этом метод [[Yii::getAlias()]] корректно определит, какая часть псевдонима является корневой и верно сформирует путь или URL:

Yii::setAlias('@foo', '/path/to/foo');
Yii::setAlias('@foo/bar', '/path2/bar');
Yii::getAlias('@foo/test/file.php');  // выведет: /path/to/foo/test/file.php
Yii::getAlias('@foo/bar/file.php');   // выведет: /path2/bar/file.php

Если бы @foo/bar не был объявлен корневым псевдонимом, последняя строка вывела бы /path/to/foo/bar/file.php.

Использование псевдонимов

Псевдонимы распознаются во многих частях Yii без необходимости предварительно вызывать [[Yii::getAlias()]] для получения пути или URL. Например, [[yii\caching\FileCache::cachePath]] принимает как обычный путь к файлу, так и псевдоним пути благодаря префиксу @, который позволяет их различать.

use yii\caching\FileCache;

$cache = new FileCache([
    'cachePath' => '@runtime/cache',
]);

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

Заранее определённые псевдонимы

В Yii заранее определены псевдонимы для часто используемых путей к файлам и URL:

  • @yii: директория, в которой находится файл BaseYii.php (директория фреймворка).
  • @app: [[yii\base\Application::basePath|базовый путь]] текущего приложения.
  • @runtime: [[yii\base\Application::runtimePath|директория runtime]] текущего приложения.
  • @vendor: [[yii\base\Application::vendorPath|директория vendor Composer]].
  • @webroot: вебрут текущего веб приложения (там где находится входной скрипт index.php).
  • @web: базовый URL текущего приложения.

Псевдоним @yii задаётся в момент подключения файла Yii.php во входном скрипте. Остальные псевдонимы задаются в конструкторе приложения в момент применения конфигурации.

Псевдонимы расширений

Для каждого расширения, устанавливаемого через Composer, автоматически задаётся псевдоним. Его имя соответствует корневому пространству имён расширения в соответствии с его composer.json. Псевдоним представляет путь к корневой директории пакета. Например, если вы установите расширение yiisoft/yii2-jui, то вам автоматически станет доступен псевдоним @yii/jui. Он создаётся на этапе первоначальной загрузки (bootstrapping) примерно так:

Yii::setAlias('@yii/jui', 'VendorPath/yiisoft/yii2-jui');

Самый честный хостинг за 20+ лет существования Лунной Базы

Задумываешься о том, чтобы поднять свой сайт в Интернете? Уже пора подумать о том, какой хостинг выбрать?

Лунная База хостится 20+ лет на firstDVS. При этом, мыслей о том, чтобы перебраться на другой хостинг не было. (Но, при этом есть опыт работы с другими вариантами.)

Бывали с firstDVS разные ситуации, но, они бывают на всех хостингах. Единственное, что тут важно понять, - это то, что никто ничего тебе не будет впаривать... Но, и работать за тебя тоже никто не станет. Если в саппорт ответили: «Читайте по ссылке и разбирайтесь сами...» или вообще «Обратитесь за помощью к специалисту», - это повод углубить свои знания в области сайтостроения, а не бежать к тем, что пообещают: «Мы всё чиним и всё делаем за своих клиентов абсолютно бесплатно!» Никто никогда ничего ни за кого "по доброте душевной" не делал, не делает и не будет делать!

Старт! Горячий старт на просторы интернета
Старт! Горячий старт на просторы интернета
Старт! Меню