Meio Bit » Baú » Software » Lançado oficialmente o PHP 5.3.0

Lançado oficialmente o PHP 5.3.0

30/06/2009 às 16:30

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 traz, além de várias novidades, uma porção de bugs corrigidos (mais de 140...).

Algumas novidades em destaque, são:

Namespaces

"Namespace" é 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:

[quote]

<?php

namespace MeuProjeto; // namespace simples

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

namespace MeuProjeto\Sub\Nivel; // subnivel do namespace 'MeuProjeto'

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

?>

[/quote]

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:

[quote]

<?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'

?>

[/quote]

Agora com Static Bindings temos:

[quote]

<?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'

?>

[/quote]

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:

[quote]

<?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
*/

?>

[/quote]

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:

[quote]

<?php

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

$variavel('Hello');
$variavel('World');

?>

[/quote]

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.

relacionados


Comentários