Billet du blogue

Arguments flexibles en Javascript et PHP

Lorsque je code en Javascript (en utilisant jQuery, bien entendu), les méthodes que j’écris prennent souvent la forme suivante :

function get_billets(params) {
  var def = {
             limit:   10,
             orderby: 'billet_id'
            }
  params = $.extend(def, params);

  //...
}

get_billets({ limit: 5 });

Cela me permet de ne pas me soucier de l’ordre des arguments passés à ces méthodes — j’en avais également parlé dans ce billet le mois dernier. J’utilise la méthode extend() de jQuery qui permet de compléter un objet avec un autre. Dans ce cas-ci, il s’agit d’un objet contenant les propriétés par défaut de la méthode et de l’objet passé en argument.

Lorsque j’ai commencé à porter le code de ce blogue vers Kohana, je me suis dis qu’il serait intéressant d’écrire mes méthodes avec cette technique. Voici comment je m’y prends en PHP (en utilisant le même exemple que la méthode ci-haut) :

function get_billets($params=array()) {
  $def = array(
    'limit' => 10,
    'orderby' => 'billet_id'
  );
  $params = array_merge($def, $params);

  //...
}

get_billets(array( 'limit'=>5 ));

C’est simple. non? La fonction array_merge() se charge de tout!

Posté le avec les tags: , et .

Commentaires fermés

Les commentaires pour ce billet ont été désactivés un mois après la date de publication de ce-dernier. Vous désirez exprimer votre opinion sur ce billet malgré le fait que les commentaires aient été désactivés ? Utilisez le formulaire de contact.


Fil atom des commentaires de ce billet2 commentaires

  • C’est ça qui me manque vraiment en PHP, pouvoir écraser certaines functions avec des parametres différents :/ Mais bon, ta méthode est plus évolutive donc c’est cool (et ya du JSON pour le js <3)

    Palleas (7 février 2008 à 7:46 EST)

  • Ce qu’il faudrait, c’est un genre de PHPON (PHP Object Notation) qui soit natif à PHP.

    Je sais que PHP supporte JSON, mais le fait de devoir toujours passer par les fonctions json_encode et json_decode n’est pas très pratique. Ça l’est seulement lorsqu’on retourne des données via AJAX.

    Rémi Prévost (7 février 2008 à 8:20 EST)