Configuration de cakePHP
Comme on a expliqué dans l’article de présentation, cakePHP fait partie de cette vague de framework qui favorisent les conventions sur la configuration. Qu’est ce que ça veut dire tout ça, ça veut dire que pour toutes les choses qui sont communes, on établi des conventions et on dit, ça doit être comme ça. Ce n’est pas une obligation, mais c’est mieux car ça a un avantage : ça permet de travailler plus vite, et de ne pas se soucier des détails inutiles (lire Productivité). Cependant y a un minimum de configuration quand même, Cake peut deviner beaucoup de choses mais pas tout ! Il ne peut pas par exemple savoir la base de données que vous voulez utiliser, l’utilisateur et son mot de passe.
Une chose est à savoir, Cake est anti configuration XML et YAML . Toute la configuration se fait par des fichiers PHP, et dans certains cas, des fichiers INI simples.
Et ça marche, ça rend les choses plus cohérentes et moins compliquées !
Moins tu passes du temps à configurer, plus c’est bien.
Dans cet article donc, on va voir les différentes choses qu’on peut configurer, y en a pas beaucoup vous allez voir pour qu’on est une application qui marche.
config/
Toute la configuration se passe dans le répertoire config dans votre dossier d’application app. Comme la figure la montre y a différents fichiers qu’on peut modifier.
- database.php.default Sert à configurer les connexions à la base de données. (Notez .default à la fin)
- core.php pour la configuration global de l’application
- routes.php pour configurer les Routes (Chemins). Un outil très puissant, c’est comme des raccourcis pour les URLs, on va consacrer un article sur ça.
- core.php pour la configuration global de l’application
- bootstrap.php c’est comme un boot, on met ici des choses qu’on veut avoir au démarrage de l’application.
- inflections.php Le langage maternel de cake est l’anglais. Comme Cake est un bon éleve, il sait transformer du pluriel où singulier et vise versa, cependant cake ne sait pas le français, les règles ne sont pas les même naturellement. Vous configurez dans ce fichier des règles pour aider cake à apprendre de nouveaux mots et de savoir transformer, sympa ;)
- acl.ini.php ce fichier à une extension .php mais en réalité si vous l’ouvrez, vous allez trouver que c’est un fichier INI. Il sert à configurer l’ACL :WIKIPEDIA qui est un outil très puissant de gestion des accès (qui a droit à quoi)
- sql/ ce répertoire contients des fichiers *.sql que vous pouvez utilisez si vous activez quelques fonctionnalités en plus dans cake, par exemple, le stockage de la session dans la base de données, db ACL. Vous pouvez ajouter des fichiers ici qui sont spécifiques à votre application (si vous voulez automatiser une installation ou autre).
Dans ce qui suit, on va voir les deux fichiers importants qui sont database.php et core.php.
database.php
Dans une première installation de cake, ce fichier tout simplement n’existe pas ! Kuwaaa ?! Pas de panique. C’est en fait database.php.default mais il faut le renommer (ou le copier avec) en database.php.
Voilà ce qu’on trouve (commentaire omit) dans ce fichier :
class DATABASE_CONFIG
{ var $default = array(‘driver’ => ‘mysql’, ‘connect’ => ‘mysql_connect’, ‘host’ => ‘localhost’, ‘login’ => ‘user’, ‘password’ => ‘password’, ‘database’ => ‘ project_name ‘, ‘prefix’ => ‘’);var $test = array(‘driver’ => ‘mysql’, ‘connect’ => ‘mysql_connect’, ‘host’ => ‘localhost’, ‘login’ => ‘user’, ‘password’ => ‘password’, ‘database’ => ‘project_name-test’, ‘prefix’ => ‘’);
}
Euh oui une classe avec deux variables membres.
$default est la configuration activée par défault. $test est juste un exemple pour montrer qu’on peut avoir plusieurs configurations et on peut changer de configuration quand on veut en temps réel. Pour des besoins de tests ou autre. Aussi, une seule application peut utiliser plusieurs configurations, donc par exemple plusieurs tables qui sont dans différentes base de données hébergées dans différents serveurs. Sympa.
Voyons de plus près les différentes options.
connect
connect Permet de spécifier non seulement la base de données qu’on veut utiliser mais aussi le type de connexion. Il y a deux types, normal ou persistant.
Les connexions persistantes sont des liens SQL qui ne se ferment pas quand l’exécution de votre script finit. Quand une connexion persistante est demandée, PHP vérifie s’il y a déjà un connexion persistante identique (qui est demeurée ouverte avant) – et s’elle existe, il l’emploie. S’elle n’existe pas, il crée le lien. Une connexion identique est une connexion qui a été ouverte au même serveur, avec le même username et le même mot de passe (où applicable).
Pour comprendre la différence, je vous invite à regarder sur wikipedia ou plus généralement sur google . y a des articles qui expliquent ça très bien.
Cake supporte différentes base de données en natif: mySQL (mysqli aussi), postgreSQL, SQLite, Oracle, Sybase, MSSQL. S’il n’existe pas un driver spécifique pour la base de données, Cake vous donne la possibilité d’utiliser adoDB ou même PEAR. Sympa.
Si on veut établir une connexion persistante avec mySQL on spécifie mysql_pconnect sinon mysql_connect. Pour postgreSQL pg_pconnect et pg_connect respectivement.
sqlite_popen et sqlite_open pour SQLite, etc pour les autres drivers supportés..
Pour ADOdb utilisez un qui se trouve dans cette liste http://phplens.com/adodb/supported.databases.html et ajoutez ‘|p’ pour dire que c’est une connexion persistante (exemple adodb-mssql|p)
host
Spécifie le serveur le serveur où se situe la base de données. Pour spécifier le port, quand c’est pas un port standard, vous ajoutez ‘ :port#’ à mySQL, pour postegreSQL ‘port=#’. Exemple ‘localhost:6547’, ‘localhost port=5432’
login
Nom d’utilisateur de la base de données.
password
Mot de passe d’utilisateur de la base de données.
database
La base de données à sélectionner.
prefix
Certains hébergeurs n’offrent qu’une base de données. Donc vous n’aurez qu’une base de données pour gérer toutes les applications que vous avez. Pour désassocier les tables que cake utilise des autres (pour ne pas avoir des conflits de nom par exemple) vous pouvez les préfixer. Vous communiquez ce préfix à cake par le biais de cette option pour qu’il sache les tables qu’il doit utiliser.
core.php
Fichier important mais vous n‘êtes pas obligé d’y toucher non plus !
Il consiste en des constantes ( define ) qui prennent différentes valeurs.
DEBUG
Cette Option est importante, agit sur beaucoup de choses et permet de changer le comportement de l’application. Ses valeurs sont :
- 0 : Production
- 1 : Développement
- 2 : permet de voir les requêtes SQL en bas de la page
- 3 : permet de voir les requêtes SQL en bas de la page et le dump de l’objet courant.
En gros, En production ( 0 ), les messages d’erreurs ne sont pas affichés et cake ne vous assiste pas. Quand un URL qui n’existe pas est demandé, ça déclenche une erreur 404 que vous pouvez remplacer en créant app/views/errors/error404.thtml
Développement (1), c’est la valeur par défaut, normalement quand vous êtes entrain de Développer votre application vous avez besoin de regarder les erreurs pour pouvoir les corriger etc.
2 permet d’afficher un tableau en bas de la page qui montre toutes les requêtes de la base de données, avec le temps d’exécution, etc. 3 c’est encore plus hardcore est ça permet d’afficher l’objet courant tout entier, ( les valeurs des variables membres etc..)
CACHE_CHECK
Cake dispose d’un système de cache des pages finales (View Cache) qui permet d’accélérer l’application. Cette option permet de l’activer ou de le désactiver globalement. Par défaut, ce cache est désactivé.
LOG_ERROR
Niveau d’erreur à loguer, par défaut 2.
AUTO_SESSION
Indique si la session doit être créé automatiquement au démarrage. Par défaut Oui.
CAKE_SESSION_SAVE
Indique la méthode que vous voulez utiliser pour sauvegarder la session.
- php : Les fichiers seront sauvegarder dans la valeur indiqué dans php.ini
- cake : Les fichiers seront sauvegarder dans app/tmp/session/
- database : La session sera sauvegarder dans la base de données. config/sql/ sessions.sql contient le SQL nécessaire pour ça.
CAKE_SESSION_COOKIE
Le nom de la session. Si les cookie sont utilisés, c’est le nom de la cookie aussi.
CAKE_SESSION_TIMEOUT
Spécifie le temps d’inactivité en secondes après lequel cake va détruire la session.
Cette option est utilisée en conjonction avec CAKE_SECURITY. Valeur par défaut 1200 ( 20 minutes )
CAKE_SECURITY
Cette option à un nom trompeur, on fait elle n’est reliée qu’aux sessions, et n’agit pas sur autre chose en relation avec la sécurité. Peut être dans l’avenir d’autres choses vont l’utiliser. Mais on tout cas pour l’instant, il en est pas ainsi.
Elle peut avoir trois valeurs :
- low : La valeur de CAKE_SESSION_TIMEOUT sera multipliée par 300
- medium : La valeur de CAKE_SESSION_TIMEOUT sera multipliée par 100
- high : La valeur de CAKE_SESSION_TIMEOUT sera multipliée par 10
WEBSERVICES
Active ou désactive la gestion des web services.
COMPRESS_CSS
Active ou désactive la compression des fichiers CSS. Par défaut non activée.
AUTO_OUTPUT
Cake à la notion de Helpers, c’est des classes qu’on utilise dans les Vues pour faciliter des tâches de présentation. Pour afficher un lien hypertext on peut utiliser la méthode link du helper html, exemple :
<?php echo $html->link('CakePourTous', 'http://www.cakepourtous.org'); ?>
Sympa mais quelle relation avec AUTO_OUTPUT. En fait cette option nous permet de dire à cake d’afficher le résultat directement sans le retourner, donc plus besoin de echo/print.
Si AUTO_OUTPUT est true, on écrira :
<?php $html->link('CakePourTous', 'http://www.cakepourtous.org'); ?>
Cette option est par défaut désactivée car souvent on est ramené à faire un traitement avec les données retournées.
Y a d’autres options dans le fichier mais je me suis arrêté sur les plus importantes. On n’est pas obligé de connaître toutes ces valeurs en fait, cake leur donne des valeurs par défaut.
Conclusion
Pour résumer, si on a besoin de la base de données database.php est une étape obligée. Mais en même temps, vous l’avez vu vous-même, c’est très intuitif.
Je répète qu’on n’a pas besoin de toucher à core.php pour avoir une application fonctionnelle. Mais des fois on sera ramener à le modifier, ça reste néanmoins très simple. Surtout si on veut passer l’application en production.
Voilà pour la configuration, dans d’autres framework, la configuration peut s’avérer particulièrement pénible, ce n’est heureusement pas le cas de Cake car le premier fondement du framework est de minimiser au maximum cette étape.
Portez vous bien.
Cake !



Comments:
oxygene []
8 06 2007 - 14:40 #
Pour info, tu cites 2 fois “core.php pour la configuration global de l’application” dans l‘énumération des fichiers /config…
jedabo []
13 08 2007 - 21:01 #
hetlp, comment tu fais quand le port mysql est fixé dynamiquement au démarrage du serveur (wampany par ex) ?