Overblog
Editer l'article Suivre ce blog Administration + Créer mon blog
14 février 2010 7 14 /02 /février /2010 12:25

La programmation orientée objet (ou POO) en PhP est de plus en plus présente. L'évolution du langage en lui même le montre, lors du passage de PhP 4 à PhP 5 des efforts ont été faits pour aller dans ce sens.

 

Les développeurs ont donc de plus en plus tendance à utiliser des classes et des objets mais, comme tout développeur qui se respecte, vous savez qu'en PhP les tableaux sont des outils très puissants. Ne serait-ce pas merveilleux si on pouvait cumuler les avantages des deux ? Et bien c'est possible.


L'interface ArrayAccess

 

Nous ne reviendrons pas sur ce qu'est une interface, vous le savez probablement et si vous ne savez pas, soit vous n'avez pas besoin de savoir pour l'utiliser, soit vous trouverez une description ailleurs.

 

L'interface ArrayAccess est donc une interface qui, lorsqu'elle sera implémentée, nous permettra d'ajouter des fonctionnalités propres aux tableaux à nos objets.

 

Elle comporte 4 méthodes :

 

  • offsetSet

  • offsetGet

  • offsetUnset

  • offsetExists

 

Leurs noms sont assez explicite pour se priver d'une description, voyons par l''exemple ce u'on peut en faire.

 

<?php

class MaClasse implements ArrayAccess

{

    private $nom;

    private $prenom;


    function getNom(){

        return $this->nom

    }


    function offsetSet($offset, $value){

        $offset = strtolower($offset);

        switch($offset){

            case 'nom':

            case 'prenom':

                $this->{$offset} = $value;

                break;

            default :

                throw new Exception('Undifined offset '.$offset,1);

        }

        return true;

    }


    function offsetGet($offset){

        $offset = strtolower($offset);

        switch($offset){

            case 'nom':

            case 'prenom':

                return $this->{$offset};

            default :

                throw new Exception('Undifined offset '.$offset,1);

        }

    }


    function offsetUnset($offset){

        $offset = strtolower($offset);

        switch($offset){

            case 'nom':

            case 'prenom':

                $this->{$offset} = null;

            default :

                throw new Exception('Undifined offset '.$offset,1);

        }

    }


    function offsetExists($offset){

        $offset = strtolower($offset);

        switch($offset){

            case 'nom':

            case 'prenom':

                return true;

            default :

                return false;

        }

    }

}

?>

 

Une fois notre classe définie, on peut facilement utiliser notre objet comme un tableau :

 

<?php


    $variable = new MaClasse();

    $variable['nom'] = 'mon nom';

    $variable['Prenom'] = 'mon prenom';

    if(array_key_exists('adresse',$variable)){

        echo 'Il y a une adresse'

    }

    else{

        echo 'Il n'y a pas d\'adresse';

    }

    unset($variable['prenom']);


?>

 

 

Facile non ? Votre objet est maintenant accessible comme un tableau. Si vous aviez une application qui manipulait des tableaux en PhP et que vous souhaitez lui ajouter des fonctionnalités, il est donc facile de définir une classe implémentant l'interface ArrayAccess et de remplacer les tableaux par des objets.

 

Conclusion ?

 

Ce n'est qu'une première étape dans notre procédé de croisement entre tableaux et objets. Tout décrire en une fois aurait été trop long alors la suite dans un prochain article.

Partager cet article
Repost0

commentaires

Présentation

  • : Carnet de route d'un développeur PhP...
  • : Ah ! Une description... Ben en fait je me disais que j'allais faire un blog depuis longtemps, sauf que c'était juste pour y stocker des trucs pour moi, des espèces de post-it virtuels. Bon tant qu'à faire autant qu'il te profite à toi aussi.
  • Contact

Recherche

Liens