Utilitários
O Inphinit possui algumas ferramentas que podem ser convenientes ou fornecer recursos alternativos para compatibilidade com versões anteriores.
Utilitários de Array
Verifica se um array é uma lista.
A partir do PHP 8.1, para determinar se um array é uma lista é possivel usar array_is_list($var). Para versões mais antigas do PHP, você use método Inphinit\Utility\Arrays::indexed(&$var), onde a variável é passada por referência. Exemplo:
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
Verifica se um array é associativo.
A partir do PHP 8.1, para determinar se um array é uma lista é usado if (array_is_list($var) === false). Para versões mais antigas do PHP você pode usar Inphinit\Utility\Arrays::associative($var), onde a variável é passada por referência. Exemplo:
$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
Ordenar arrays recursivos por chaves
Ordenar recursivamente um array pela chave em ordem crescente:
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);
Para ordenar em ordem decrescente, você pode definir o terceiro parâmetro como true, por exemplo:
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);
Para obter detalhes sobre as flags, consulte: https://www.php.net/manual/en/function.ksort.php
Utilitários de string
Converter string para 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͓̽'));
Saída:
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"
Capitalizar string
Use hífen ou um delimitador personalizado para escrever palavras com inicial maiúscula: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', ':', '_'));
Saída:
string(9) "FooBarBaz"
string(9) "FooBarBaz"
string(11) "Foo_Bar_Baz"
Outros Utilitários
Selecionar itens de uma array ou objeto
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));
Saída:
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)
}
}