tobento / service-file-creator
Easily creating files.
1.0.1
2023-11-10 16:18 UTC
Requires
- php: >=8.0
- tobento/service-filesystem: ^1.0
Requires (Dev)
- phpunit/phpunit: ^9.5
- vimeo/psalm: ^4.0
README
With the File Creator Service you can create files easily.
Table of Contents
Getting started
Add the latest version of the File Creator service project running this command.
composer require tobento/service-file-creator
Requirements
- PHP 8.0 or greater
Highlights
- Framework-agnostic, will work with any project
- Decoupled design
Simple Example
Here is a simple example of how to use the Menu service.
use Tobento\Service\FileCreator\FileCreator; use Tobento\Service\FileCreator\FileCreatorException; try { (new FileCreator()) ->content('Lorem ipsum') ->newline() ->content('Lorem ipsum') ->create('home/public/files/filename.txt', FileCreator::CONTENT_NEW); // it is ok. } catch (FileCreatorException $e) { // it failed. }
Documentation
File Creator
The create method has the following default parameter values:
use Tobento\Service\FileCreator\FileCreator; use Tobento\Service\FileCreator\FileCreatorException; try { (new FileCreator()) ->content('Lorem ipsum') ->create( file: 'home/public/files/filename.txt', handling: FileCreator::NO_OVERWRITE, modeFile: 0644, modeDir: 0755 ); // it is ok. } catch (FileCreatorException $e) { // it failed. }
The following parameters are available for the handling:
The create method returns a new instance allowing the following:
use Tobento\Service\FileCreator\FileCreator; use Tobento\Service\FileCreator\FileCreatorException; try { (new FileCreator()) ->content('Lorem ipsum') ->newline() ->content('Lorem ipsum') ->create('home/public/files/filename.txt', FileCreator::CONTENT_NEW) ->newline(num: 2) ->content('Lorem ipsum') ->create('home/public/files/filename.txt', FileCreator::CONTENT_APPEND); // it is ok. } catch (FileCreatorException $e) { // it failed. }
Writers
Writer Interface
Writers must implement the following interface.
namespace Tobento\Service\FileCreator; /** * WriterInterface */ interface WriterInterface { /** * Write the content. * * @param resource $resource * @return void */ public function write($resource): void; }
CSV Writer
use Tobento\Service\FileCreator\FileCreator; use Tobento\Service\FileCreator\FileCreatorException; use Tobento\Service\FileCreator\Writer\Csv; $items = [ ['id' => 1, 'title' => 'cars'], ['id' => 2, 'title' => 'plants'], ]; $csvWriter = new Csv( items: $items, delimiter: ',', // default enclosure: '"', // default escapeChar: '\\', // default ); try { (new FileCreator()) ->writer($csvWriter) ->create('home/public/files/filename.csv', FileCreator::CONTENT_NEW); // it is ok. } catch (FileCreatorException $e) { // it failed. }
Formatters
Printr Formatter
use Tobento\Service\FileCreator\FileCreator; use Tobento\Service\FileCreator\FileCreatorException; use Tobento\Service\FileCreator\Formatter\Printr; $items = [ ['id' => 1, 'title' => 'cars'], ['id' => 2, 'title' => 'plants'], ]; try { (new FileCreator()) ->content((new Printr())->format($items)) ->create('home/public/files/filename.txt', FileCreator::CONTENT_NEW); // it is ok. } catch (FileCreatorException $e) { // it failed. }