Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Оглавление

Входной скрипт и настройки

Каждый запрос к сайту приходит в один файл — входной скрипт web/index.php. Он читает настройки из папки config и запускает приложение. Понимать эти два места нужно, чтобы знать, где включается та или иная возможность.

Входной скрипт

Файл web/index.php уже есть в проекте:

<?php
// web/index.php
 
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'dev');
 
require __DIR__ . '/../vendor/autoload.php';
require __DIR__ . '/../vendor/yiisoft/yii2/Yii.php';
 
$config = require __DIR__ . '/../config/web.php';
 
(new yii\web\Application($config))->run();

Две константы включают режим разработки, затем подключаются библиотеки, читается массив настроек и создаётся объект приложения. Метод run() находит нужный контроллер и отправляет ответ.

Файл настроек

Настройки сайта лежат в config/web.php. Это обычный файл PHP, который возвращает массив:

// config/web.php
$config = [
    'id' => 'basic',
    'basePath' => dirname(__DIR__),
    'name' => 'Мой блог',
    'language' => 'ru-RU',
    'components' => [
        // службы приложения
    ],
    'params' => $params,
];
 
return $config;

Ключ name задаёт название сайта — стандартный макет показывает его в шапке. Ключ language задаёт язык сообщений фреймворка: после этой правки ошибки форм будут на русском.

Компоненты

Компонент — это служба приложения с именем: база данных, кеш, почта. Компоненты перечислены в разделе components:

// config/web.php
'components' => [
    'cache' => [
        'class' => 'yii\caching\FileCache',
    ],
    'db' => $db,
],

Ключ массива — имя компонента, class — класс, остальные ключи — свойства этого класса. К компоненту обращаются через объект приложения Yii::$app по имени:

Yii::$app->cache;     // кеш
Yii::$app->db;        // подключение к базе данных
Yii::$app->request;   // текущий запрос
Yii::$app->user;      // текущий пользователь

Объект компонента создаётся при первом обращении, поэтому лишние компоненты сайт не замедляют.

Свои параметры

Значения, нужные в разных местах сайта, записывают в config/params.php:

// config/params.php
return [
    'adminEmail' => 'admin@example.com',
    'postsPerPage' => 10,
];

В любом месте кода параметр читают так: Yii::$app->params['postsPerPage'].

Другие файлы настроек

ФайлНазначение
config/web.phpНастройки сайта
config/console.phpНастройки консольных команд
config/db.phpПодключение к базе данных
config/params.phpСвои параметры

Частая ошибка

У сайта и у консоли настройки разные. Компонент, добавленный только в config/web.php, в консольной команде недоступен: обращение к нему закончится ошибкой Unknown component ID. Если служба нужна в обоих местах, опишите её и в config/console.php.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.