Метод getAlias('@webroot') класса \Yii возвращает путь к корневой директории вашего сайта. Это позволяет быстро и просто получить доступ к файлам и ресурсам, без необходимости прописывать жесткие пути. Особенно при работе с несколькими средами — разработческой, демо и продакшен.
Пример использования:
\Yii::getAlias('@webroot');
Пример результата: /var/www/my_project/web
Структура проекта
Давайте подробнее разберем путь до какой директории возвращает приведенный выше код. Предположим проект имеет следующую структуру:
my_project/
├── assets/
├── commands/
├── config/
├── controllers/
├── models/
├── runtime/
├── vendor/
├── views/
├── web/ -- Это корневая папка сайта (@webroot)
│ ├── assets/
│ ├── css/
│ ├── index.php
│ ├── uploads/
└── yii
/var/www/my_project/web
– это та директория в которой находится файл index.php обрабатывающий входящие запросы. Проще говоря публичная часть сайта. Именно её и возвращает метод \Yii::getAlias('@webroot').
/var/www/my_project
– это директория в которой находятся все контроллеры, модели, конфигурационные файлы и т.д. Чтобы получить путь до этой директории нужно выполнить код:
\Yii::$app->basePath;
Зачем это нужно?
Во-первых код становится чистым и понятным. Больше не нужно каждый раз вычислять абсолютный путь до файла, чтобы его обработать.
Во-вторых кроссплатформенность, код будет одинаково работать на разных серверах, с разными ОС и с разной конфигурацией директорий проекта.
В-третьих централизованное управление путями. При необходимости можно переопределить путь один раз в конфигурационном файле и изменения применяться для всего проекта.
Использование алиасов делает код более гибким, переносимым и поддерживаемым, что особенно важно для командной работы и долгосрочного сопровождения проекта.
Какие еще полезные методы вы знаете? Делитесь ими в комментариях , будет интересно узнать, что-то новое.