xp-framework/io-collections

I/O Collections for the XP Framework

v10.1.0 2024-03-24 11:35 UTC

This package is auto-updated.

Last update: 2024-11-24 13:04:01 UTC


README

Build status on GitHub XP Framework Module BSD Licence Requires PHP 7.0+ Supports PHP 8.0+ Latest Stable Version

API

The entry point for accessing I/O collections are the io.collections.IOCollection implementations:

  • io.collections.FileCollection - files in a given filesystem path
  • io.collections.ArchiveCollection - files inside a XAR archive

To access the files from more than one collection, use the io.collections.CollectionComposite class.

Iteration

The subpackage io.collections.iterate allows iterating I/O collections.

  • io.collections.iterate.IOCollectionIterator - iterate a given I/O collection, optionally recursive
  • io.collections.iterate.FilteredIOCollectionIterator - as above, but with an optional filter

Filters

The following filters are available:

Date-based:

  • io.collections.iterate.AccessedAfterFilter(util.Date $date)
  • io.collections.iterate.AccessedBeforeFilter(util.Date $date)
  • io.collections.iterate.CreatedAfterFilter(util.Date $date)
  • io.collections.iterate.CreatedBeforeFilter(util.Date $date)
  • io.collections.iterate.ModifiedAfterFilter(util.Date $date)
  • io.collections.iterate.ModifiedBeforeFilter(util.Date $date)

Size-based:

  • io.collections.iterate.SizeEqualsFilter(int $compare)
  • io.collections.iterate.SizeBiggerThanFilter(int $limit)
  • io.collections.iterate.SizeSmallerThanFilter(int $limit)

Name-based:

  • io.collections.iterate.ExtensionEqualsFilter(string $compare)
  • io.collections.iterate.NameEqualsFilter(string $compare)
  • io.collections.iterate.NameMatchesFilter(string $pattern)
  • io.collections.iterate.UriMatchesFilter(string $pattern)

Type-based:

  • io.collections.iterate.CollectionFilter()

To combine filters, use the util.Filters class.

Example

This finds all JPEG files inside the directory /home/thekid/multimedia:

use io\collections\FileCollection;
use io\collections\iterate\{FilteredIOCollectionIterator, ExtensionEqualsFiler};
use util\cmd\Console;
use util\Filters;

$iterator= new FilteredIOCollectionIterator(
  new FileCollection('/home/thekid/multimedia'),
  Filters::allOf([new ExtensionEqualsFilter('.jpg'), new ExtensionEqualsFilter('.JPG')]), 
  true
);

foreach ($iterator as $file) {
  Console::writeLine($file);
}

See also