Précédent   Forum des professionnels en informatique > PHP > Langage > Syntaxe
Syntaxe Forum d'entraide sur la syntaxe de PHP et la POO. Avant de poster -> FAQ syntaxe, Cours d'initiation et cours de POO
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/09/2007, 08h30   #1
Inscrit
 
Avatar de is_null
 
Inscription : octobre 2006
Messages : 637
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 637
Points : 690
Points : 690
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 :
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 :
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 ....
__________________
Q: Dois-je haïr et cogner sur Microsoft ?
R: Non, vous n'êtes pas obligé. Non pas que Microsoft n'est pas écoeurant, mais il y avait une culture hacker bien avant Microsoft et il y en aura une bien après que Microsoft aura été de l'histoire ancienne. Toute énergie dépensée à haïr Microsoft serait mieux employée par vos compétences et votre passion. Écrivez du bon code, cela brisera suffisamment Microsoft sans polluer votre karma.
Comment devenir un hacker ? par Eric Steven Raymond
is_null est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/09/2007, 12h12   #2
Membre confirmé
 
Avatar de frol
 
Inscription : mars 2005
Messages : 288
Détails du profil
Informations personnelles :
Âge : 23

Informations forums :
Inscription : mars 2005
Messages : 288
Points : 268
Points : 268
Envoyer un message via AIM à frol Envoyer un message via MSN à frol Envoyer un message via Skype™ à frol
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)
frol est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/09/2007, 13h06   #3
Membre chevronné
 
Inscription : mai 2005
Messages : 657
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 657
Points : 722
Points : 722
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 :
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.
__________________
Toute la documentation Ruby on Rails : gotapi.com/rubyrails
Mes articles :
> HAML : langage de template pour Ruby on Rails
Taum est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2007, 07h10   #4
Inscrit
 
Avatar de is_null
 
Inscription : octobre 2006
Messages : 637
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 637
Points : 690
Points : 690
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'.
__________________
Q: Dois-je haïr et cogner sur Microsoft ?
R: Non, vous n'êtes pas obligé. Non pas que Microsoft n'est pas écoeurant, mais il y avait une culture hacker bien avant Microsoft et il y en aura une bien après que Microsoft aura été de l'histoire ancienne. Toute énergie dépensée à haïr Microsoft serait mieux employée par vos compétences et votre passion. Écrivez du bon code, cela brisera suffisamment Microsoft sans polluer votre karma.
Comment devenir un hacker ? par Eric Steven Raymond
is_null est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h14.


 
 
 
 
Partenaires

Hébergement Web