Les dessous de Kohana: la mise en place (Kohana::setup)

Cet article est traduit de l'article suivant avec l'accord de son auteur

Dans les articles précédents, j'ai traité des deux premiers fichiers principaux chargés par Kohana. Le premier est le fichier index.php où toute application basée sur Kohana commence; le second bootstrap.php se charge d'initialiser Kohana. L'initialisation effectue deux tâches majeurs qui seront abordés dans cet article, le lancement de Kohana::setup et l'enregistrement de plusieurs évènements.

Déclaration des tampons et de méthodes utiles

La méthode Kohana::setup peut être trouvée dans le fichier Kohana.php dans l'arborescence system/core/Kohana.php.

Ca commence par un certain nombre de définition de constantes et de timezone qui nous importent peu.

La première étape importante est l'enregistrement de la méthode Kohana::output_buffer comme tampon de sortie pour Kohana. Ceci sera traité dans un autre article.

 
// Start output buffering
ob_start(array('Kohana', 'output_buffer'));

La deuxième étape est l'enregistrement de la méthode Kohana::auto_load() comme méthode de chargement automatique via ’spl_auto_load_register’.

 
// Set autoloader
spl_autoload_register(array('Kohana', 'auto_load'));

Attardons nous quelque instants sur cette instruction: la méthode ’spl_auto_load_register’ permet, lors d'une tentative d'instanciation d'un objet d'une classe qui n'existe pas, d'appeler la fonction définie en l'occurrence Kohana::auto_load. Cette méthode va essayer de charger la classe afin que l'exécution du script puisse continuer. Ainsi il n'est pas nécessaire de charger une classe avant de d'instancier un objet ce qui rend le code plus ordonnée.

Dans Kohana la méthode Kohana::auto_load effectue le chargement des librairies, contrôleurs, modèles, drivers et helpers. Elle permet aussi de supporter l'extension de classe transparente. C'est une des grandes différences avec CodeIgniter où il faut utiliser la syntaxe $this->load pour d'abord charger la classe et ensuite l'instancier.

La mise en place de Kohana via Kohana::setup continue et enregistre les méthodes de gestion des erreurs et d'exceptions. Les en-têtes UTF-8 (headers) sont aussi affectées ici ; si vous le souhaitez vous pouvez écraser ce paramètre n'importe où dans votre application. La mise en place des logs est ensuite définie.

Les évènements

La suite est très importante: le rattachement des méthodes aux évènements. Le premier évènement, system.routing est rattaché à deux méthodes: la méthode Router::find_uri qui essai de déterminer l'URI courante et la méthode Router::setup qui va effectuer le routage et affecte le fichier, le contrôleur et les arguments des contrôleurs appelés.

Rappel: une URL de type http://monsite.com/index.php/admin/produit/12 appelle la méthode produit avec l'argument 12 du controleur admin.

Le troisième évènement est system.execute et est rattaché à Kohana::instance qui effectue le dispatch. Sujet couvert dans un autre article.

La méthode suivante, Kohana::show_404 est rattaché à l'évènement system.404. Vous pouvez lancer cet événement quand vous le souhaitez lorsqu'un utilisateur accède à une page qu'il n'est pas supposé visiter. Cet évènement est appelé à plusieurs endroits dans Kohana lorsque quelque chose se passe mal.

Enfin, la dernière méthode Kohana::shutdown est attachée à l'évènement system.shutdown. C'est la dernière chose que fait Kohana avant de s'arrêter. Vous pouvez voir l'ordre de tous ces évènements dans le fichier bootstrap bien que certains d'entre eux soit appelés dans Kohana::instance.

Les "Hooks"

Une des plus grosses tâches de la méthode Kohana::setup est le chargement des hooks. Cette méthode est exécutée juste avant que le premier évènement system.ready qui n'est par défaut attaché à aucune méthode. Cela signifie que vos "hooks" peuvent attacher des méthodes aux évènements au plus tôt possible. Voir la documentation pour plus d'informations.

A lire également

Filed under: Kohana, PHP
Tags: , , , ,

Leave a Reply