Download the PHP package oshomo/csv-utils without Composer
On this page you can find all versions of the php package oshomo/csv-utils. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download oshomo/csv-utils
More information about oshomo/csv-utils
Files in oshomo/csv-utils
Package csv-utils
Short Description A CSV utility to read, validate and write data to multiple format including JSON, XML etc.
License Apache-2.0
Informations about the package csv-utils
CSVUtils
Make sure you use a tagged version when requiring this package.
Table of Content
- Current Stable Versions
- How to Run
- Implementation
- Documentation
- Initializing a Validator
- Validating the CSV
- Available rules
- Writing CSV Output Data
- Passing Custom Rules to Validator Using Rule Object
- Passing Custom Rules to Validator Using Closure
- Writing CSV Output Data to Other Formats
- Running Tests
- Contributing to this Repo
Current Stable Versions
How to Run
I have added a sample index.php
file for a quick test of how to use the package. To run the sample; from the package root, run composer install
then using php built in server run php -S localhost:8000
, this would start the server at localhost:8000
. Visit the URL from your browser and you should see the generated files in the sample
folder at the root of the package.
Implementation
The Validator
expects a valid file path, the CSV delimiter, an array of validation rule(s) and an optional message(s) array to over-write the default messages of the validator.
Documentation
Initializing a Validator
Set a valid csv file path, pass the CSV delimiter and pass in your validation rules.
Validating the CSV
Now we are ready to validate the CSV. The validator provides a validate
method that can be called like so: $validator->validate();
. The validate
method returns an array of the invalid rows if validation fails. If the validation passes the validate
method returns the CSV data as an array
A better implementation:
Error messages
To get the rows with validation errors and their errors. The validator expose errors
method that can be used like so $validator->errors()
.
You can also customize the error messages for different validation rules and different attributes by passing a message array to the validator like so:
In this above example:
The :attribute
place-holder will be replaced by the actual name of the field under validation.
The :value
place-holder will be replaced with value being validated.
The :line
place-holder will also be replaced with the row/line number in the CSV in which the error happened.
You may also utilize other place-holders in validation messages. For example the between
rule exposes two other placeholder min
and max
. Find more about this in the available rules section
Available rules
between:min,max
:
ascii_only
:
url
:
Writing CSV Output Data
The output of the CSV file can be written into any format. The currently suported format is xml
and json
. The validator exposes a write
method to write the output data into the same folder as the CSV. Find example implementation below:
The JsonConverter
simply writes the output data as JSON. The XmlConverter
converter writes the data as XML. XmlConverter
takes an optional parameter for setting the XML records element. If non is supplied it defaults to item
e.g $validator->write(new XmlConverter("hotel"));
would write the below:
NOTE: Either validation passes or fails, you can always write the CSV output data to the available formats. In cases where validation fails there would be an extra error property in the written data.
Passing Custom Rules to Validator Using Rule Object
Passing a custom rule to the validator is easy. Create a CustomRule class the implements Oshomo\CsvUtils\Contracts\ValidationRuleInterface
interface. And pass that class to the rule array, easy. E.g:
The class definition for UppercaseRule
. Follow the same approach if you want to create your own rule.
If the CustomRule accepts parameters like the between
rule, then your CustomRule class must implement both Oshomo\CsvUtils\Contracts\ValidationRuleInterface
and Oshomo\CsvUtils\Contracts\ParameterizedRuleInterface
. See Oshomo\CsvUtils\Rules\Between
as an example.
Passing Custom Rules to Validator Using Closure
If you only need the functionality of a custom rule once throughout your application, you may use a Closure instead of a rule object. The Closure receives the attribute's value, and a $fail
callback that should be called if validation fails:
Writing CSV Output Data to Other Formats
Writing the CSV output data to other format is also very easy. Create a CustomConverter class the implements Oshomo\CsvUtils\Contracts\ConverterHandlerInterface
interface. And pass that class to the write
method of the validator, easy. Below is an sample implementation of a JSON converter
Running Tests
Run composer test
from the root of the Package.
Contributing to this Repo
Feel free to submit a pull request for a feature or bug fix. However, do note that before your pull request can be merged it must have test written or updated as the case maybe. The project run's automatic checks to make sure that the Symfony code standards are met using php-cs-fixer.
So, before pushing or making any pull request run the below command:
composer test
: For running testcomposer fix-lint
: For running php-cs-fixer to fix linting errors
All versions of csv-utils with dependencies
ext-mbstring Version *
ext-json Version *
ext-simplexml Version *
ext-dom Version *