Go to content Go to sidebar

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/

app/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.

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 :

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.

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 :

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:

  1. Pour info, tu cites 2 fois “core.php pour la configuration global de l’application” dans l‘énumération des fichiers /config…

  2. hetlp, comment tu fais quand le port mysql est fixé dynamiquement au démarrage du serveur (wampany par ex) ?

Aide Textile