Skip to main content
Go to homepage
Github

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);

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