Bagaimanakah susunan pelaksanaan kaedah iterator php ditentukan?
漂亮男人
漂亮男人 2017-06-23 09:12:00
0
1
815
<?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";
}
?>

Rutin di atas akan menghasilkan:

menggulung semula
semasa: 1
sah: 1
semasa: 1
kunci: 0
0: 1
seterusnya: 2
semasa: 2
sah: 1
semasa: 2
kunci: 2
1:
t: 1
semasa: 3
sah: 1
semasa: 3
kunci: 2
2: 3
seterusnya:
semasa:
sah:

Tetapi saya tidak faham susunan kaedah yang terkandung dalam lelaran dipanggil. Bolehkah sesiapa menerangkannya? Kod sumber kelas Iterator tidak ditemui Mengapa kaedah sah() dipanggil dahulu?

漂亮男人
漂亮男人

membalas semua(1)
学霸

Bukankah susunan yang anda tentukan sendiri?
Anda menggunakan fungsi seterusnya dan fungsi semasa untuk menggerakkan penunjuk tatasusunan

Pelajar hanya menyediakan format yang dipersetujui untuk melintasi pengumpulan data dalaman Untuk pelaksanaan dalaman (iaitu, tertib lintasan dalaman), anda boleh mengisihnya dalam tertib hadapan, tertib terbalik atau tertib rawak, dsb.

.
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan