marcojetson / tummy
A fielded flat file parser
Installs: 29 949
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 3
Forks: 0
Open Issues: 0
Requires
- php: >=5.6
Requires (Dev)
- codeclimate/php-test-reporter: ^0.1.2
- phpunit/phpunit: 4.6.*
This package is not auto-updated.
Last update: 2025-02-15 21:48:59 UTC
README
A fielded flat file parser
Usage
Configuration
$formats = (new Tummy\Config\Factory())->create([ 'format1' => [ 'ident' => new Tummy\Record\Ident\Match('NEW'), // used for supporting multiple record formats in a single file 'elements' => [ [ 'length' => 3, 'reference' => 'type', 'required' => true, ], [ 'length' => 1, // elements w/o reference will be ignored ], [ 'length' => 16, 'reference' => 'username', 'paddingChar' => '-', 'paddingDirection' => \STR_PAD_LEFT, ], [ 'length' => 8, 'reference' => 'birthday', 'converter' => new Tummy\Record\Element\Converter\DateTime('dmY'), ], ], ], 'format2' => [ 'ident' => new Tummy\Record\Ident\Match('PWD'), 'recordClass' => PwdRecord::class, // will use \stdClass if not specified 'elements' => [ [ 'length' => 3, 'reference' => 'type', ], [ 'length' => 1, ], [ 'length' => 16, 'reference' => 'username', ], [ 'length' => 16, 'reference' => 'password', ], ], ], ]);
Parse
$parser = new Tummy\Parser($formats); $records = $parser->parse([ 'NEW -----marcojetson31121985', 'PWD marcojetson peterete ', ]); var_dump($records); // array(2) { // [0]=> // object(stdClass)#18 (3) { // ["type"]=> // string(3) "NEW" // ["username"]=> // string(11) "marcojetson" // ["birthday"]=> // object(DateTime)#19 (3) { // ["date"]=> // string(26) "1985-12-31 23:20:54.000000" // ["timezone_type"]=> // int(3) // ["timezone"]=> // string(13) "Europe/Berlin" // } // } // [1]=> // object(PwdRecord)#20 (3) { // ["type"]=> // string(3) "PWD" // ["username"]=> // string(11) "marcojetson" // ["password"]=> // string(8) "peterete" // } // }
Compose
$record = new \stdClass(); $record->type = 'NEW'; $record->username = 'marcojetson'; $record->birthday = new \DateTime('1985-12-31'); $composer = new Tummy\Composer($formats['format1']); echo $composer->compose([$record])[0]; // "NEW -----marcojetson31121985"