述語

述語 – フィルタ

導入

File_Archive では、 ソースからファイルを選択する際にフィルタの概念を使用します。 フィルタとはリーダーの一種であり、 File_Archive::filter() 関数で作成することができます。 この関数には、述語を指定する必要があります。 述語を作成するには File_Archive::pred* 関数を使用します。

標準の論理述語は次のとおりです。

  • predTrue(): つねに true と評価されます

  • predFalse(): つねに false と評価されます

  • predAnd($p1, $p2, ...): $p1 && $p2 && ... と評価されます

  • predOr($p1, $p2, ...): $p1 || $p2 || ... と評価されます

  • predNot($p): !$p と評価されます

ファイルのフィルタリング用に、その他の述語も用意されています。

  • predMinSize($size): サイズが >= $size (バイト単位) であるファイルのみを残します

  • predMinTime($time): 最終更新時刻が $time (unix タイムスタンプ) 以降であるファイルのみを残します

  • predMaxDepth($depth): 公開名のディレクトリ階層が $depth より少ないファイルのみを残します

  • predExtension($list): 指定した拡張子のファイルのみを残します。 $list は拡張子の配列、あるいはカンマ区切り文字列となります

  • predEreg($ereg): 公開名が指定した正規表現にマッチするファイルのみを残します

  • predEregi($ereg): predEreg() と同じですが、大文字小文字を区別しません

  • predMIME($mimes): 指定した MIME タイプのファイルを選択します。 配列あるいは文字列で指定することができ、ワイルドカードを使用することも可能です。

フィルタの例

<?php
// パスあるいはファイル名の中に 'a' を含むすべてのファイルを
// tar アーカイブから取り出します
File_Archive::extract(
    
File_Archive::filter(
        
File_Archive::predEreg('a'),
        
File_Archive::read(
            
'archive.tar/',
            
'folder'
        
)
    ),
    
File_Archive::toFiles()
);

// ディレクトリを zip 圧縮します。サイズが 1MB より小さくて
// 直近の 1 時間以内に更新されているファイルのみを圧縮します
File_Archive::extract(
    
File_Archive::filter(
        
File_Archive::predAnd(
            
File_Archive::predNot(
                
File_Archive::predMinSize(1024 1024)
            ),
            
File_Archive::predMinTime(time()-3600)
        ),
        
File_Archive::read('directory')
    ),
    
File_Archive::toArchive(
        
'directory.zip',
        
File_Archive::toFiles()
    )
);
?>
アーカイブの保存 (Previous) ファイルの削除や追加 (Next)
Last updated: Thu, 31 Jul 2014 — Download Documentation
Do you think that something on this page is wrong? Please file a bug report or add a note.
View this page in:

User Notes:

There are no user contributed notes for this page.