Samuel Corradi

Blog

Lançado oficialmente o PHP 5.3.0

programacao, php, desenvolvimento

Lançado hoje (30/06/2009), oficialmente, a versão 5.3.0 do PHP. Segundo o time de desenvolvimento, essa foi a maior implementação das versões série 5. Ela trás, além de várias novidades, um monte de bugs corrigidos (mais de 140...).

Algumas novidades em destaque, são:

Namespace

Namespaces é um conceito amplamente utilizado em várias áreas da informática, é uma forma de encapsular itens. Para facilitar o entendimento, imagine o sistema operacional que tenha dois arquivos com o mesmo nome. Eles não podem existir dentro do mesmo diretório, certo? Sendo assim criamos caminhos de diretórios diferentes para cada um deles. No PHP seria como criar variáveis dentro de namespaces.

Qualquer código PHP pode ser colocado em namespaces, mas apenas três tipos de código (Class, Funções e Constantes) são afetados por elas.

A utilidade disso é evitar conflito com nomes de variáveis do sistema ou de programas feitos por terceiros. Também evita ter que ficar criando nomes longos para os objetos para impedir que não haja conflitos com outros objetos do mesmo nome.

Assim como algumas outras funções PHP (como a header() por exemplo), os namespaces devem ser definidos antes de qualquer echo ou print.

Vale dizer também que existem dois tipos de namespaces: os namespaces comuns e os sub-namespaces. Veja um exemplo de declaração de namespaces:

<?php

namespace MeuProjeto;  // namespace simples

const CONNECT_OK = 1;
class Conexao { /* ...  */ }
function conectar() {  /* ... */  }

namespace  MeuProjetoSubNivel; // subnivel do namespace 'MeuProjeto'

const CONNECT_OK = 1;
class Conexao { /* ...  */ }
function conectar() {  /* ... */  }

?>

Late StaticBinding

Outra novidade é a implementação do conceito de "Late Static Binding". Usando Late Statics Bindings, a resolução de métodos não é mais feito na classe onde ele foi criado, mas sim de forma hierárquica, seguindo a ordem de execução. Para entender melhor, veja o exemplo comparativo entre a implementação que tínhamos, e a nova possibilidade:

<?php

class A {
	public static  function quem() {
		echo __CLASS__;
	}
	public static  function testa() {
		self::quem();
	}
}

class B extends A {
	public static  function quem() {
		echo  __CLASS__;
	}
}

B::testa(); // sai 'A'

?>

Agora com Static Bindings temos:

<?php

class A {
	public static  function quem() {
		echo __CLASS__;
	}
	public static  function testa() {
		static::quem();  // aqui vem o Late Static Bindings
	}
}

class B extends A {
	public static  function quem() {
		echo  __CLASS__;
	}
}

B::testa(); // sairah  'B'

?>

GC (Garbage Colector)

Agora é possível armazenar o resultado de variáveis em cache. Dessa forma, mesmo que o estado de sua variável mude, é possível resgatar um valor anterior. Veja o exemplo de uso:

<?php
	
gc_enable (); // ativa  o cache que irah salvar os resultados
	
$valor = 'Primeiro  valor';
echo $valor. '</  br>';
$valor = 'Segundo  valor';
echo $valor. '</  br>';

$anteriores =  gc_collect_cycles(); // pega os valores anteriores em cache

$valor = $anteriores  ['valor'] [0]; // pega a posicao 0 da posicao de nome 'valor'

gc_disable($anteriores);  // limpa os valores pegos e desaloca da memoria

echo $valor . '</  br>';

/*
Esse script irah  retornar:

Primeiro valor
Segundo valor
Primeiro valor
*/

?>

Funções Anônimas

Funções Anônimas permitem criar funções sem um nome específico. Elas são muito úteis quando usadas como parâmetros de funções de callback (como preg_replace_callback), mas podem ter vários outras utilidades. Veja um exemplo:

<?php

$variavel =  function($name)
{
	echo('Digitou:' .  $name);
};
$variavel('Hello');
$variavel('World');

?>

Além dessas novas funções, existem alterações nos drives de conexão com o MySQL, alterações de comportamento em funções já amplamente utilizadas como a função session(), md5(), opendir(), e por ai vai...

Para conferir o anúncio, visite o site do PHP.net. Para conhecer a lista completa de alterações visite o ChangeLog do PHP5.

Incluir comentário






3 mensagens enviadas

Domingos

Opa ae valeu pelo toque! Nem sei o q dizer. Mas já corrigi!

Abraços

Samuel Corradi

Bom demais né Gustavo? Hoje mesmo precisei usar os "diretórios" para garantir que umas variáveis aqui não entrem em conflito. Mas, como essa versão ainda é relativamente recente, vai levar um tempo até poder usar as novidades com tranquilidade. Já que não é todo server que deve estar atualizado... Abraço!

Luiz Gustavo

Muito bom cara. Interessantes essas atualizações.

Últimos posts:

Destaques:

PHP Coupé - Desenvolvimento rápido e reaproveitável vForm - Validador universal de formulários

Programming and design by Samuel Corradi