Увійти Реєстрація
Блог Серії
Кар'єра
Вакансії Компанії
Навчання
Документація Співбесіди Тестування Відео
Екосистема
Пакети Ресурси Проєкти Інструменти Події
Інше
Про нас Реклама

Junior: питання на співбесіді з теми «Конфігурація»

Питання з реальних співбесід з відповідями: Laravel і PHP, бази даних, JavaScript і фронтенд, Git, Docker, API, безпека й архітектура. Тими самими темами, що й тести.

2 питання

Файл .env лежить у корені проєкту й зберігає налаштування, специфічні для середовища, та секрети: доступи до БД, API-ключі, APP_KEY, режим APP_ENV. Ідея в тому, що той самий код працює в різних середовищах (локально, staging, продакшен) лише завдяки різним .env.

APP_ENV=local
APP_DEBUG=true
DB_CONNECTION=mysql
DB_PASSWORD=secret
STRIPE_KEY=sk_test_...

Ключові правила:

  • .env не комітиться в git (він у .gitignore) - кожен розробник і сервер має власний. Натомість комітять .env.example як шаблон без секретів.
  • Значення зчитуються хелпером env('KEY', 'default'), але викликати env() слід лише у файлах config/.
  • У застосунку звертайтесь через config('services.stripe.key'), а не env(...) напряму: після php artisan config:cache (оптимізація на проді) виклики env() поза конфігом повертають null.

Навіщо: секрети не потрапляють у код/репозиторій, а конфігурацію легко змінювати під середовище без редагування коду.

Докладніше в документації: Конфігурація

Створити файл у config/, що повертає масив, і читати значення через config() з «крапковою» нотацією.

// config/billing.php
return [
    'currency' => env('BILLING_CURRENCY', 'UAH'),
    'trial_days' => (int) env('BILLING_TRIAL_DAYS', 14),
    'gateways' => ['liqpay', 'stripe'],
];
$currency = config('billing.currency');
$days = config('billing.trial_days', 14);       // значення за замовчуванням

$days = Config::integer('billing.trial_days');  // типізоване читання

Правила:

  • env() - лише у файлах config/. Після php artisan config:cache файл .env більше не читається, і env() у коді поверне null;
  • секрети (ключі API, паролі) - у .env, у файлі конфігурації лише посилання на змінну;
  • нову змінну додають і в .env.example, щоб колеги й CI знали про неї.

Типізовані методи Config::string(), integer(), boolean(), array() кидають виняток, якщо значення не того типу. Помилка конфігурації видно одразу, а не в дивній поведінці далі.

Конфігурацію сторонніх пакетів публікують командою php artisan config:publish чи vendor:publish.

Докладніше в документації: Доступ до значень конфігурації