PHPマニュアル/PEARマニュアル | ユーザフォーラムで議論/質問 | マニュアル検索 | ハイライト | ハイライトオフ | ポータル | php spot

RecursiveCallbackFilterIterator クラス | JavaScript入門&応用&リファレンスなら「JavaScriptist」

  

RecursiveCallbackFilterIterator クラス

(PHP 5 >= 5.4.0, PHP 7)

はじめに

クラス概要

RecursiveCallbackFilterIterator extends CallbackFilterIterator implements OuterIterator , RecursiveIterator {
/* メソッド */
public __construct ( RecursiveIterator $iterator , string $callback )
public RecursiveCallbackFilterIterator getChildren ( void )
public bool hasChildren ( void )
/* 継承したメソッド */
public string CallbackFilterIterator::accept ( void )
}

コールバックは、三つの引数を受け付けなければなりません。 それぞれ、現在のアイテム、現在のキー、そしてイテレータを表します。

例1 利用可能なコールバック引数

<?php

/**
 * RecursiveCallbackFilterIterator 用のコールバック
 *
 * @param $current   現在のアイテムの値
 * @param $key       現在のアイテムのキー
 * @param $iterator  フィルタリングするイテレータ
 * @return boolean   現在のアイテムを受け付ける場合は TRUE、それ以外の場合は FALSE
 */
function my_callback($current$key$iterator) {
    
// ここにフィルタリングのコードを書きます
}

?>

再帰イテレータのフィルタリングにはふたつの条件があります。 まず最初は再帰を許可するかどうかです。コールバック関数は、 現在のイテレータのアイテムが子を持つときに TRUE を返さなければなりません。 二番目の条件が通常のフィルタリング条件で、 次の例におけるファイルサイズや拡張子のチェックがこれにあたります。

例2 再帰コールバックの基本例

<?php

$dir 
= new RecursiveDirectoryIterator(__DIR__);

// 大きなファイル ( > 100MB) をフィルタします
$files = new RecursiveCallbackFilterIterator($dir, function ($current$key$iterator) {
    
// 再帰を許可します
    
if ($iterator->hasChildren()) {
        return 
TRUE;
    }
    
// 巨大なファイルのチェックをします
    
if ($current->isFile() && $current->getSize() > 104857600) {
        return 
TRUE;
    }
    return 
FALSE;
});
 
foreach (new 
RecursiveIteratorIterator($files) as $file) {
    echo 
$file->getPathname() . PHP_EOL;
}

?>

目次


忘却曲線を使ってこの知識を確実に記憶に残す

フォーラムで「RecursiveCallbackFilterIterator クラス」について話す
各種マニュアル: PHPマニュアル | PEARマニュアル | Smarty(英語)マニュアル | PHP-GTKマニュアル | RecursiveCallbackFilterIterator クラス」をGoogle検索
copyright © 1997-2024 PHP ドキュメント作成グループ(ライセンス). provided by php spot. マニュアル: