corpsee/nameless-utilities

PHP Utilities compliant with PSR-1, PSR-2, PSR-4 and Composer

3.0.1 2018-09-02 11:37 UTC

README

PHP Censor Travis CI SensioLabs Insight Codecov Latest Version Total downloads License

Nameless utilities

PHP Utilities compliant with PSR-1, PSR-2, PSR-4 and Composer.

Installation

You can install Nameless utilities by composer. Add following code to "require" section of the composer.json:

"require": {
    "corpsee/nameless-utilities": "<version>"
}

And install dependencies using the Composer:

cd path/to/your-project
composer install

Usage

ArrayHelper

use Nameless\Utilities\ArrayHelper;

echo ArrayHelper::toString([1, 2, 3]); // Prints '1, 2, 3', ', ' is default separator
echo ArrayHelper::toString([1, 2, 3], ':'); // Prints '1:2:3'

$array = [
    'one'   => 1,
    'two'   => 2,
    'three' => 3,
];
echo ArrayHelper::get($array, 'four', 4); // Prints '4' (4)

DateTimeHelper

use Nameless\Utilities\DateTimeHelper;

echo DateTimeHelper::humanize(121.001); // Prints '2 minute 1 second 1 millisecond'

Usage with localization/alternative labels:

use Nameless\Utilities\DateTimeHelper;

$localization = [
    ['мкс', 'мкс'],
    ['мс', 'мс'],
    ['с', 'с'],
    ['мин', 'мин'],
    ['ч', 'ч'],
    ['д', 'д'],
    ['мес', 'мес'],
    ['г', 'г'],
];

echo DateTimeHelper::humanize(121, $localization); // Prints '2 мин 1 с'

FileSizeHelper

use Nameless\Utilities\FileSizeHelper;

echo FileSizeHelper::humanize(1000000000); // Prints '953.67MB'
echo FileSizeHelper::unhumanize('954MB');  // Prints '1000341504' (bytes)

PathHelper

use Nameless\Utilities\PathHelper;

echo PathHelper::toURL('/base/path/to/url', '/base'); // Prints '/path/to/url'

StringHelper

use Nameless\Utilities\StringHelper;

var_dump(StringHelper::startWith('example', 'exa'));  // Prints true
var_dump(StringHelper::endWith('example', 'mplee'));  // Prints true
var_dump(StringHelper::contains('example', 'xampl')); // Prints true

echo StringHelper::cut('example', 6);             // Prints 'exampl...', '...' is default suffix
echo StringHelper::cutWords('simple example', 1); // Prints 'example...', '...' is default suffix

echo StringHelper::transliterate('очень простой пример', 'Russian-Latin/BGN');     // Prints transliterated 'ochen prostoj primer'
echo StringHelper::standardize('очень простой  Пример', 'Russian-Latin/BGN');      // Prints standardizated 'ochen_prostoj_primer', '_' is default words separator
echo StringHelper::standardize('очень простой  Пример', 'Russian-Latin/BGN', '-'); // Prints 'ochen-prostoj-primer', use '-' for slugify string

var_dump(StringHelper::toArray('1,2,3,')); // Prints Array ['1', '2', '3'], ',' is default separator

echo StringHelper::snakecaseToCamelcase('snake_case');       // Prints 'SnakeCase'
echo StringHelper::snakecaseToCamelcase('snake_case', true); // Prints 'snakeCase'
echo StringHelper::camelcaseToSnakecase('CamelCase');        // Prints 'camel_case'

UrlHelper

use Nameless\Utilities\UrlHelper;

echo UrlHelper::toPath('/path/to/url', '/base'); // Prints '/base/path/to/url'

BcMathHelper

Passing values of type float to a BCMath function which expects a string as operand may not have the desired effect due to the way PHP converts float values to string, namely that the string may be in exponential notation (what is not supported by BCMath), and that the decimal separator is locale depended (while BCMath always expects a decimal point).

<?php

$num1 = 0;         // (string) 0 => '0'
$num2 = -0.000005; // (string) -0.000005 => '-5.05E-6'

echo bcadd($num1, $num2, 6); // => '0.000000'

setlocale(LC_NUMERIC, 'de_DE'); // uses a decimal comma
$num2 = 1.2;                    // (string) 1.2 => '1,2'

echo bcsub($num1, $num2, 1);    // => '0.0'

?>

BcMathHelper solve problem with floats to strings converting and "," as decimal separator for BcMath functions:

use Nameless\Utilities\BcMathHelper;

var_dump(BcMathHelper::add('0.000005', '0.000005', 5));  // (float)0.00001
var_dump(BcMathHelper::add('0,000005', '0,000005', 5));  // (float)0.00001
var_dump(BcMathHelper::add(0.000005, 0.000005, 5));  // (float)0.00001
var_dump(BcMathHelper::add('5.0E-6', '5.0E-7', 5));  // (float)0.00001

var_dump(BcMathHelper::sub(0.000005, 0.000001, 5));  // (float)0.000004

var_dump(BcMathHelper::mul(0.000005, 0.000002, 11));  // (float)0.00000000001

var_dump(BcMathHelper::div(0.000005, 0.000002, 2));  // (float)2.50

var_dump(BcMathHelper::comp(0.000005, 0.000002, 6));  // (int)1

Tests

You can run the unit tests with the following commands:

cd path/to/nameless-utilities
./vendor/bin/phpunit

License

The Nameless utilities is open source software licensed under the GPL-3.0 license.