Utilities

Inphinit has some utilities that may be convenient or provide alternative features for backwards compatibility.

Array utilities

Checks if an array is a list

Starting from PHP 8.1 to determine if an array is a list you can use the array_is_list function, for older versions of PHP you can use the Inphinit\Utility\Arrays::indexed method, the variable is passed by reference, example:

use Inphinit\Utility\Arrays; $list = [0 => 'foo', 1 => 'bar']; $assoc = [0 => 'a', 1 => 'bar', 'foo' => 'bar']; var_dump(Arrays::indexed($list)); // Returns true var_dump(Arrays::indexed($assoc)); // Returns false

Checks if an array is associative

Starting from PHP 8.1 to determine if an array is a list you can use the if (array_is_list($array) === false), for older versions of PHP you can use the Inphinit\Utility\Arrays::associative method, the variable is passed by reference, example:

$list = [0 => 'foo', 1 => 'bar']; $assoc = [0 => 'a', 1 => 'bar', 'foo' => 'bar']; var_dump(Arrays::associative($list)); // Returns false var_dump(Arrays::associative($assoc)); // Returns true

Sort recursive arrays by keys

Recursively sort an array by key in ascending order:

use Inphinit\Utility\Arrays; $multidimentional = [ 'Foo' => 1, 'bar' => 2, 'Baz' => 3, 'moo' => [ 10 => 100, 20 => 200, 30 => 300, 5 => 50, 1 => [ 'saitama' => 'one punch', 'netero' => 'human evolution', 'allmight' => 'symbol of Peace', 'meruem' => 'this is why I was born' ] ] ]; Arrays::ksort($multidimentional); // same SORT_REGULAR print_r($multidimentional); Arrays::ksort($multidimentional, SORT_NUMERIC); print_r($multidimentional); Arrays::ksort($multidimentional, SORT_STRING); print_r($multidimentional); Arrays::ksort($multidimentional, SORT_LOCALE_STRING); print_r($multidimentional); Arrays::ksort($multidimentional, SORT_NATURAL); print_r($multidimentional); Arrays::ksort($multidimentional, SORT_FLAG_CASE); print_r($multidimentional);

To sort in descending order you can set the third parameter to true, example:

use Inphinit\Utility\Arrays; Arrays::ksort($multidimentional, SORT_REGULAR, true); print_r($multidimentional); Arrays::ksort($multidimentional, SORT_NUMERIC, true); print_r($multidimentional); Arrays::ksort($multidimentional, SORT_STRING, true); print_r($multidimentional); Arrays::ksort($multidimentional, SORT_LOCALE_STRING, true); print_r($multidimentional); Arrays::ksort($multidimentional, SORT_NATURAL, true); print_r($multidimentional); Arrays::ksort($multidimentional, SORT_FLAG_CASE, true); print_r($multidimentional);

For flags details see: https://www.php.net/manual/en/function.ksort.php

String utilities

Convert string to ASCII

use Inphinit\Utility\Strings; var_dump(Strings::toAscii('a e á é í ó ú â ê ô ã õ ÿ')); var_dump(Strings::toAscii('冒険エレキテ島')); var_dump(Strings::toAscii('재벌집 막내아들')); var_dump(Strings::toAscii('中山狼傳')); var_dump(Strings::toAscii('Grüß Gott')); var_dump(Strings::toAscii('Αλφαβητικός Κατάλογος')); var_dump(Strings::toAscii('жар-пти́ца')); var_dump(Strings::toAscii('هزار و یک شب')); var_dump(Strings::toAscii('Y̶o̶u̶r̶ ̶N̶a̶m̶e̶')); var_dump(Strings::toAscii('Y͓̽o͓̽u͓̽r͓̽ ͓̽N͓̽a͓̽m͓̽e͓̽'));

Output:

string(25) "a e a e i o u a e o a o y" string(19) "mao xianerekite dao" string(22) "jaebeoljib magnaeadeul" string(21) "zhong shan lang chuan" string(10) "Gruss Gott" string(22) "Alphabetikos Katalogos" string(9) "zar-ptica" string(13) "hzar w yk shb" string(9) "Your Name" string(9) "Your Name"

Captalize string

Capitalize words using hyphen or a custom delimiter: capitalize($text, $delimiter, $glue)

use Inphinit\Utility\Strings; var_dump(Strings::capitalize('foo-bar-baz')); var_dump(Strings::capitalize('foo bar baz', ' ')); var_dump(Strings::capitalize('foo:bar:baz', ':', '_'));

Output:

string(9) "FooBarBaz" string(9) "FooBarBaz" string(11) "Foo_Bar_Baz"

Other utilities

Select items from Array or Object

use Inphinit\Utility\PropertyAccessor; $items = [ 'entries' => [ 'a', 'b', 'c' ], 'foo' => [ 'bar' => [ 'baz' => [ 'deep' => 777 ] ] ], ]; // Equivalent to $items[entries][0] var_dump(PropertyAccessor::getValue('entries.0', $items)); // Equivalent to $items[entries][1] var_dump(PropertyAccessor::getValue('entries.1', $items)); // Equivalent to $items[entries][2] var_dump(PropertyAccessor::getValue('entries.2', $items)); // Equivalent to $items[foo][bar][baz][deep] var_dump(PropertyAccessor::getValue('foo.bar.baz.deep', $items)); // Equivalent to $items[foo][bar][baz][invalid] var_dump(PropertyAccessor::getValue('foo.bar.baz.invalid', $items)); // Equivalent to $items[foo][bar][baz][invalid] var_dump(PropertyAccessor::getValue('foo.bar.baz.invalid', $items, 'Alternative value!')); // Equivalent to $items[foo][bar][baz] var_dump(PropertyAccessor::getValue('foo.bar.baz', $items)); // Equivalent to $items[foo][bar] var_dump(PropertyAccessor::getValue('foo.bar', $items));

Output:

string(1) "a" string(1) "b" string(1) "c" int(777) NULL string(18) "Alternative value!" array(1) { ["deep"]=> int(777) } array(1) { ["baz"]=> array(1) { ["deep"]=> int(777) } }

Specific utilities

Go to homepage
Star us on Github