Пример #1
0
        //イテレータクラス内部では、こんな感じでgetInnerIteratorをよく使うことになるだろう
        return $employee->getJob() === 'SALESMAN';
    }
}
/*
 * Client Class 
 */
//ConcreteAggregateインスタンスの生成
$employees = new Employees();
$employees->add(new Employee('SMITH', 32, 'CLERK'));
$employees->add(new Employee('ALLEN', 26, 'SALESMAN'));
$employees->add(new Employee('MARTIN', 50, 'SALESMAN'));
$employees->add(new Employee('CLARK', 45, 'MANAGER'));
$employees->add(new Employee('KING', 58, 'PRESIDENT'));
//iteratorの利用その1
$iterator = $employees->getIterator();
echo '<ul>';
while ($iterator->valid()) {
    //validで有効性を検証
    $employee = $iterator->current();
    //currentで現在一に対応するオブジェクトを取れる
    printf('<li>%s (%d, %s)</li>', $employee->getName(), $employee->getAge(), $employee->getJob());
    $iterator->next();
    //iteratorを次に進める
    var_dump($iterator->current());
}
echo '</ul>';
echo '<hr>';
$iterator->rewind();
//iteratorでもう一回イテレートしたい場合、rewind()を呼ぶ
//ここでは、わざわざrewindしている意味は無い