https://github.com/xp-framework/io-collections
I/O Collections for the XP Framework
https://github.com/xp-framework/io-collections
filesystem iteration php xp-framework
Last synced: 2 months ago
JSON representation
I/O Collections for the XP Framework
- Host: GitHub
- URL: https://github.com/xp-framework/io-collections
- Owner: xp-framework
- Created: 2015-09-27T18:53:18.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2024-03-24T11:35:58.000Z (about 1 year ago)
- Last Synced: 2024-04-26T01:20:16.948Z (about 1 year ago)
- Topics: filesystem, iteration, php, xp-framework
- Language: PHP
- Size: 72.3 KB
- Stars: 0
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: ChangeLog.md
Awesome Lists containing this project
README
I/O Collections
===============[](https://github.com/xp-framework/io-collections/actions)
[](https://github.com/xp-framework/core)
[](https://github.com/xp-framework/core/blob/master/LICENCE.md)
[](http://php.net/)
[](http://php.net/)
[](https://packagist.org/packages/xp-framework/io-collections)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 archiveTo 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`:```php
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
--------
* [RFC #0196: I/O Collections random access](https://github.com/xp-framework/rfc/issues/196)
* [RFC #0174: io.collections interface additions / io.streams integration](https://github.com/xp-framework/rfc/issues/174)
* [RFC #0077: I/O Collections Extensions](https://github.com/xp-framework/rfc/issues/77)
* [RFC #0075: I/O Collections](https://github.com/xp-framework/rfc/issues/75)