O Futuro de PHP

Saiba quais mudanças estão armazenadas para o PHP V6 e como seus scripts irão mudar

A próxima edição do PHP, a V6, inclui novos recursos e aprimoramentos de sintaxe que facilitarão o uso de um ponto de vista orientado a objetos. Outros recursos importantes, como suporte a Unicode em muitas das funções principais, significam que o PHP V6 está em posição para melhor suporte internacional e robustez.

Nathan A. Good, Senior Information Engineer, Freelance Developer

Nathan A. Good mora na área Twin Cities em Minnesota. Profissionalmente, ele realiza desenvolvimento de software, arquitetura de software e administração de sistemas. Quando ele não está desenvolvendo software, ele gosta de montar PCs e servidores, ler sobre e trabalhar com novas tecnologias e tentar convencer seus amigos de começarem a usar software livre. Ele escreveu e coescreveu muitos livros e artigos, incluindo Professional Red Hat Enterprise Linux 3, Regular Expression Recipes: A Problem-Solution Approach, Regular Expression Recipes for Windows Developers: A Problem-Solution Approach, PHP 5 Recipes: A Problem-Solution Approach e Foundations of PEAR: Rapid PHP Development.



06/Mai/2008

PHP já é popular, usado em milhões de domínios (de acordo com Netcraft), suportado pela maioria dos ISPs e usado por empresas da Web muito conhecidas, como a Yahoo! As próximas versões do PHP tem como meta somar a esse sucesso, introduzindo novos recursos que tornam PHP mais útil em alguns casos e mais seguro em outros. Você está pronto para o PHP V6? Se você fosse fazer upgrade amanhã, seus scripts seriam bem executados ou haveria trabalho a ser feito? Este artigo foca as mudanças para o PHP V6 — algumas delas back-ported para as versões PHP V5.x — que podem requerer alguns ajustes em seus scripts atuais.

Se ainda não estava usando PHP e anda pensando sobre isso, dê uma olhada em seus recursos mais recentes. Esses recursos, de suporte a Unicode até as funções principais para XML, facilitam ainda mais escrever aplicativos PHP cheios de recursos.

Novos Recursos do PHP V6

O PHP V6 está atualmente disponível como uma captura instantânea para o desenvolvedor, portanto, você pode fazer download e testar muitos dos recursos e mudanças listados neste artigo. Para recursos que foram implementados na captura instantânea atual, consulte Recursos.

Suporte Aprimorado a Unicode

Muito aprimorado no PHP V6 está o suporte para strings Unicode em muitas das principais funções. Esse novo recurso tem um grande impacto, pois permitirá que o PHP suporte um conjunto mais amplo de caracteres para suporte internacional. Portanto, se você for um desenvolvedor ou arquiteto usando uma linguagem diferente, como a linguagem de programação Java™ , porque possui melhor suporte à internacionalização (i18n) do que PHP, será a hora de dar outra olhada em PHP quando o suporte melhorar.

Como você pode fazer download e usar uma versão para desenvolvedor do PHP V6 hoje, você verá algumas funções que já suportam as strings Unicode. Para obter uma lista de funções que foram testadas e verificadas para manipular Unicode, consulte Recursos.

O que É Unicode?

Unicode é um conjunto de caracteres, codificação de caracteres e metodologias de codificação padrão de mercado que têm como principal meta ativar i18n e localização (i10n). O Unicode Transformation Format (UTF) especifica uma maneira de codificar caracteres para Unicode. Para obter informações adicionais sobre Unicode e UTF, consulte Recursos.

Espaços de Nomes

Espaços de Nomes são uma maneira de evitar conflitos de nomes entre funções e classes sem usar prefixos nas convenções de nomenclatura que tornam os nomes de seus métodos e classes ilegíveis. Usando espaços de nomes, você pode ter nomes de classes que outra pessoa pode usar, mas agora você não precisa se preocupar com nenhum problema. A Lista 1 fornece um exemplo de um namespace no PHP.

Não é necessário atualizar nem alterar nada em seu código, pois qualquer código PHP que você escrever que não inclua espaços de nomes será bem executado. Como o recurso de espaços de nomes parece ser back-ported para a V5.3 do PHP, quando for disponibilizado, será possível começar a introduzir espaços de nomes em seus próprios aplicativos PHP.

Lista 1. Exemplo de um Namespace
<?php
// I'm not sure why I would implement my own XMLWriter, but at least
// the name of this one won't collide with the one built in to PHP
namespace NathanAGood;
class XMLWriter 
{
    // Implementation here...
}

$writer = new NathanAGood::XMLWriter();

?>

Recursos do Web 2.0

Dependendo de como você usa o PHP e da aparência de seus scripts agora, as diferenças de linguagem e sintaxe no PHP V6 podem ou não afetá-lo tanto quanto os próximos recursos, que são aqueles que permitem introduzir diretamente os recursos do Web 2.0 em seu aplicativo PHP.

SOAP

SOAP é um dos protocolos que os serviços da Web "falam" e é suportado diversas outras linguagens, como a linguagem de programação Java e Microsoft® .NET. Apesar de haver outras maneiras de consumir e expor serviços da Web, como Representational State Transfer (REST), SOAP permanece uma maneira comum de permitir que diferentes plataformas tenham interoperabilidade. Além dos módulos SOAP na biblioteca PHP Extension and Application Repository (PEAR), uma extensão SOAP para PHP foi introduzida na V5. Essa extensão não estava ativada por padrão, portanto, você deve ativar a extensão ou esperar que seu ISP o tenha feito. Além disso, os pacotes PEAR disponíveis permitem construir clientes e servidores SOAP, como o pacote SOAP.

A menos que você altere o padrão, a extensão SOAP estará ativada para você na V6. Essas extensões fornecem uma maneira fácil de implementar clientes SOAP e servidores SOAP, permitindo que você construa aplicativos PHP que consomem e fornecem serviços da Web.

Se as extensões SOAP estiverem ativadas por padrão, isso significa que você não precisará configurá-las no PHP. Se você desenvolver aplicativos PHP e publicá-los em um ISP, pode ser necessário verificar com seu ISP se as extensões SOAP estarão ativadas para você quando fizerem o upgrade.

XML

Desde o PHP V5.1, XMLReader e XMLWriter fazem parte das funções principais de PHP, que facilita trabalhar com XML em seus aplicativos PHP. Como as extensões SOAP, essa pode ser uma boa notícia se você usar SOAP ou XML, pois o PHP V6 será mais adequado para você do que a V4 pronta.

XMLWriter e XMLReader são classes orientadas a objetos baseadas em fluxo que permitem que você leia e escreva XML sem precisar se preocupar com os detalhes de XML.


Coisas Removidas

Além de ter novos recursos, o PHP V6 não terá algumas outras funções e recursos que faziam parte de versões anteriores. A maioria dessas coisas, como register_globals e safe_mode, são amplamente consideradas "quebradas" no PHP atual, já que podem expor a segurança a riscos. Em um esforço para limpar o PHP, as funções e recursos listados na seção a seguir serão removidos ou reprovados no PHP. Opositores dessa remoção mais provavelmente citarão problemas com scripts existentes sendo interrompidos após ISPs ou empresas fazerem upgrade para o PHP V6, mas aqueles que propuseram esse esforço de limpeza ficarão felizes de a equipe do PHP estar tapando alguns buracos e fornecendo uma implementação mais limpa e mais segura.

Recursos que serão removidos da versão PHP incluem:

  • magic_quotes
  • register_globals
  • register_long_arrays
  • safe_mode

magic_quotes

Citando portabilidade, desempenho e inconveniência, a documentação do PHP desestimula o uso de magic_quotes. É tão desestimulado que está sendo removido do PHP V6 de forma definitiva, portanto, antes de fazer upgrade para o PHP V6, certifique-se de que todo o seu código evite usar magic_quotes. Se você estiver usando magic_quotes para escapar strings para chamadas de banco de dados, use as consultas parametrizadas da implementação de seu banco de dados, se forem suportadas. Caso contrário, use a função de escape da implementação de seu banco de dados, como mysql_escape_string para MySQL ou pg_escape_string para PostgreSQL. A Lista 2 mostra um exemplo do uso de magic_quotes .

Lista 2. Usando magic_quotes (Desestimulado)
<?php
// Assuming magic_quotes is on...
$sql = "INSERT INTO USERS (USERNAME) VALUES $_GET['username']";
?>

Após preparar seu código PHP para as novas versões de PHP, seu código deve ter a aparência da Lista 3.

Lista 3. Usando Consultas Parametrizadas (Recomendado)
<?php
// Using the proper parameterized query method for MySQL, as an example
$statement = $dbh->prepare("INSERT INTO USERS (USERNAME) VALUES ?");
$statement->execute(array($_GET['username']));
?>

Agora que o suporte para magic_quotes será completamente removido, a função get_magic_quotes_gpc() não estará mais disponível. Isso pode afetar alguns dos scripts PHP mais antigos, portanto, antes da atualização, certifique-se de que você corrija quaisquer locais em que essas funções existem.

register_globals

A chave de configuração register_globals já estava desativada como padrão no PHP V4.2, o que era controverso na época. Quando register_globals está ativado, era fácil usar variáveis que poderiam ser injetadas com valores de formulários HTML. Essas variáveis não requerem mesmo inicialização em seus scripts, portanto, é fácil escrever scripts com buracos na segurança. A documentação de register_globals (consulte Recursos) fornece muito mais informações sobre register_globals. Consulte a Lista 4 para obter um exemplo de como usar register_globals.

Lista 4. Usando register_globals (Desestimulado)
<?php
// A security hole, because if register_globals is on, the value for user_authorized
// can be set by a user sending them on the query string 
// (i.e., http://www.example.com/myscript.php?user_authorized=true)
if ($user_authorized) {
    // Show them everyone's sensitive data...
}
?>

Se seu código PHP usa variáveis globais, você deve atualizá-lo. Se você não atualizar seu código para estar preparado para versões mais novas do PHP, considere atualizá-lo por questões de segurança. Quando tiver concluído, ser código deve ter a aparência da Lista 5.

Lista 5. Em Vez disso Sendo Específico (Recomendado)
<?php function is_authorized() {
    if (isset($_SESSION['user'])) {
        return true;
    } else {
        return false;
    } }
$user_authorized = is_authorized(); ?>

register_long_arrays

A configuração register_long_arrays , quando ativada, registra as variáveis predefinidas $HTTP_*_VARS . Se você estiver usando as variáveis mais longas, atualize agora para usar as variáveis mais curtas. Essa configuração foi introduzida no PHP V5 — presumivelmente para compatibilidade com versões anteriores— e o pessoal do PHP recomenda desativá-la por motivos de desempenho. A Lista 6 mostra um exemplo de uso de register_long-arrays .

Lista 6. Usando Arrays Registradas Reprovadas (Desestimulado)
<?php
    // Echo é o nome do valor do usuário fornecido na string de consulta, como
    // http://www.example.com/myscript.php?username=ngood
    echo "Welcome, $HTTP_GET_VARS['username']!";
?>

Se seu código PHP tiver a aparência do mostrado na Lista 6, atualize-o para parecer com a Lista 7. Desative a configuração register_long_arrays se estiver ativada e teste seus scripts novamente.

Lista 7. Usando $_GET (Recomendado)
<?php
    // Em vez disso usando a array $_GET suportada.
    echo "Welcome, $_GET['username']!";
?>

safe_mode

A chave de configuração safe_mode , quando ativada, assegura que o proprietário de um arquivo que está sendo operado corresponda ao proprietário do script que está em execução. Originalmente era uma maneira de tentar manipular a segurança quando operando em um ambiente de servidor compartilhado, como muitos ISPs fariam. (Para obter um link com uma lista de funções afetadas por essa mudança do safe_mode , consulte Recursos.) Seu código PHP não será afetado por essa mudança, mas é bom estar ciente disso caso você esteja configurando PHP no futuro ou contando com safe_mode em seus scripts.

Tags do PHP

Tags estilo Microsoft Active Server Pages (ASP)— a versão mais curta das tags PHP — não são mais suportadas. Para assegurar que isso não seja um problema para seus scripts, verifique se você não está usando as tags <% ou %> em seus arquivos PHP. Substitua-as por <?php e ?>.

FreeType 1 e GD 1

A equipe do PHP está removendo o suporte para FreeType 1 e GD 1, alegando como motivo a idade e a falta de desenvolvimentos contínuos de ambas as bibliotecas como o motivo. Versões mais novas de ambas as bibliotecas estão disponíveis, fornecendo melhor funcionalidade. Para obter informações adicionais sobre FreeType e GD, consulte Recursos.

ereg

A extensão ereg , que suporta as expressões regulares Portable Operating System Interface (POSIX), está sendo removida do suporte às principais funções do PHP. Se estiver usando qualquer uma das funções regex POSIX, essa alteração afetará-lo, a menos que você inclua a funcionalidade ereg . Se estiver usando regex POSIX hoje em dia, considere gastar algum tempo atualizando suas funções regex para usar as funções Perl-Compatible Regular Expression (PCRE), pois fornecem mais recursos e têm melhor desempenho. A Tabela 1 fornece uma lista de funções regex POSIX que não estarão disponíveis após ereg ser removida. Suas substituições PCRE também são mostradas.

Tabela 1. Funções ereg() e suas Equivalentes em PCRE
Função ereg()Função preg() semelhante
ereg(), eregi()preg_match()
ereg_replace(), ereg_replacei()preg_replace()

PHP V5.3

Alguns dos recursos mencionados aqui também foram portados para o PHP V5.3, que está planejado para ser liberado durante o primeiro trimestre de 2008. Você pode querer atualizar para a V5.3 e começar a usar esses recursos agora, de forma que ao ir para a V6 do PHP, será um salto menor. A lista de recursos a seguir foi back-ported para a V5.3:

  • Espaços de Nomes
  • XMLReader e XMLWriter nas funções principais, por padrão

Resumo

O PHP V6 oferecerá muitos aprimoramentos e limpará parte da funcionalidade que estava em versões mais antigas do PHP. Para tirar proveito dos novos recursos e da limpeza, leia a lista NOVIDADES (consulte Recursos), já que conterá as informações mais atualizadas sobre o que está incluído (ou não incluído) no PHP V6. Você pode fazer download de versões do desenvolvedor do PHP V6 hoje e começar a assegurar que seus aplicativos não sejam afetados pelas mudanças. Você também pode usar essa oportunidade para limpar seus próprios scripts, removendo qualquer uma das funções reprovadas mencionadas neste artigo ou atualizando sua sintaxe para assegurar que seus aplicativos sejam suportados.

Recursos

Aprender

  • Leia o arquivo NOVIDADES para o PHP V6 para obter as atualizações mais recentes dessa versão.
  • Verifique o blog de Sara Golemon.
  • Navegue pela lista de novidades Internos do PHP para ver os tipos de mudanças que os desenvolvedores estão fazendo no PHP.
  • Revise as notas de reunião de PHP para obter informações adicionais sobre o que foi alterado e o que não vai mudar para o PHP V6.
  • Visualize os detalhes sobre quais funções principais do PHP foram atualizadas para suporte a Unicode.
  • Leia mais sobre Unicode na Wikipedia.
  • GD é uma biblioteca de código de software livre para a criação dinâmica de imagens por programadores.
  • FreeType 2 é um mecanismo de fonte de software projetado para ser pequeno, eficiente, altamente customizável e portátil.
  • PHP.net é o recurso central para desenvolvedores de PHP.
  • Verifique a " Lista de Leitura Recomendada de PHP."
  • Navegue por todo o conteúdo de PHP em developerWorks.
  • Expanda suas qualificações em PHP verificando, no IBM developerWorks, Recursos de Projeto PHP.
  • Para ouvir entrevistas e discussões interessantes para desenvolvedores de software, verifique os podcasts do developerWorks.
  • Usando um banco de dados com PHP? Verifique Zend Core para IBM, um ambiente de desenvolvimento e produção de PHP pronto, transparente e de fácil instalação que suporta o IBM DB2 V9.
  • Mantenha-se atualizado com Eventos Técnicos e Webcasts do developerWorks.
  • Verifique conferências, feiras comerciais, webcasts e outros Eventos futuros no mundo que sejam de interesse de desenvolvedores de software livre da IBM.
  • Visite Zona de Software Livre do developerWorks para obter informações extensivas sobre como executar ações, sobre ferramentas e atualizações de projetos para ajudá-lo a se desenvolver com tecnologias de software livre e usá-las com produtos IBM.
  • Assista e aprenda sobre as tecnologias IBM e de software livre e funções de produtos gratuitamente com os Demos On Demand do developerWorks.

Obter produtos e tecnologias

  • Faça download do PHPUnit e comece a incluir testes de unidades para seus scripts PHP que podem ser usados para testes de upgrades.
  • Inove seu próximo projeto de desenvolvimento de software livre com software de avaliação da IBM, disponível para download ou em DVD.
  • Faça download do versões de avaliação de produtos IBMe entre em contato com ferramentas de desenvolvimento de aplicativos e produtos de middleware do DB2®, Lotus®, Rational®, Tivoli®e WebSphere®.

Discutir

Comentários

developerWorks: Conecte-se

Los campos obligatorios están marcados con un asterisco (*).


Precisa de um ID IBM?
Esqueceu seu ID IBM?


Esqueceu sua senha?
Alterar sua senha

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


A primeira vez que acessar o developerWorks, um perfil será criado para você. Informações do seu perfil (tais como: nome, país / região, e empresa) estarão disponíveis ao público, que poderá acompanhar qualquer conteúdo que você publicar. Seu perfil no developerWorks pode ser atualizado a qualquer momento.

Todas as informações enviadas são seguras.

Elija su nombre para mostrar



Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

Los campos obligatorios están marcados con un asterisco (*).

(Escolha um nome de exibição de 3 - 31 caracteres.)

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


Todas as informações enviadas são seguras.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=Software livre
ArticleID=382646
ArticleTitle=O Futuro de PHP
publish-date=05062008