FuelPHP : mise en place de l'environnement
Installation via la ligne de commande
Sommaire du tutoriel
Développer sous FuelPHP
Pour les habitués de Git et de la ligne de commande sous Linux, vous pouvez aller faire un tour sur la page de la documentation officielle qui vous explique comment mettre tout ça en place : http://docs.fuelphp.com/installation/instructions.html
Pour tous les autres moins doués (comme moi), il y a la méthode classique :
Installation manuelle
Télécharger la version la plus récente des sources ici : http://docs.fuelphp.com/installation/download.html
À l’heure où j’écris cet article, il existe une version plus récente que je vous recommande : https://github.com/downloads/fuel/fuel/fuelphp-v1.1.zip (sortie le 13 décembre 2011).
Mettre ça dans votre dossier d’hébergement, par exemple c:\\wamp\\www\\mon_site_fuel\\ (WampServer sous Windows) ou /var/www/mon_site_fuel/ (Linux).
Information sécurité ! En théorie, seul le répertoire public/ doit être accessible via l’URL. Hors, avec notre installation, le répertoire fuel/ et le fichier oil le sont également. Ce qui n'est pas nécessaire et présente un risque de sécurité, car ils ne sont pas prévus pour ça.
Pour notre environnement en local, ça n'est pas très grave, mais n’utilisez pas cette configuration ailleurs qu’en local !
Pour résoudre ce problème de sécuité, si vous en avez la possibilité et que vous savez comment faire, utilisez le répertoire public/ en tant que Document Root pour votre installation.
Désormais, si vous allez sur http://localhost/mon_site_fuel/public/index.php vous devriez voir la page de bienvenue qui s’affiche et vous félicite :
Réécriture d'URL
Fuel fournit un fichier .htaccess pour Apache pour utiliser la réécriture d'URL lorsque c'est possible.
Avec la réécriture, les URL seront de la forme http://localhost/mon_site_fuel/public/votre/page/ici
Sans la réécriture, les URL seront de la forme http://localhost/mon_site_fuel/public/index.php/votre/page/ici
La réécriture permet donc d'avoir des URL plus jolies en supprimant la partie index.php dans l'URL.
Structure des fichiers proposée par défaut
Avant d’aller plus loin, il est important de voir les répertoires qui existent et ce qu’ils contiennent :
Vous trouverez trois choses importantes à la racine :
- fuel/ : le code PHP c’est par ici
- public/ : dossier accessible depuis le navigateur (images, CSS, JavaScript, etc.)
- oil : l’exécutable ligne de commande de FuelPHP
Le répertoire fuel/ contient trois sous-répertoires importants :
- app/ : votre application (configuration, contrôleurs, modèles, vues, etc.)
- core/ : le cœur de FuelPHP. Nous l’appellerons Core.
- packages/ : extensions du Core qui sont séparées car facultatives
Les chemins vers ces trois répertoires sont définis dans le fichier public/index.php, et sont donc modifiables facilement si vous le voulez. :-)
Enfin, la partie importante pour nous (celle que nous allons modifier) se situe dans le dossier fuel/app/ :
- config/ : toute la configuration, notamment le fichier général config.php
- classes/ : contrôleurs, modèles, helpers, logique métier. Quand vous créez un fichier PHP c’est probablement ici qu’il trouve sa place !
- controller/ : les contrôleurs
- model/ : les modèles utilisés par l'ORM
- views/ : les vues et templates
D’autres dossiers qui nous concernent moins pour le moment sont également présents :
- cache/
- lang/
- logs/
- modules/
Assurez-vous juste à ce que cache/ et logs/ soient inscriptibles (droits d'écriture w).
Répondre à une requête de l'internaute
Tout commence par public/index.php qui sert de contrôleur frontal (toutes les requêtes passent par ce fichier) :
- Étape 1, initialisation :
- Les constantes vers les trois répertoires principaux sont définies : APPPATH (application), COREPATH (Core FuelPHP) et PKGPATH (packages) ;
- Le fichier d'initialisation de l’application est inclus : APPPATH/bootstrap.php (cf. ci-dessous pour le détail)
- Étape 2, traitement / exécution : de la requête qui génère une réponse
- Étape 3, affichage : de la réponse générée
Initialisation de l'application
Correspond au détail du fichier APPPATH/bootstrap.php :
- Chargement de la classe Autoloader
- Inclusion du fichier COREPATH/bootstrap.php de FuelPHP (en gros, le Core configure l’Autoloader pour ses propres classes)
- Configuration et activaton de l’Autoloader
- On définit l’environnement (développement, test / intégration, pré-prod / stage, production)
- Enfin, Fuel::init() initialise l'application en fonction de l'environnement et de la configuration (fichier config.php)
- Configuration du profiling et du cache
- Configuration de la timezone, de l’encodage et de la locale
- Configuration du base URL
- Filtrage des données GPC (Get, Post et Cookie)
- Active les packages, classes, config et langues à toujours charger
- Chargement des routes
Traitement et exécution de la requête
L'objectif est de traiter une requête de l'internaute (appel d'une URL via son navigateur) pour lui afficher une réponse. Cette transformation est le rôle du contrôleur.
Correspond au détail de l’étape 2 (Traitement / exécution) du cheminement dans public/index.php :
- Détermine le bon contrôleur en fonction des routes définies
- Créé l’instance du contrôleur
- Appelle sa méthode before()
- Exécute l’action appropriée, qui génère la réponse
- Appelle la méthode after()
Ceci peut être répétée plusieurs fois s’il y a des sous-requêtes (HMVC, nous verrons cette notion dans un article).
Configuration de l’application
FuelPHP fait partie de l’école « Configuration over convention ». En réalité, ils ont bien des conventions, mais surtout pour ce qui est bas-niveau. Cependant, la configuration est un point central ! Je crois que l’important est qu’il y a très peu de magie dans le code. Et qu'au final, il est extrêmement simple de comprendre ce que l’on fait.
Les fichiers de configuration sont stockés dans le répertoire app/config. La configuration générale de l’application se situe elle dans le fichier config.php.
En voici les options les plus importantes :
- base_url : le base URL de votre site (utilisé pour générer les URL)
- index_file : index.php si vous n’utilisez pas l’URL rewriting. false sinon.
- profiling : activer ou non le profiler
- caching : activer ou non le cache
- errors.notices : faut-il afficher les notices ?
- language : langue principale de votre application
- language_fallback : langue de repli
- locale : la locale PHP (par exemple fr_FR ou fr_CA)
- encoding : encodage de votre application
- default_timezone : par exemple Europe/Paris
- module_paths : tableau contenant les dossiers où peuvent se situer les modules
En fonction de l’environnement (développement, test / intégration, pré-prod / stage, production) des fichiers supplémentaires de configuration peuvent être chargés.
Par exemple, pour config/config.php si l’environnement est Fuel::DEVELOPMENT et que le fichier config/development/config.php existe, il sera également chargé et les valeurs qu’il contient seront fusionnées avec celle du fichier de base (avec une priorité plus élevée).
L'installation est désormais terminée. C'est maintenant que tout commence ! À très vite pour la suite de ce tutoriel FuelPHP.