Comment configurer un projet ?

Pré-requis

Avant la configuration d'un projet, assurez-vous d'avoir :

  1. placer le dossier du framework Adventy dans un dossier accessible. Par exemple dans /usr/share/php/adventy/ sur Linux, ou dans C:\framework\adventy\ sur Windows ;
  2. configurer le SSL pour utiliser le protocole sécurisé https, et donc pouvoir naviguer avec un nom de domaine en local, comme par exemple https://<mydomain.loc>/. La configuration du SSL en local est optionnelle, mais en revanche, en production c'est quasi une obligation aujourd'hui. De ce fait, pour se rapprocher le plus possible de la configuration de production, il est donc recommandé de configurer le SSL en local ;
  3. configurer un hôte virtuel en local (virtualhost). Par exemple mydomain.loc. L'extension .loc indique un nom de domaine fonctionnant en local. Vous pouvez la renommer comme bon vous semble tant que cette extension ne se confond pas avec celles des environnements de développement (.dev), test (.tst), recette (.stg) et production (.com, .us, .fr, .net, ...) ;
  4. nommer le dossier du projet en nom de domaine avec son extension de domaine publique (ex : <mydomain>.com, <mydomain>.org, etc.) ;

Il n'y a pas de norme, ni de standard quant au nommage du nom de domaine local et du dossier du projet. Ce tutoriel ne propose qu'une recommandation, mais au final, ce choix vous appartient. Cependant, retenez seulement que le nom de domaine utilisé doit être différent pour chaque environnement (ex : développement, recette, production). Pour cela, il suffira juste d'en changer l'extension du nom de domaine comme suit :

EnvironnementNom de domaine
Poste développeur en localmydomain.loc
Développementmydomain.dev
Testmydomain.tst
Recette (staging)mydomain.stg
Productionmydomain.com, mydomain.org, mydomain.fr, etc.

Configuration du projet en local

Après la configuration de l'hôte virtuel, un projet Adventy n'a besoin que d'une seule chose : connaître l'emplacement du framework. Pour renseigner ce chemin :

  1. depuis le dossier projet, copier/coller le fichier de configuration modèle ./application/configuration/_sample.loc.cfg.php ;
  2. renommer la copie en remplaçant _sample.loc par le nom de domaine local. Par exemple si le nom de domaine local est mydomain.loc, alors le fichier serait ./application/configuration/mydomain.loc.cfg.php ;
  3. éditer maintenant ce fichier, puis rechercher les lignes ci-dessous :
    //Set framework root
    $_ENV['FRAMEWORK_ROOT'] = $_SERVER['DOCUMENT_ROOT'] . '/../../framework/adventy';
    
  4. modifier l'affectation de la variable d'environnement $_ENV['FRAMEWORK_ROOT'] par le chemin du dossier du framework Adventy. Par exemple :
    //Set framework root
    $_ENV['FRAMEWORK_ROOT'] = '/usr/share/php/adventy/adventy-framework-1-0-0';
    

Voilà, c'est tout ! La configuration d'un projet Adventy en local est finie. A l'aide d'un navigateur, lancez https://<mydomain>.loc/ ou http://<mydomain>.loc/ si le site n'est pas en SSL. La page d'accueil devrait s'afficher sans difficulté.

Ce fichier nouvellement créé est un fichier de configuration rattaché au nom de domaine virtuel de l'environnement dans lequel l'application web est exécutée. Ce nom de domaine peut être récupéré en PHP par la variable $_SERVER['HTTP_HOST']. De ce fait, cela permet donc d'avoir un fichier de configuration personnalisable par environnement.

Configuration du projet par environnement

Par exemple, si votre nom de domaine est mydomain.com, vous pourrez avoir les fichiers de configuration suivant selon les environnements que vous souhaitez mettre en place :

EnvironnementFichier de configurationNom de domaine
Poste développeur en localmydomain.loc.cfg.phpmydomain.loc
Développementmydomain.dev.cfg.phpmydomain.dev
Testmydomain.tst.cfg.phpmydomain.tst
Recette (staging)mydomain.stg.cfg.phpmydomain.stg
Productionmydomain.com.cfg.phpmydomain.com

Pour configurer le projet sur un environnement donné :

  1. reprendre les étapes de la section précédente Configuration du projet en local pour créer le fichier de configuration associé à l'environnement ;
  2. éditer le fichier de configuration ;
  3. mettre en commentaire les lignes suivantes, ou les supprimer, car ces lignes de code ne doivent être qu'utilisées en mode debug :
    //Manage error display, only for debug mode
    //error_reporting(E_ALL);
    //ini_set('display_errors', 1);
    
  4. renseigner l'environnement rattaché au fichier de configuration, puis commenter ou supprimer les autres environnements :
    //Set environment
    //'IS_LOCAL' => true,
    //'IS_TEST' => true,
    //'IS_STAGING' => true,
    'IS_PRODUCTION' => true,
    
    Dans cet exemple, l'environnement est la production, qui est donc renseigné dans le fichier de configuration mydomain.com.cfg.php.
  5. mettre le statut CLEAN_ENABLED à true (ou false) :
    //Content is cleaned before sending response
    'CLEAN_ENABLED' => true,	//Staging and production environments
    //'CLEAN_ENABLED' => false,	//Development environment
    
    Ce statut indique au serveur qu'il doit nettoyer la réponse avant l'envoi au client. Cela signifie que les retours à la ligne, les indentations et les tabulations sont supprimés, ce qui allège la réponse.
  6. mettre le statut SERVER_DEFLATE_ENABLED à true (ou false) :
    //Content compressed before sending reponse
    'SERVER_DEFLATE_ENABLED' => true,		//Staging and production environments
    //'SERVER_DEFLATE_ENABLED' => false,	//Development environment
    
    Ce statut indique au serveur qu'il doit compresser la réponse au format deflate avant l'envoi au client, afin de réduire encore plus la taille de la réponse.
  7. enfin, si vous souhaitez créer des variables globales qui soient accessibles dans toute l'application, c'est ici qu'il faudra les déclarer, à la suite des variables CLEAN_ENABLED et SERVER_DEFLATE_ENABLED.

Après la petite configuration, passons au côté fun !