Construire facilement un fichier de configuration

À partir du moment où un projet a besoin de variables dépendantes de l'environnement où il s'exécute, vous aurez besoin d'un fichier de configuration.

Il existe plusieurs outils qui vont vous permettre d'en mettre en place un (via des fichiers yaml, des variables d'environnement, etc...), mais ce que je vous propose aujourd'hui est de démarrer simplement.

Admettons que dans votre code, vous ayez besoin de vous connecter à une base de données MySQL :

$mysqlConnection = new PDO(
    "mysql:host=localhost;dbname=my_database",
    "user_for_database",
    "password_for_database"
);

Si vous écrivez ce code tel quel dans votre projet, cela voudra dire que votre base de données devra toujours se situer en local sur le serveur où est déployée votre application, et que le nom d'utilisateur et le mot de passe seront toujours les mêmes.

Le mieux est donc de variabiliser ces informations :

$mysqlConnection = new PDO(
    "mysql:host=$host;dbname=$databaseName",
    $username,
    $password,
);

Mais cela ne suffit pas. Il va falloir sortir ces variables dans un fichier de configuration qui pourra être modifié suivant l'environnement déployé. Et savez-vous qu'on peut le faire très facilement grâce aux expressions return et require.

<?php //configuration.php 

return [
    'database_host' => 'localhost',
    'database_name' => 'my_database',
    'database_username' => 'user_for_database',
    'database_password' => 'password_for_database',
];

Et ensuite dans votre script, vous n'avez plus qu'à faire :

<?php // my_script.php

$config = require('configuration.php');

$mysqlConnection = new PDO(
    "mysql:host=$config['database_host'];dbname=$config['database_name']",
    $config['database_username'],
    $config['database_password'],
);

Et voilà, vous avez créé un fichier de configuration que vous pouvez utiliser facilement en faisant un require et que vous allez pouvoir modifier suivant l'environnement. Et bien sûr, vous allez pouvoir mettre plein d'autres choses dans ce fichier comme les informations de votre serveur SMTP pour envoyer des mails, une clé secrète pour chiffrer des données, etc... .

Vous aimeriez progresser en PHP ? Mais vous ne savez pas comment vous y prendre ?

S'entraîner pour progresser en PHP

Mon programme "S'entraîner pour progresser en PHP" est disponible. Il vous permettra de recevoir chaque semaine un kata de code directement dans votre boîte mail, ainsi que des aides à la réalisation, des vidéos explicatives et des défis supplémentaires.

Reçois dès maintenant un kata gratuit en cliquant sur le bouton ci-dessous.