Inspired by Respect/Validation, that library transforms an input string (or float / int / bool) to an output string, after applying rules.
The benefit using it is that it a generic wrapper for any kind of transformation. Also it throws Exceptions and allows to chain the transformations.
It's pretty simple to use. suppose you need to transform a date "31-12-2012" to another format such as "2012-12-31". Just do:
<?php
require_once __DIR__ . '/vendor/autoload.php';
use Inet\Transformation\Transform as T;
$dateEntered = '31-12-2012';
$output = T::Date('d-m-Y', 'Y-m-d')->transform($dateEntered);
echo $output;
Now if you need to change the format then the Timezone:
<?php
require_once __DIR__ . '/vendor/autoload.php';
use Inet\Transformation\Transform as T;
$dateEntered = '31-12-2012 23:21:58';
$output = T::Date('d-m-Y H:i:s', 'Y-m-d H:i:s')->Timezone('Y-m-d H:i:s', 'Asia/Calcutta')->transform($dateEntered);
// Displays: 2013-01-01 03:51:58
echo $output;
For now there is only a few rules. I'll add more later, and don't hesitate if you want to contribute.
Call any php function on input. The input will be passed as the last argument of the function.
T::Callback('sprintf', "REF%'06d")->transform(1234); // REF001234
Copy a file with a filename to a UUID generated name. Return the generated UUID.
T::CopyFileToUuid('/var/www/upload/', '/var/www/unified_upload')->transform('quotes/client_01.pdf'); // 123e4567-e89b-12d3-a456-426655440000
## Concat(string $before, [string $after])
Append and prepend string to input.
```php
T::Concat('REF')->transform('1234'); // REF1234
T::Concat('REF', 'AB')->transform('1234'); // REF1234AB
Transforms a date from a format to another.
See example above
Explode a string to an array using a delimiter. Uses explode
function from PHP.
It returns an array.
T::Explode(',')->transform('foo,bar,baz'); // array('foo', 'bar', 'baz');
T::Explode(',')->Implode('|')->transform('foo,bar,baz'); // foo|bar|baz
Encode special chars. Uses htmlspecialchars
function from PHP.
T::Htmlspecialchars(['ENT_QUOTES'])->transform("l'arbre"); // l'arbre
T::Htmlspecialchars(['ENT_QUOTES'], 'UTF-8', false)->transform("l'arbre"); // l'arbre
Decode special chars. Uses htmlspecialchars_decode
function from PHP.
T::HtmlspecialcharsDecode(['ENT_QUOTES'])->transform("l'arbre"); // l'arbre
Join an array elements to a string. Uses implode
function from PHP.
T::Implode('@')->transform(array('foo', 'bar')); // foo@bar
Try to replace the input with the value in the mapping. It can also work with an array as input. Values not found in mapping are return without tranformations
$mapping = array(
'1' => 'key1',
'10' => 'key10',
);
T::Map($mapping)->transform('1'); // key1
T::Map($mapping)->transform(array('10', '1')); // array('key10', 'key1')
T::Map($mapping)->transform('unknown key'); // unknown key
Return the MimeType of the file. The first optional parameter allow to specify a root directory prepend to the filename
T::MimeType()->transform('test.jpg'); // image/jpeg
T::MimeType('uploads')->transform('logo.png'); // image/png
Prepend a default protocol if not present to any url.
T::NormalizeURL('http')->transform('https://www.google.com'); // https://www.google.com
T::NormalizeURL('http')->transform('www.google.com'); // http://www.google.com
T::NormalizeURL('http')->transform('ssh://github.com'); // ssh://github.com
T::NormalizeURL('ssh')->transform('github.com'); // ssh://github.com
Replace a string by another (does the same than str_replace).
T::Replace('a', 'b')->transform('ababa'); // bbbbb
Replace a pattern by a replacement (does the same than preg_replace).
T::ReplaceRegexp('/^fox/', 'rabbit')->transform('fox and foxes'); // rabbit and foxes
Uses Cocur\Slugify to Slugify a string.
T::Slugify()->transform('Bonjour tôôut le monde !'); // bonjour-toout-le-monde
Uses settype from PHP for type casting.
T::SetType('bool')->transform('1'); // true
T::SetType('bool')->transform('0'); // false
T::SetType('bool')->transform(array()); // false
Map multiple values from a string or an array
and return a string encoded for database storage of SugarCRM multi enum field.
String are exploded first with the default separator |
.
You can set the following options
separator
: Separator to use to explode input string. Default:|
from_multi_enum
: If true parse the input string as a SugarCRM multi enum field. Default:false
$mapping = array(
'1' => 'key1',
'10' => 'key10',
);
T::SugarCRMMapMultiEnum($mapping)->transform('1|10'); // ^key1^,^key10^
T::SugarCRMMapMultiEnum($mapping)->transform(array('1', '10'); // ^key1^,^key10^
T::SugarCRMMapMultiEnum($mapping)->transform('^1^,^23^', array('from_multi_enum' => true)); // ^key1^,^23^
Change the Timezone of a Date by providing the format, the target Timezone and optionnaly the timezone for the current date.
See example above