Billet du blogue

Un autre avantage de JSON

J’écris beaucoup de code Javascript ces temps ci, et une des choses que j’apprécie le plus est la notation d’objet Javascript (aussi appelée JSON). Par exemple, au lieu d’utiliser ce code :

function enregistrer(prenom, nom, openid) {
  return prenom+" "+nom+" <"+openid+">";
}

j’utilise celui-ci :

/**
 *  param {Object} infos
 */
function enregistrer(infos) {
  return infos.prenom+" "+infos.nom+" <"+infos.openid+">";
}

ce qui me permet ensuite d’embellir mon appel de fonction :

//au lieu de: enregistrer("Rémi", "Prévost", "http://remiprevost.com/");

enregistrer({
  "prenom" : "Rémi",
  "nom"    : "Prévost",
  "openid" : "http://remiprevost.com/"
});

Je trouve que non seulement cela est plus beau visuellement, cela évite la confusion créée par un trop grand nombre de paramètre à une fonction. Lorsqu’on est rendu avec une fonction qui compte plus que 5 paramètres, je crois qu’il est temps d’utiliser un objet qui contient ces derniers — de sorte à ce qu’on ne se retrouve pas avec une fonction comme celle-ci :

function enregistrer(prenom, nom, openid, adresse, codepostal, province, pays) {
  // ...
}

enregistrer("Rémi", "Prévost", "http://remiprevost.com", "G0R2T0", "Canada... heu... ah non merde! On doit passer la province avant!");

J’aimerais bien pouvoir utiliser une notation d’objet simple en PHP de façon native. La façon la plus simple que je connaisse est d’utiliser un nouvel objet stdClass :

$obj = new stdClass();
$obj->nom    = "Rémi";
$obj->prenom = "Prévost";
$obj->openid = "http://remiprevost.com/";
enregistrer($obj);

Quelqu’un a une autre méthode à me suggérer?

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

  • Un tableau ?

    Plus simple à affecter, mois gourmand en mémoire. Autant je suis adepte de la prog Objet, autant là c’est se fatiguer pour rien, amha.

    $obj = array( 'nom' => 'Rémi', 'prenom' => 'Prévost', 'openid' => 'http://remiprevost.com' ); enregistrer($obj);

    My 2 cents…
    PS: Pas de retour à la ligne possible dans le code ?

    Tonio (4 janvier 2008 à 6:17 EST)

  • En effet, j’y ai pensé plus tard dans la soirée mais je n’ai pas eu le temps de mettre à jour le billet. Un tableau est une excellente idée — et même que je simplifierais encore ton code :

    enregistrer(array(
      'nom' => 'Rémi',
      'prenom' => 'Prévost',
      'openid' => 'http://remiprevost.com'
    ));
    

    Oh et en passant, pour faire des blocs de code, il suffit de précéder les lignes de code par 4 espacements ou 1 tabulation. Et en bonus, si la première ligne est soit {{{html}}}, {{{css}}}, {{{javascript}}} ou {{{php}}} (précédée des caractères mentionnés ci-haut), on obtient une syntaxe colorée!

    Rémi Prévost (4 janvier 2008 à 8:18 EST)