Set Environement
Definition
le fichier .env (dotenv) permet de d'affecter vos propres variables d'environement. Il s'agit d'un fichier caché Mais créer un fichier .env à la racine d'un projet n'induira pas d'avoir automatiquement ces variables accessible.
Description
Nous voulons trouver un moyen de retrouver les variables définies dans le fichier .env(dotenv)
En effet s'il s'agit de créer des constructeurs prenant toujours les mêmes paramètres. Il est intéressant de les retrouver dans une variable global $_ENV
Contenu de notre fichier
Notre fichier .env va contenir les paramètre permettant d'instancier un objet PDO
- #BDD
- host="127.0.0.1"
- user="root"
- mdp=""
- bdd="myBDD"
Construction de la fonction
Pour commencer il faut récupérer le fichier .env et retourner une excéption si celui-ci n'existe pas
- function setEnvironnement(){
- $filename=".env";
- if(!file_exists($filename)){
- throw new Exception("$filename doesn't exist");
- }
- }
Nous avons notre fichier .env et tout ces paramètre, à présent nous allons récupérer le contenu et le répartir chaque ligne dans un tableau
- function setEnvironnement(){
- $filename=".env";
- if(!file_exists($filename)){
- throw new Exception("$filename doesn't exist");
- }
- $content=file_get_contents($filename);
- $array=explode("\n",$content);
- }
Nous maitenant gérer les lignes des ce tableau. L'idée est de récupérer la paire de clé et de valeur de chaque ligne. Mais avant cela, il faut enlever les commantaires
- function setEnvironnement(){
- $filename=".env";
- if(!file_exists($filename)){
- throw new Exception("$filename doesn't exist");
- }
- $content=file_get_contents($filename);
- $array=explode("\n",$content);
- foreach($array as $line){
- #vérifier si la ligne n'est pas vide et si le premier caractère n'est pas un diese
- if(trim($line)!=='' && strpos(trim($line),'#')!==0){
- list($key,$value)=explode("=",$line,2);
- }
- }
Pour finir, nous allons retirer les guillemets de la valeur et les ajouter dans notre superglobal $_ENV
- function setEnvironnement(){
- $filename=".env";
- if(!file_exists($filename)){
- throw new Exception("$filename doesn't exist");
- }
- $content=file_get_contents($filename);
- $array=explode("\n",$content);
- foreach($array as $line){
- #vérifier si la ligne n'est pas vide et si le premier caractère n'est pas un diese
- if(trim($line)!=='' && strpos(trim($line),'#')!==0){
- list($key,$value)=explode("=",$line,2);
- $value=trim($value);
- $value=trim($value,"'\"");
- putenv("$key=$value");
- $_ENV[$key]=$value;
- }
- }
Utilisation
A présent sur notre page si j'appelle la fonction setEnvironnement. Les paramètre d'Environement seront accèssibles
- require_once "core.php"Fichier où s'implemente notre fonction
- setEnvironnement();
- echo "ma base de données s'appelle".$_ENV["bdd"];
Affichera