また、SPL を使用して、抽象クラスを拡張することによりDirectoryIterator
、関数を使用してa のコンテンツをフィルター処理することもできます。isImage
FilterIterator
class ImageIterator extends FilterIterator {
public function __construct($path)
{
parent::__construct(new DirectoryIterator($path));
}
public function accept()
{
return isImage($this->getInnerIterator());
}
}
次に、使用iterator_count
(またはCountable
インターフェイスを実装してネイティブcount
関数を使用) して、画像の数を決定できます。例えば:
$images = new ImageIterator('/path/to/images');
printf('Found %d images!', iterator_count($images));
このアプローチを使用すると、このコードをどのように使用する必要があるかに応じて、isImage
関数をImageIterator
クラスに移動して、すべてを 1 か所にきちんとまとめた方が理にかなっている場合があります。