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