Comment l'ordre d'exécution des méthodes de l'itérateur PHP est-il déterminé ?
漂亮男人
漂亮男人 2017-06-23 09:12:00
0
1
801
<?php
class MyIterator implements Iterator
{
    private $var = array();

    public function __construct($array)
    {
        if (is_array($array)) {
            $this->var = $array;
        }
    }

    public function rewind() {
        echo "rewinding\n";
        reset($this->var);
    }

    public function current() {
        $var = current($this->var);
        echo "current: $var\n";
        return $var;
    }

    public function key() {
        $var = key($this->var);
        echo "key: $var\n";
        return $var;
    }

    public function next() {
        $var = next($this->var);
        echo "next: $var\n";
        return $var;
    }

    public function valid() {
        $var = $this->current() !== false;
        echo "valid: {$var}\n";
        return $var;
    }
}

$values = array(1,2,3);
$it = new MyIterator($values);

foreach ($it as $a => $b) {
    print "$a: $b\n";
}
?>

La routine ci-dessus affichera :

rembobinage
actuel: 1
valide: 1
actuel: 1
clé: 0
0: 1
suivant: 2
actuel: 2
valide: 1
actuel: 2
clé: 1
1: 2
suivant: 3
actuel : 3
valide : 1
actuel : 3
clé : 2
2 : 3
suivant :
actuel :
valide :

Mais je ne comprends pas l'ordre dans lequel les méthodes encapsulées dans l'itérateur sont appelées. Quelqu'un peut-il l'expliquer ? Le code source de la classe Iterator est introuvable. Pourquoi la méthode valid() est-elle appelée en premier ?

漂亮男人
漂亮男人

répondre à tous(1)
学霸

N'est-ce pas l'ordre que vous avez défini vous-même ?
Vous avez utilisé la fonction suivante et la fonction actuelle pour déplacer le pointeur du tableau

L'itérateur fournit simplement un format convenu pour parcourir la collecte de données interne. Pour l'implémentation interne (c'est-à-dire l'ordre de parcours interne), vous pouvez le trier dans l'ordre direct, l'ordre inverse ou l'ordre aléatoire, etc.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!