/php-data-sanitizer

Data sanitizer to auto-cast entries, convert empty strings to null, etc.

Primary LanguagePHP

PHP Data Sanitizer

Source Code Latest Version Total Downloads License: MIT Build Status Code Coverage Scrutinizer Code Quality

Often when receiving data from a client in an API or from a form request, you'll find yourself running the same data cleaning operations such as transforming 'false' to the boolean false, converting '' to null etc. This can be a pain. This package simplifies the process drastically.


Installation

  • Install the package with composer :
composer require okipa/php-data-sanitizer

Laravel users

  • Laravel 5.5+ uses Package Auto-Discovery, so doesn't require you to manually add the ServiceProvider and the Facade alias. If you don't use auto-discovery or if you use a Laravel 5.4- version, add the package service provider in the register() method from your app/Providers/AppServiceProvider.php :
// php data sanitizer
// https://github.com/Okipa/php-data-sanitizer
$this->app->register(Okipa\DataSanitizer\Laravel\DataSanitizerServiceProvider::class);
  • Then, add the package facade alias in the $aliases array from the config/app.phpconfig file.
'aliases' => [
    '...',
    'DataSanitizer' => Okipa\DataSanitizer\Laravel\Facades\DataSanitizer::class
]

When this provider is booted, you'll gain access to a DataSanitizer facade, which you may use in your controllers.

public function index()
{
    $data = [
        // data to sanitize
    ];
    $sanitizedData = \DataSanitizer::sanitize($data);
}

Without Laravel

DataSanitizer ships with native implementations of the bootloader and facade. In order to use it import class.

// import the package facade
use Acid\DataSanitizer\Native\Facades\DataSanitizer;

// sanitize your data
$data = ['false', '3', ''];
$sanitizedData = DataSanitizer::sanitize($data);

// produces [false, 3, null]

Usage

The only public method in the package is sanitize($data, $default = null, $jsonDecodeAssoc = false). Call the sanitizer as following :

$data = ['null', 'true'];
$sanitizedData = DataSanitizer::sanitize($data);

$data can be a string, boolean, number, array, object or JSON string. Examples of the cleaned data :

''                  => null
' string trim '     => 'string trim'
'null'              => null
'false'             => false
'true'              => true
'on'                => true
'3'                 => 3
'5.07'              => 5.07

When using arrays and objects, the method will sanitize each element in the given data and return an array (or object) with the cleaned values. $default can be used to return a default value if the resulting cleaned data is null or false.

Example:

DataSanitizer::sanitize('', 'hello');
// will return 'hello'

$jsonDecodeAssoc is used for decoding JSON. See php json_decode documentation

$jsonDecodeAssoc = true // default is false
$data = json_decode($data, null, $jsonDecodeAssoc);
// will decode your json as associative array (and as object if false)

Contributors