Main Contents

Implémenter l’interface Countable avec PHP 5

Coding, PHP

C’est une interface très pratique qui vous permet de “compter” votre objet. Plus simplement, vous allez pouvoir utiliser la fonction count() ou sizeof() sur une instance de classe :


class CountIt implements Countable {
protected $items = array('Riri','Fifi','Loulou');
public function count() { return sizeof($this->items); }
}
$c = new CountIt();
echo ‘Moi je compte ‘, sizeof($c),’ items’;
?>

C’est vrai que ça peut paraître illogique de compter votre objet, ce n’est pas mon avis vu que cela correspond assez à la logique PHP et à la plupart de ses fonctions. Cette interface est disponible dans la SPL et est déjà implémentée dans des classes telles que ArrayObject ou SimpleXMLIterator.

Je l’adopte dores et déjà pour l’objet Search d’un projet sur lequel je travaille pour l’IUT et bientôt sur ma classe SQL.

Palleas @ juin 18, 2008

14 commentaires

  1. Hugo juin 18, 2008 @ 20:54

    Nice ! A quand d’autres tutos sur Apprendre-PHP ? :)

  2. Palleas juin 18, 2008 @ 20:55

    Quand j’aurais le temps! :P
    Là c’est en taffant sur un projet de l’IUT que j’ai blogué ça, j’suis très spontané ^^

    J’vais poster celui-ci ASAP ;)

  3. Julien Tartarin juin 19, 2008 @ 8:11

    J’espère que ta classe SQL va pas servir à stocker les résultats !

    Tu me fais peur :)

  4. Palleas juin 19, 2008 @ 8:47

    Non non elle ne stocke pas les résultats, mais en fait c’est plus un support pour tester des trucs (cf Iterator, et now Countable).

    Vu que c’est une interface, tout ce que tu dois faire c’est définir une méthode count(), moi la mienne (de méthode count()) me retourne le mysql_ num_rows().

  5. Julien Tartarin juin 19, 2008 @ 9:32

    Bon ça va alors, mais j’ai eu peur !

  6. Julien Tartarin juin 19, 2008 @ 9:34

    (PS: il est toujours pas 9:32, faut passer le serveur en CEST ! (ou le mettre à l’heure) ntpdate et tzsetup sont tes amis)

  7. Palleas juin 19, 2008 @ 9:39

    @Julien Tartarin : Bah ça ne servirait à rien de stocker les résultats dans la classe :p

  8. Julien Tartarin juin 19, 2008 @ 11:35

    On est bien d’accord ^^

  9. ZaZ juin 19, 2008 @ 18:30

    Nice ! A quand des tutos sur le blog-dont-on-ne-doit-pas-prononcer-le-nom ?

  10. Julien Tartarin juin 19, 2008 @ 23:37

    Wahou c’est à l’heure :)

  11. Palleas juin 20, 2008 @ 1:01

    @Julien Tartarin : C’était la faute de wordpress en fait :$

  12. Meshvere juin 20, 2008 @ 20:34

    @Palleas :
    toujours reporter la faute sur quelqu’un d’autre, très important !

  13. ys juin 20, 2008 @ 21:54

    @palleas: “C’est vrai que ça peut paraître illogique de compter votre objet, ce n’est pas mon avis vu que cela correspond assez à la logique PHP et à la plupart de ses fonctions.”

    ah, le php est logique? rassure moi stp, dis moi que c’était de l’humour… ;)

    @meshvere: wala, là chui d’accord :p

  14. Hugo juin 20, 2008 @ 22:45

    >> ah, le php est logique? rassure moi stp, dis moi que c’était de l’humour…

    PHP non ! La logique c’est le développeur qui l’a met en place. Donc PHP est un langage tout aussi logique qu’un autre s’il est utilisé intelligemment et avec rigueur.

Suivre les commentaires de ce billet par RSS

Laisser un commentaire