Php/docs/class.callbackfilteriterator

提供:Dev Guides
< Php
移動先:案内検索

(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::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();});?>

目次