IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[POO] [SPL] RecursiveArrayIterator


Sujet :

Langage PHP

  1. #1
    Inscrit

    Profil pro
    H4X0|2 @ YourLabs Business Service
    Inscrit en
    Octobre 2006
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : H4X0|2 @ YourLabs Business Service
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 657
    Points : 909
    Points
    909
    Par défaut [POO] [SPL] RecursiveArrayIterator
    Je débute en trucs costauds et voila plusieurs jours que je m'acharne sur RecursiveArrayIterator ... Je n'ai trouvé aucun bouquin qui n'en parle et je n'arrive pas à me servir de la documenation éfficacement. Attention, cette interface objet n'est incluse que depuis 5.2 et quelques si je me souviens bien.

    Est-ce-que vous pouvez m'aider à comprendre la démarche pour comprendre la documenation s'il-vous-plaît ?

    Sinon, vous pouvez tenter votre chance sur mon probleme mais j'ai peur que vous ne perdiez trop de temps en vain ...
    Les objets :
    classe abstractModel contient un tableau protected pour usage avec __get() et __set().
    Tout les autres Model étendent la classe précédente et l'usage de leurs propriétés est donc le même.

    Les états
    Chaque objet peut avoir d'autres objets dans son tableau, on a donc des tableaux de propriétés du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    tableau = array(
      "prop0" => "val0",
      "prop1" => $obj1
      "prop2" => array(
        0 => $obj20,
        1 => $obj21,
      ),
    );
    Dont les objets ont des tableaux similaires ...

    Le but :
    Pouvoir faire :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    foreach ( $rootObject as $subObject ) {
      if ( ! is_object( $subObject ) ) {
        die( 'perdu : on ne veut que tous les objets' );
      }
    }

    Bien, sur, j'en ai plein d'autres comme ca a faire ... Ce qui m'aidera le plus est qu'on me donne des astuces comme le parcours que je dois faire dans la doc ... Nottez que j'implemente deja pas mal d'iterateurs en tout genres, mais toujours a deux ou trois niveaux maximum et avec pointeur manuel ...
    Si quelqu'un en a besoin, je peux fournir mes sources mais je suppose que le problême est clairement posé en attendant.

    Merci d'avance ....

  2. #2
    Membre actif Avatar de frol
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 288
    Points : 296
    Points
    296
    Par défaut
    je n'arrive pas bien à saisir ton but si tu pouvais un peu éclaircir ce point
    Sinon pour les gros travaux, mais je vais sans doute me faire lyncher, je préfère une solution plus costaude du genre java (WebObjects)

  3. #3
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 657
    Points : 910
    Points
    910
    Par défaut
    Salut,

    Un PDF qui devrait t'interesser :
    http://somabo.de/talks/200504_php_qu...the_masses.pdf

    La doc n'est effectivement pas facile a comprendre, c'est pourquoi je te conseille de regarder plutôt des tutoriaux et des exemples de code si tu veux comprendre le principe.


    Quant à ton exemple, si j'ai bien compris tu cherches à faire quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    $tableau = array(
      "prop0" => "val0",
      "prop1" => 1,
      "prop2" => array(2, 3)
    );
     
    class NumericFilter extends FilterIterator { 
      function __construct(Iterator$it) { 
        parent::__construct($it); } 
      function accept() { 
        return is_numeric($this->current()); } 
    }
     
    foreach (new NumericFilter(new RecursiveIteratorIterator(new RecursiveArrayIterator($tableau))) as $cle => $val)
    {
      echo "=> cle: $cle, val: $val\n";
    }
     
    Affiche :
    => cle: prop1, val: 1
    => cle: 0, val: 2
    => cle: 1, val: 3
    A part que tu veux l'encapsuler dans un objet et filtrer des objets au lieu des entiers.

  4. #4
    Inscrit

    Profil pro
    H4X0|2 @ YourLabs Business Service
    Inscrit en
    Octobre 2006
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : H4X0|2 @ YourLabs Business Service
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 657
    Points : 909
    Points
    909
    Par défaut
    Merci infiniement, le document et le code d'exemple m'ont vraimment aidé.
    (Comme quoi google codesearch est encore jeune ....)

    Par contre, je n'ai pas encore reussi a faire un filtrage d'objet puisque l'iterateur ne peut pas s'empecher d'iterer dedans ... La doc me sera utile puisque je compte surcharger quelques methodes de l'iterateur.

    Merci encore et a bientot

    PS: Je pnese que ce code a sa place dans 'vos meilleurs code sources'.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 24/02/2010, 16h17
  2. [POO] C'est quoi une classe en claire...???
    Par Spack dans le forum Langages de programmation
    Réponses: 5
    Dernier message: 26/01/2009, 15h53
  3. Réponses: 16
    Dernier message: 06/06/2007, 12h42
  4. [langage] Pb POO perl
    Par loothoof dans le forum Langage
    Réponses: 4
    Dernier message: 26/05/2004, 12h08
  5. lier un cube à un objet (POO)
    Par Hypnos dans le forum OpenGL
    Réponses: 12
    Dernier message: 26/08/2003, 21h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo