function func_return_array_assoc() {
return [
'index1' => 'content1',
'index2' => true,
'index3' => 1001,
'index4' => 0.115,
'index5' => null,
'index6' => array(),
];
}
[
'index2' => $my_bool_var,
'index3' => $my_int_var,
'index1' => $my_string_var,
] = func_return_array_assoc();
echo $my_int_var; // 1001
echo $my_bool_var; // true
echo $my_string_var; // content1
Pois é pessoal, recentemente esta técnica de programação me chamou a atenção.
No início eu não conseguia compreender muito bem como isto funcionava, então tive de me aprofundar mais e acabei encontrando algo chamado Array Destructuring e o que apresento aqui neste artigo é apenas uma parte do que realmente é abrangido por este tema.
Primeiro vamos entender como funciona este mecanismo. Quando você iguala dois arrays associativos o PHP vai fazer um match dos índices nas duas arrays. Os índices que fizerem match serão igualados e os demais serão desprezados. Observe também que o match não é posicional, assim o array pode ser construído de forma diferente de cada lado.
A grande sacada vem na utilização de variáveis escalares na parte VALUE em um dos lados da array, desta forma durante o processo do match antes de tentar processar a igualdade o PHP primeiro atribui os valores nas variáveis.
Não conseguiu visualizar onde poderia usar esta técnica de forma eficiente?
Então responda, como é que uma função pode retornar mais de um valor? Certo, com um array ou um objeto. Mas e se construir um objeto está fora de cogitação (esforço desnecessário), onde recai a solução? Certo novamente, ARRAY.
E como você faz para receber o resultado de uma função que é um ARRAY? Boa! Você atribui o resultado a uma $variavel_array. Ou então, pode usar o famoso list para receber posicionalmente, certo?
Acho que agora deve ter caído a ficha… ao invés de usar o LIST do PHP para receber o array e atribuindo a variáveis escalares de forma posicional, esta técnica permite fazer isto através do match dos índices atribuindo somente os valores desejados sem se preocupar com o posicionamento.
Que loco! E pensar que já falei com muito dev que critica muito o ARRAY do PHP. Mais loco ainda….
Para quem quiser se aprofundar mais no tema recomendo dar uma olhada no blog Stitcher.io, segue o link:
https://stitcher.io/blog/array-destructuring-with-list-in-php