Дуже часто розробники стикаються з ситуацією коли коли треба підключати якісь налаштування додатку, який вони розроблюють. Для цього ми можемо використовувати зміні оточування або так звані конфіг файли. Конфіги бувають різних видів наприклад конфігурація у вигляді JSON YAML або просто PHP. Сьогодні хочу показати один з найпростіших способів підключення налаштувань у вигляді масиву PHP.
Розглянемо більш детально на прикладі - коли нам потрібно зберігати налаштування підключення до бази даних, а також підключення до email серверу.
У нашому прикладі ми будемо використовувати цікаву конструкцію. PHP дозволяє робити нам return у підключуваних файлах. Як ми можемо це використати?
Наприклад, ми створимо новий файл з конфігурацією і назвимо його config.php:
<?php
return [
'database' => [
'host' => 'localhost',
'user' => 'default',
'password' => 'secret',
'database' => 'default',
],
'mail' => [
'protocol' => 'smtp',
'smtp_host' => 'sandbox.smtp.mailtrap.io',
'smtp_port' => 2525,
'smtp_user' => 'ddc7898ed2dc3b',
'smtp_pass' => '********9b0b',
],
];
Тобто ми прямо у файлі написали return і повертаємо масив конфігурації
Тепер ми можемо підключати цей файл і використовувати у будь-якому місці де нам потрібно. Наприклад, у функції створення підключення:
<?php
function createDatabaseConnection()
{
$config = include 'config.php';
$connection = mysqli_connect(
$config['database']['host'],
$config['database']['user'],
$config['database']['password'],
$config['database']['database'],
);
// ...
}
Важливим питанням при розробці додатків є безпека. Тож якщо ми покладемо у git репозиторій наш реальний конфіг, то ризикуємо надати доступ до наших серверів до всіх охочіх. Тож давайте зробимо можливість щоби структура конфігу була під репозиторієм і у будь який момент ми могли розвернути наш проект без необхідності згадувати чи дивитись по коду як саме нам потрібно скласти наш конфіг файл. А також захистимо від випадкового коміту.
Для цього нам потрібно зробити декілька простих кроків
Створюємо файл config.php.dist де зберігаємо структуру нашого конфігу та заповнюємо значення будь якими даними, які не співпадають з реальними.
Додаємо у файл .gitignore рядок з назвою файлу конфіга, щоби захистити його від випадкового коміту
config.php
Додаємо оновлені файли під репозиторій (git add та git commit)