sexta-feira, 13 de janeiro de 2012

Novas características PHP 5.4 - Indireção de Arrays

Devo dizer que não me esforcei muito para me inteirar sobre as mudanças feitas na versão 5.3 da linguagem PHP. Não tive muitos problemas migrando código escrito para versões anteriores da linguagem. Os mais comuns foram warnings do tipo E_DEPRECATED causados por expressões deste tipo (dica para consertar o código: removam o "&"):
$obj =& new Class();

O uso de funções como eregi, split também passou a gerar warnings E_DEPRECATED.

Outra confissão é que eu nunca escrevi código que usa namespaces. E olha que a versão 5.3 foi lançada em junho de 2009!

Mas estou aqui para falar da vindoura versão 5.4 que possui algumas mudanças bem interessantes como a indireção de arrays. Mas o que é esta tal de indireção? Bom em inglês eles usam a palavra "dereference". Em computação é quando usamos uma referência ou endereço (pense nos ponteiros da linguagem C) para acessar e manipular um determinado valor. Em PHP quando usamos a referência $this para acessar algum membro da classe estamos fazendo uma indireção, ou seja, usando um endereço representado por $this para acessar o valor que realmente queremos seja uma varável escalar, uma instância de outra classe ou até mesmo um método.

Mas porque eu falei disso tudo? Até a versão 5.3 sempre que tínhamos uma função retornando um array nós só poderíamos acessar os valores do array usando uma varável para armazená-los, exemplo:

$meu_array = $objeto->retorna_array();
echo $meu_array[0];

Mas na versão 5.4 este código pode ficar menor:
echo $objeto->retorna_array()[0];

Agora nós podemos acessar o array diretamente na chamada do método que o criou. Acredito que o código ainda é fácil de ser entendido, pelo menos se o leitor já tiver um pouco de experiência.

Que venha o PHP 5.4!

Um comentário:

  1. Erro nas funções php obsoletas ereg e split: http://www.naninho.blog.br/web/php/erro-funcoes-php-obsoletas-ereg-split.html

    ResponderExcluir