Sanitizers can be used to standardize data to ease validation, or provide data consistency.
First construct a rules array.
$rules = [
'name' => 'trim',
'email' => 'trim|strtolower'
];
Rules can contain either callable functions, or the name of a sanitizer binding (more later). You can use either a pipe |
or an array to specify multiple sanitization rules.
The sanitizer can be executed in the following fashion.
$sanitizer = new Sanitizer;
$sanitizer->sanitize($rules, $data);
Here's a full example.
// Construct rules array.
$rules = [
'name' => 'trim',
'email' => 'trim|strtolower'
];
// Data array to be sanitized.
$data = [
'name' => ' Dayle ',
'email' => ' [email protected]'
];
// Construct a new sanitizer.
$sanitizer = new Sanitizer;
// Execute the sanitizer.
$sanitizer->sanitize($rules, $data);
Here's the content of $data
after execution.
[
'name' => 'Dayle',
'email' => '[email protected]'
]
Using the Laravel facade, the syntax can be made a little cleaner.
Sanitizer::sanitize($rules, $data);
Sanitize a single value like so.
$rules = 'trim|strtolower';
$data = ' Dayle';
Sanitizer::sanitizeValue($rules, $data);
Here is the value returned.
dayle
Sanitizers can be added multiple ways.
Sanitizer::register('reverse', function ($field) {
return strrev($field);
});
Sanitizer::register('reverse', [new ClassHere, 'method']);
Sanitizer::register('reverse', 'Namespace\Class\Here@method');
The class will be resolved through an instance of the Illuminate IoC container, if no method is provided then sanitize()
is assumed.
The Sanitizer package can be used stand-alone or with the Laravel Framework.
First include the sanitizer package.
"daylerees/sanitizer": "dev-master"
Now simply use
the Sanitizer class.
use Rees\Sanitizer\Sanitizer;
Include the Service Provider class within the app/config/app.php
file.
'providers' => array(
...
'Rees\Sanitizer\SanitizerServiceProvider'
)
Now simply add the facade alias.
'aliases' => array(
...
'Sanitizer' => 'Rees\Sanitizer\Facade'
)