Purpose of this module:
- Provide an abstract low-level interface for basic file operations
- Creating
- Reading
- Writing / Updating
- Deleting
- Copying (= Reading + Writing with a different name)
- Moving / Renaming
- Provide an easy-to-use interface for multipart files (e.g. files with YAML front matter)
- Support for arbitrary content models
- Parsing
- Serialisation
- File part operations
- Creating
- Reading
- Writing / Updating
- Deleting (?)
- Copying (?)
- Support for arbitrary content models
- Reading from / writing to different sources
- In-Memory
- File system
- Standard input / output (?)
- FTP (?)
- Remote storage (?)
- Implementing several file types and structures (see below)
- Possibly special behaviour based on file type
- Text
- Markdown (CommonMark)
- YAML
- JSON
- YFM-Markdown (Markdown with YAML front matter)
- JFM-Markdown (Markdown with JSON front matter)
- MIME Messages (?)
Each file consists of one or more file parts. The content model of a file is described in terms of
- content parts (containing true file content like text or image data) and / or
- part aggregates (each consisting of one or more subparts).
A part aggregage may either be a
- part sequence (a predefined sequence of subparts of particular types) or a
- part choice (one of several allowed subpart types)
and may be repeated more than once.
This library requires PHP 5.6 or later. I recommend using the latest available version of PHP as a matter of principle. It has no userland dependencies.
To run the unit tests at the command line, issue composer install
and then phpunit
at the package root. This requires Composer to be available as composer
, and PHPUnit to be available as phpunit
.
This library attempts to comply with PSR-1, PSR-2, and PSR-4. If you notice compliance oversights, please send a patch via pull request.