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 :

utilité de l'Interface Iterator ?


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2019
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2019
    Messages : 48
    Points : 38
    Points
    38
    Par défaut utilité de l'Interface Iterator ?
    Bonjour à tous,

    J'espère que vous pourriez m'éclairer concernant l'interface Iterator de PHP. Je n'arrive pas à comprendre son utilité et les cas où l'on peut en faire usage ?

    De ce que j'ai compris, sans utiliser cette interface, il est possible de parcourir un objet avec une boucle foreach. Seulement, seules les attributs publics seront listés. Avec l'interface, on pourrait donc parcourir, en se servant d'un tableau, même les attributs qui sont privés, mais je ne vois pas bien l’intérêt ?

    Si une âme charitable pouvait m'éclairer ?

  2. #2
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,
    Citation Envoyé par LO88ra Voir le message
    De ce que j'ai compris, sans utiliser cette interface, il est possible de parcourir un objet avec une boucle foreach.
    Avec cette interface, il est possible d'itérer à travers une instance de classe avec foreach.

    Ensuite, il est nullement indiqué que l'interface Iterator te sort les attributs privés des classes. Il est juste dit que c'est le développeur qui doit indiquer ce qu'il veut que la classe produise quand elle est traversée.
    Tu peux exposer des valeurs privées mais c'est toi qui décide.

    L'utilité est très large :
    Tiens si tu veux un tableau qui accepte les clés exotiques : qui fasse la différence entre ceci : [1 => 'abc'] et cela : ['1' => 'def'], ben ce genre de comportement n'est pas natif : PHP transforme les numériques en entier, ben là tu auras besoin d'une classe qui implémente cette interface afin de pouvoir gérer les clés à ta guise.

    Parcours d'arborescence, tu peux très bien définir des règles spécifiques de traversée en fonction du point d'entrée par exemple, là aussi ta classe aura besoin de cette interface...

    Tu as besoin de générer des nombres de manière très spéciale selon un algorithme, ben là aussi ta classe en charge de ce travail aura besoin de l'interface Iterator.

    Des exemples, il y en a des paquets. C'est très utilisé dès que tu t'éloignes de la simple page HTML de présentation et que tu vises des applications plus professionnelles qui font du calcul par exemple

  3. #3
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Tu peux aller regarder les implémentations natives pour te faire une idée de ce qui est possible PHP: Itérateurs, notamment DirectoryIterator permet de parcourir les fichiers d'un dossier et son petit frère RecursiveDirectoryIterator qui permet de parcourir récursivement des dossiers (autrement dit, de lire les fichiers à l'intérieur d'un dossier à l'intérieur d'un dossier)
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  4. #4
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Le principal intérêt c'est de cacher la complexité de ton objet en le rendant standard.

    Admettons tu créer un objet qui stock des données. Sans Iterator , la personne qui utilisera ton objet , doit savoir quelle fonction appelée pour récupérer les données , les compter , comment itérer sur les données, etc ... c'est donc compliqué et demande de la connaissance.
    Avec Iterator , on à pas besoin de connaitre les détails de ton objet, on sait que pour en parcourir les données un simple foreach suffit par exemple.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. L'utilité de l'interface JRDataSource
    Par hafedh01 dans le forum Jasper
    Réponses: 5
    Dernier message: 12/04/2012, 19h26
  2. [PHP 5.3] Utilité d'une interface?
    Par éric1 dans le forum Langage
    Réponses: 2
    Dernier message: 03/08/2009, 13h40
  3. Probleme interface iterator dans une ArrayList
    Par inzagi dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 25/02/2008, 19h05
  4. [POO] Utilité de 'final','interface' ?
    Par guillhomme_ dans le forum Langage
    Réponses: 4
    Dernier message: 17/10/2007, 17h05
  5. [Collections] L'interface "Iterator" à quoi ça sert
    Par Samanta dans le forum Collection et Stream
    Réponses: 8
    Dernier message: 07/04/2005, 17h51

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