innmind / filesystem
Filesystem abstraction layer
Requires
- php: ~8.2
- innmind/immutable: ~4.15|~5.0
- innmind/io: ~2.2
- innmind/media-type: ~2.1
- innmind/stream: ~4.1
- innmind/time-continuum: ~3.4
- innmind/url: ~4.2
- psr/log: ~3.0
- symfony/filesystem: ~6.0|~7.0
Requires (Dev)
- innmind/black-box: ^5.5.1
- innmind/coding-standard: ~2.0
- phpunit/phpunit: ~10.2
- ramsey/uuid: ^4.6
- vimeo/psalm: ~5.13
Suggests
- innmind/black-box: For property based testing
Provides
Conflicts
- innmind/black-box: <5.0|~6.0
- dev-develop
- 7.5.1
- 7.5.0
- 7.4.0
- 7.3.0
- 7.2.0
- 7.1.0
- 7.0.0
- 6.6.0
- 6.5.1
- 6.5.0
- 6.4.0
- 6.3.2
- 6.3.1
- 6.3.0
- 6.2.0
- 6.1.0
- 6.0.0
- 5.2.0
- 5.1.0
- 5.0.0
- 4.2.2
- 4.2.1
- 4.2.0
- 4.1.0
- 4.0.7
- 4.0.6
- 4.0.5
- 4.0.4
- 4.0.3
- 4.0.2
- 4.0.1
- 4.0.0
- 3.4.0
- 3.3.1
- 3.3.0
- 3.2.0
- 3.1.0
- 3.0.1
- 3.0.0
- 2.2.0
- 2.1.1
- 2.1.0
- 2.0.0
- 1.5.1
- 1.5.0
- 1.4.0
- 1.3.0
- 1.2.0
- 1.1.2
- 1.1.1
- 1.1.0
- 1.0.0
- dev-master
- dev-close-once-read
This package is auto-updated.
Last update: 2024-12-11 15:03:15 UTC
README
Filesystem abstraction layer, the goal is to provide a model where you design how you put your files into directories without worrying where it will be persisted.
Installation
composer install innmind/filesystem
Usage
The whole model is structured around files, directories, contents and adapters. File
, Directory
and Content
are immutable objects.
Example:
use Innmind\Filesystem\{ File, File\Content, Directory, Adapter\Filesystem, }; use Innmind\Url\Path; $directory = Directory::named('uploads')->add( File::named( $_FILES['my_upload']['name'], Content::ofString(\file_get_contents($_FILES['my_upload']['tmp_name'])), ), ); $adapter = Filesystem::mount(Path::of('/var/www/web/')); $adapter->add($directory);
This example show you how you can create a new directory uploads
in the folder /var/www/web/
of your filesystem and create the uploaded file into it.
Note: For performance reasons the filesystem adapter only persist to disk the files that have changed (achievable via the immutable nature of file objects).
All adapters implements Adapter
, so you can easily replace them; especially for unit tests, that's why the library comes with an InMemory
adapter that only keeps the files into memory so you won't mess up your file system.