(PHP 5 >= 5.4.0, PHP 7)
はじめに
クラス概要
CallbackFilterIterator extends FilterIterator implements OuterIterator {
public
__construct
( Iterator $iterator
, callable $callback
)
public accept ( ) : bool
/* 継承したメソッド */
public abstract FilterIterator::accept ( ) : bool
public
FilterIterator::__construct
( Iterator $iterator
)
public FilterIterator::current ( ) : mixed
public FilterIterator::getInnerIterator ( ) : Iterator
public FilterIterator::key ( ) : mixed
public FilterIterator::next ( ) : void
public FilterIterator::rewind ( ) : void
public FilterIterator::valid ( ) : bool
}
例
コールバックは、三つの引数を受け付けなければなりません。 それぞれ、現在のアイテム、現在のキー、そしてイテレータを表します。
例1 利用可能なコールバック引数
<?php/** * CallbackFilterIterator 用のコールバック * * @param $current 現在のアイテムの値 * @param $key 現在のアイテムのキー * @param $iterator フィルタリングするイテレータ * @return boolean 現在のアイテムを受け付ける場合は TRUE、それ以外の場合は FALSE */function my_callback($current, $key, $iterator) { // ここにフィルタリングのコードを書きます}?>
任意の callable を使うことができます。 関数名を含む文字列、メソッドを表す配列、あるいは無名関数などです。
例2 コールバックの基本例
<?php$dir = new FilesystemIterator(__DIR__);// 大きなファイル ( > 100MB) をフィルタしますfunction is_large_file($current) { return $current->isFile() && $current->getSize() > 104857600;}$large_files = new CallbackFilterIterator($dir, 'is_large_file');// ディレクトリをフィルタします$files = new CallbackFilterIterator($dir, function ($current, $key, $iterator) { return $current->isDir() && ! $iterator->isDot();});?>
目次
- CallbackFilterIterator::accept — 現在の値、現在のキー、そして内部イテレータを引数としてでコールバックを呼び出す
- CallbackFilterIterator::__construct — フィルタリングしたイテレータを別のイテレータから作成する
/* メソッド */