Первым этапом разработки приложения, на мой взгляд, является начальное конфигурирование. С него и начнём.
Конфигурирование Yii
Первым будем конфигурировать приложение на Yii. Так как мы установили advanced шаблон в качестве основы, то конфигурация разделилась на common, frontend и backend. На данный момент нас будут интересовать конфигурационные файлы frontend, поскольку эта часть отвечает за пользовательский интерфейс, которым в начале мы и будем заниматься, а также common, так как здесь располагается конфигурация актуальная для всего приложения, например, подключение к базе данных.
В каждой из папок frontend/config и common/config находится набор следующих файлов:
- bootstrap.php — «Предпусковые» настройки для окружения
- main.php — основные настройки
- main-local.php — основные настройки для локального сервера
- params.php — параметры
- params-local.php — параметры для локального сервера
- test.php — настроки для тестирования
- test-local.php — настройки для тестирования для локального сервера
Конфигурационные файлы используют язык PHP, и представляют из себя многомерные массивы, возвращаемые (return) из данных файлов.
На данный момент мы не будем углубляться в особенности каждого файла, а начнём с самого распространённого вопроса — конфигурирование подключения к базе данных. Нас будет интересовать файл common/config/main-local.php
<?php return [ 'components' => [ 'db' => [ 'class' => 'yii\db\Connection', 'dsn' => 'mysql:host=localhost;dbname=yii2advanced', 'username' => 'root', 'password' => '', 'charset' => 'utf8', ], ... ], ];
В значении для ключа dsn находится строка подключения к базе (data source name). Указываем название базы данных в параметре dbname, если база находится не на том же сервере, то указываем host.
Указываем username и password пользователя для подключения к БД.
Как правило, кодировка БД UTF-8, но если Ваша не в данной кодировке, то не забудьте указать нужную кодировку в charset. Для подключения к базе будем использовать стандартный класс yii\db\Connection, который указан в значении для ключа class.
Конфигурирование Symfony
Для данного фреймворка конфигурирование основного приложения несколько проще. Все основные конфигурационные файлы сосредоточены в папке app/config. Для конфигурирования приложения используется язык YAML, поэтому конфигурационные файлы имеют расширение *.yml.
Основные конфигурационные файлы:
- config.yml — главный файл конфигурации приложения
- config_dev.yml — файл с особенностями конфигурации для development окружения (окружение разработчика)
- config_prod.yml — файл с особенностями конфигурации для production («боевого») окружения
- config_test.yml — файл с особенностями конфигурации для тестового окружения
- parameters.yml — файл со значениями параметров
- security.yml — файл с настройками безопасности приложения
Как выше было указано, основная конфигурация приложения сосредоточена в файле config.yml. Если его открыть, то можно заметить, что часть значений указана в виде переменных, например, «%database_name%». Значения данных переменных указываются в файлах с параметрами, часть переменных из файла config.yml задаются в файле parameters.yml. Зададим в файле parameters.yml значения для подключения к базе данных. По-умолчанию при установке мы видим такие значения:
parameters: database_host: 127.0.0.1 database_port: null database_name: symfony database_user: root database_password: null
Все названия переменных интуитивно понятны, поэтому легко подставить свои значения.
Поскольку наше приложение находится в состоянии разработки, то будет логично использовать при этом dev окружение, в котором нам будет доступен Symfony Profiler — инструмент для отладки приложения. Для этого нужно указать в настройках сервера, чтобы индексным файлом нашего проекта был app_dev.php. Так как у нас Apache, то нам нужно сделать данную поправку в файле web/.htaccess. Более подробно о настройке Apache, а также о настройке Nginx можно почитать в документации: http://symfony.com/doc/current/setup/web_server_configuration.html
Конфигурирование Laravel
Конфигурационные файлы данного фреймворка располагаются в папке config. Каждый файл носит название группы тех настроек, которые содержит. Например, database.php содержит настройки подключения к базе данных. Конфигурационные файлы, как и в Yii, используют PHP и содержат в себе многомерный массив. Каждая подгруппа настроек (а в некоторых случаях конкретная настройка) в файле содержит обильные комментарии, разъясняющие основную суть того, что настраивает данная подгруппа (или конкретная настройка). Особенность конфигурирования приложения в Laravel заключается в том, что в конфигурационных файлах вроде database.php для основных настроек значения задаются через функцию env(). Данная функция принимает два параметра:
- key (например, ‘DB_DATABASE’) — это название переменной из .env файла
- default — значение по-умолчанию, если в .env такой переменной не существует
Файл .env представляет собой ini-файл, в котором хранятся пары ключ-значение. Хранится он в корневой папке сайта. Как правило данный файл добавляется в .gitignore, так как предполагается, что на разных серверах данные настройки могут отличаться. Для каждого окружения можно создать свой собственный файл с конфигурацией, например, .env.production. Данные файлы добавляются в Git, и при разворачивании проекта в указанной среде нужно лишь переименовать необходимый файл в .env. Также, например, при запуске unit-тестов можно с помощью параметра —env=testing указать в каком окружении выполнять тесты и, соответственно, какой файл для этого использовать (в данном случае будет использоваться .env.testing). Более подробно об этом можно узнать в официальной документации: https://laravel.com/docs/5.4/configuration
Зададим значения по-умолчанию для подключения к базе данных в файле database.php, а также укажем их в .env.
database.php
<?php 'connections' => [ 'mysql' => [ 'driver' => 'mysql', 'host' => env('DB_HOST', 'localhost'), 'port' => env('DB_PORT', '3306'), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci', 'prefix' => '', 'strict' => true, 'engine' => null, ], ?>
Здесь нас будут интересовать группа параметров connections, подгруппа mysql, ключи: database, username, password.
.env
DB_CONNECTION=mysql DB_HOST=localhost DB_PORT=3306 DB_DATABASE=homestead DB_USERNAME=homestead DB_PASSWORD=secret
В данном файле нас будет интересовать группа переменных, относящихся в подключению к базе данных.