Kohana: Créer son propre "helper"

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

Kohana, à l'instar de Code Igniter, propose un certain nombre de "helper". Les helpers sont en fait des classes php contenant un certain nombre de fonctions statiques qui vont vous faciliter la vie.

Kohana propose par défaut les helpers suivants: Array, Cookie, Date, Download, Email, Expires, Feed, Form, HTML, Inflector, Num, Security, Text, URL, Valid. Pour plus d'informations sur leurs fonctionnalités rendez vous sur la documentation. Par exemple, l'helper "array" propose des fonctions pour manipuler les tableaux. Les fonctions sont indépendantes et de ce fait ne dépendent de rien.

Ce tutorial va montrer comment créer un helper. Comme vous allez pouvoir le constater c'est très simple. Ce tutorial ce base sur l'implémentation d'un helper permettant de savoir d'où provient une requête web. Il sera nommé request. On souhaite créer une méthode request::is_ajax() permettant de déterminer si la requête courante est une requête ajax.

La première chose à faire est de créer un fichier request.php dans le répertoire application/helpers. Notez que le nom du fichier est écrit en minuscule. Dans sa version la plus courte le fichier ressemble à ca:

 
class request_Core{}

Avec ce code, le helper ne contient aucun méthode. Remarquez comme le nom du helper est suivi de l'extension "_Core'. Cela permet de pouvoir étendre les librairies et les helpers de façon transparente. Si l'on veut étendre le helper, il suffit de créer un fichier MY_request.php dans le répertoire application/helpers et y insérer le code suivant:

 
class request extends request_Core{}

Revenons au helper original. Nous avons besoin d'implémenter la méthode is_ajax():

 
1
2
3
4
5
6
7
class request_Core{
    public static function is_ajax() 
    {
 	 return (isset($_SERVER['HTTP_X_REQUESTED_WITH']) 
                   && $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest');
    }
}

Et voilà c'est tout. La fonction est définie comme étant statique. Il vous suffit donc, dans vos controleurs, modèles ou vues de l'appeler avec le code:

 
1
2
3
4
if(request::is_ajax())
{
  echo 'ajax request, yah yah yah';
}

Le helper request en Bonus

L'auteur de cet article a réellement créé un helper request dont les méthodes sont:

 
request::accepts_xhtml();// test si le navigateur accepte le xhtml ou non (IE)
request::accepts_xml();
request::accepts_rss();
request::accepts_atom();
request::is_post(); // la requête est elle une requête POST
request::is_ajax(); // test si c'est une requête ajax (la plupart des framework js supporte ceci)
request::is_delete(); //requête delete
request::is_get();
request::is_put();
request::accepts(); // retourne un tableau des types de contenu acceptés

En téléchargement en suivant ce lien

A lire également

Filed under: Kohana, PHP
Tags: , ,

Leave a Reply