Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

O que há de novo no PHP 5.3

1,798 views

Published on

Palestra apresentada no Dia D 2009 da comunidade Debian-PE.

Fizemos uma breve contextualização e discutimos algumas novidades da versão 5.3.0 como:
namespaces
late static bindings
lambda functions
closures, etc

Published in: Technology
  • Be the first to comment

O que há de novo no PHP 5.3

  1. 1. 5.3 ? O que há de novo no Jose Berardo | www.especializa.com.br | 81 3465.0032
  2. 2. TODO MUNDO JÁ ALMOÇOU?
  3. 3. Agenda 1. Mas enfim, por que estamos falando de PHP?
  4. 4. Agenda 1. Mas enfim, por que estamos falando de PHP? 2. O que veio no PHP 5 até agora?
  5. 5. Agenda 1. Mas enfim, por que estamos falando de PHP? 2. O que veio no PHP 5 até agora? 3. Quais as novidades da versão 5.3 ? 3.1 Namespaces 3.2 Late static bindings 3.3 Lambda functions e closures 3.4 Melhorias gerais
  6. 6. Agenda 1. Mas enfim, por que estamos falando de PHP? 2. O que veio no PHP 5 até agora? 3. Quais as novidades da versão 5.3 ? 4. O que esperar do 6.0?
  7. 7. Mas enfim, por que estamos falando de PHP? POPULAR ENTRE AS MAIS PESQUISADAS
  8. 9. PODEROSA API BASTANTE RICA
  9. 10. SIMPLES BAIXA CURVA DE APRENDIZADO
  10. 11. RÁPIDA LEVE E COM BOM DESEMPENHO
  11. 12. O que veio no PHP 5 até agora? <ul><li>ZEND ENGINE 2 </li></ul><ul><li>SPL </li></ul><ul><li>PDO </li></ul><ul><li>SQLite </li></ul><ul><li>MySQLi </li></ul><ul><li>SimpleXML </li></ul><ul><li>Reflection </li></ul><ul><li>JSON </li></ul>
  12. 13. FOCO NA OOP REESTRUTURA DO MODELO DE OBJETOS
  13. 14. PADRONIZAÇÃO NOVAS APIs MAIS UNIFORMES
  14. 15. IDENTIDADE PRÓPRIA
  15. 16. O QUE HÁ DE NOVO NO 5.3? NAMESPACES
  16. 17. <?php namespace modelo; class Carrinho { public function __toString() { echo &quot;Classe:&quot; . __CLASS__ . &quot; &quot; ; echo &quot;Método:” . __METHOD__ . &quot; &quot; ; echo &quot;Diretório:&quot; . __DIR__ . &quot; &quot; ; echo &quot;Arquivo:&quot; . __FILE__ . &quot; &quot; ; } } ?>
  17. 18. <ul><li><?php </li></ul><ul><li>// Inclusão das classes necessárias </li></ul><ul><li>include &quot;model0/Carrinho.php&quot; ; </li></ul><ul><li>include &quot;controlador/Carrinho.php&quot; ; </li></ul><ul><li>// Uso da classe específica </li></ul><ul><li>use modelo::Carrinho; </li></ul><ul><li>echo new Carrinho(); </li></ul><ul><li>// Ou: </li></ul><ul><li>echo new modelo::Carrinho(); </li></ul><ul><li>?> </li></ul><ul><li>-------------------------- </li></ul><ul><li>Evita conflitos de nomes entre classes </li></ul><ul><li>Ideal para sistemas maiores ou bibliotecas </li></ul>
  18. 19. <ul><li><?php </li></ul><ul><li>// Uso da classe específica com __autoload() </li></ul><ul><li>use modelo::Carrinho; </li></ul><ul><li>echo new Carrinho(); </li></ul><ul><li>// Ou: </li></ul><ul><li>echo new modelo::Carrinho(); </li></ul><ul><li>function __autoload( $nome ) { </li></ul><ul><li>include str_replace( &quot;::&quot; , &quot;/&quot; , $nome) . </li></ul><ul><li>&quot;.php&quot; ; </li></ul><ul><li>} </li></ul><ul><li>-------------------------- </li></ul><ul><li>O namespace qualifica a classe </li></ul><ul><li>Ideal para refetir o namespace em diretórios </li></ul><ul><li>?> </li></ul>
  19. 20. Resultado A documentação fala sobre o uso dos :: Mas até a versão testada, o caracter de namespace é a barra invertida ()
  20. 21. O QUE HÁ DE NOVO NO 5.3? LATE STATIC BINDING
  21. 22. <?php class Mae { public static function metodo() { static:: outroMetodo(); } public static function outroMetodo() { echo &quot;Metodo da classe Mae&quot; ; } } class Filha extends Mae { public static function outroMetodo() { echo &quot;Metodo da classe Filha&quot; ; } } Filha::metodo(); // &quot;Metodo da classe Filha&quot; ?> No lugar do self
  22. 23. O QUE HÁ DE NOVO NO 5.3? LAMBDA FUNCTIONS E CLOSURES
  23. 24. <ul><li><?php </li></ul><ul><li>$a = function() { </li></ul><ul><li>return __FUNCTION__; </li></ul><ul><li>}; </li></ul><ul><li>echo $a (); </li></ul><ul><li>?> </li></ul><ul><li>--------------------------- </li></ul><ul><li>Curiosidade: o retorno é {closure} </li></ul>
  24. 25. <ul><li><?php </li></ul><ul><li>use modelo::Carrinho; </li></ul><ul><li>echo new Carrinho(); </li></ul><ul><li>spl_autoload_register( function ($nome) { </li></ul><ul><li>include str_replace( &quot;::&quot; , &quot;/&quot; , $nome) . &quot;.php&quot;; </li></ul><ul><li>}); </li></ul><ul><li>-------------------------- </li></ul><ul><li>Ideal para funções callback </li></ul><ul><li>Não polui o namespace global com mais uma função </li></ul><ul><li>?> </li></ul>
  25. 26. <?php function ordenarJogos( $time ) { $jogos = array( array( &quot;Buchudinhos&quot; , &quot;St. Cruz&quot; ), array( &quot;St. Cruz&quot;, &quot;Tribo Tucurumba&quot; ), array( &quot;Ceguinhos&quot;, &quot;St. Cruz&quot; ) ); usort( $jogos , function( $a, $b ) use ( $time ) { if ( $time == &quot;Casa&quot; ) return strcasecmp( $a[0], $b[0] ); else return strcasecmp( $a[1], $b[1] ); }); return $jogos; } var_dump(ordenarJogos( &quot;Casa&quot; )); ?>
  26. 27. Resultado Organizado por ordem alfabética dos times da casa
  27. 28. O QUE HÁ DE NOVO NO 5.3? MELHORIAS GERAIS
  28. 29. <ul><li>Nova extensão mysqlnd </li></ul><ul><li>Uso no mysqli e no pdo_mysql </li></ul><ul><li>Novo operador ternário ? : - agora binário =) </li></ul><ul><li>Ex: echo “” ?: “abc” ; // Saída: abc </li></ul><ul><li>Jump labels, acredite: goto!!!!! </li></ul><ul><li>Ex: </li></ul><ul><li>linha: </li></ul><ul><li>echo “imprime goto” ; </li></ul><ul><li>goto linha; </li></ul><ul><li>Garbage collector </li></ul><ul><li>Novos métodos especiais __callStatic e __invoke </li></ul><ul><li>Nova constante __DIR__ (dirname(__FILE__)) </li></ul><ul><li>Nowdocs, Heredoc com contexto de aspas simples </li></ul><ul><li>Diversas melhorias nas extensões e funções </li></ul>Me recusei a testar isso!
  29. 30. O QUE ESPERAR DO PHP 6.0?
  30. 32. <ul><li>UNICODE </li></ul><ul><li>TRAITS </li></ul><ul><ul><li>Suporte a herança múltipla </li></ul></ul><ul><li>FIM DE ALGUMAS BIZARRICES </li></ul><ul><ul><li>Ex.: asp_tags e funções sinônimos </li></ul></ul>
  31. 33. Obrigado <?php class Palestrante { function __invoke() { return array( &quot;Jose Berardo&quot;, &quot;www.especializa.com.br&quot;, &quot;81 3465.0032&quot; ); } } $p = new Palestrante(); print_r($p()); ?> Array ( [0] => Jose Berardo [1] => www.especializa.com.br [2] => 81 3465.0032 )

×