Novas Funcionalidades no PHP 5.3            Douglas V. Pasqua          Zend Certified Engineer        douglas.pasqua@gmail...
ObjetivoConhecer as principais funcionalidades incluídas no PHP 5.3Exemplos de códigos PHP das novas funcionalidadesMel...
TópicosNamespacesStatic Late BindingsLambda e ClosuresArquivos Pharmysqlnd – MySQL Native DriverOutras melhorias    ...
Namespaces – CaracterísticasAgrupar classes, funções e constantes em pacotes (namespaces)Possibilita mais de um classe/f...
Namespaces – DefiniçãoDeterminando um namespace para um arquivo PHPA diretiva namespace deve ser declarada antes de qual...
Namespaces – ExemploArquivo UsuarioBlog.php  <?php  namespace Blog;  class Usuario {  private $nome;  public function set...
Namespaces – ExemploArquivo UsuarioCms.php  <?php  namespace Cms;  class Usuario {  private $nome;  public function setNo...
Namespaces – ExemploAcessando as classes “Usuario” de acordo com o namespace.  // incluíndo os arquivos das classes Usuar...
Namespaces – ExemploAcessando as classes “Usuario” de acordo com o namespace.  // incluíndo os arquivos das classes Usuar...
Namespaces – ExemploAcessando as classes “Usuario” de acordo com o namespace.  // incluíndo os arquivos das classes Usuar...
Namespaces – UtilizandoNome qualificado absoluto  $a = new BlogUsuario();  $b = new CmsUsuario();                        ...
Namespaces – UtilizandoNome qualificado absoluto  $a = new BlogUsuario();  $b = new CmsUsuario();Nome não-qualificado  n...
Namespaces – UtilizandoNome qualificado absoluto  $a = new BlogUsuario();  $b = new CmsUsuario();Nome não-qualificado  n...
Namespaces – Import e AliasA finalidade do Alias é criar um nome mais curto para referenciar um elementoA palavra-chave ...
Namespaces – Espaço GlobalA classe/função/constante pertencem ao namespace “global” quando não for especificado nenhuma n...
Namespaces – Espaço GlobalQuando pretendemos usar um elemento definido no espaço global, utiliza o prefixo “” seguido pel...
NamespacesAlém de classes, namespaces se aplicam para funções e constantes  <?php  namespace ABC;  const TESTCONST = true...
Namespaces __NAMESPACE__A constante __NAMESPACE__ contém o nome da namespace correnteNo namespace “Global” a constante t...
Namespaces - MúltiplosÉ possível trabalhar com múltiplos namespaces em um mesmo arquivo  namespace ProjetoBlog {  const t...
Namespaces - autoload  É possível identificar o namespace na função de autoload  do PHP. Autoload no PHP permite carrega...
Late Static BindingsPode ser usado para referência a classe chamada (run-time) em um contexto de herança de método estáti...
Late Static Bindings<?phpclass A {public static function who() {   echo __CLASS__;}public static function test() {   self:...
Late Static Bindings<?phpclass A {public static function who() {   echo __CLASS__;}public static function test() {   stati...
Lambda e Closures Lambda é o mesmo que funções anônimas.Podem ser definidas em qualquer lugar da aplicaçãoAs funções an...
Lambda e Closures<?php$r = array_map(function($value) {       return $value * 4;   }, array(2, 4, 6, 8, 10));print_r ($r);...
Lambda e Closures<?php$a = array(10, 4, 5 ,3 ,1);usort($a, function($a, $b) {          if ($a == $b) {                 ret...
Lambda e Closures Closures adicionam recursos à LambdasClosures permite a interação de variáveis externasA importação d...
Lambda e ClosuresPor padrão as variáveis importadas são passadas por valorÉ possível passar variáveis por referência usa...
Lambda e ClosuresAlém de programação procedural, closures podem ser utilizados em programação orientada a objetos <?php c...
Lambda e ClosuresExemplo de como podemos deixar um código mais limpo usando closures<?php$db = mysqli_connect("server","u...
Lambda e ClosuresExemplo de como podemos deixar um código mais limpo usando closures<?php$db = mysqli_connect("server","u...
Arquivos Phar Possibilita distribuir a aplicação/biblioteca em um único arquivoSemelhante aos arquivos JAR do JavaFunci...
Arquivos Phar - CriandoÉ necessário setar a diretiva phar.readonly para Off no php.iniPor motivos de segurança esta dire...
Arquivos Phar - Adicionando// método addFile$p->addFile("/project/userBlog.php");$p->addFile("/project/userCMS.php", "/lib...
Arquivos Phar - Adicionando// método addFile$p->addFile("/project/userBlog.php");$p->addFile("/project/userCMS.php", "/lib...
Arquivos Phar - Adicionando// método addFile$p->addFile("/project/userBlog.php");$p->addFile("/project/userCMS.php", "/lib...
Arquivos Phar - StubStub é o arquivo inicial que será carregado ao executar o pacote $p->setStub(<?php Phar::mapPhar(); i...
Arquivos Phar - StubUtilize o método createDefaultStub dentro do método setStub para especificar o arquivo que será execu...
Arquivos Phar - Exemplo<?php$p = new Phar(teste.phar, 0, teste.phar);$p->startBuffering();$p[index.php] = <?php echo "Olá ...
Arquivos Phar - ManipulandoAcessando através de includeinclude teste.phar;include phar://teste.phar/index.php;           ...
Arquivos Phar - Web <?php $phar = new Phar(exemplo.phar); $phar[index.php] = <?php echo "Hello World Index"; ?>; $phar[adm...
Arquivos Phar - Webhttp://exemplo.org/exemplo.phar“Hello World Index”http://exemplo.org/exemplo.phar/admin.php“Hello Wor...
Mysql Native DriverÉ uma alternativa ao extensão libmysqlFunciona com as versões do Mysql >= 4.1Driver integrado com Ze...
Mysql Native DriverDriver pode ser utilizado nas três extensões do MySQL (mysql, mysqli, PDO_MySQL)Para usar o mysqlnd c...
Outras MelhoriasFunção getoptError Levels e Funções Deprecated__callstaticVariáveis EstáticasNovas funçõesGotoNowDo...
Melhorias getoptA função getopt que funcionava somente no Linux esta disponível para WindowsAgora é possível usar o cara...
Melhorias Error LevelsE_ALL agora inclui E_STRICTE_DEPRECATED – Usado para indicar funções que serão descontinuadas em f...
Melhorias __callstatic__callstatic é um método mágico invocado quando se faz uma chamada para um método estático inexiste...
Melhorias Variáveis Estáticas<?php$class_name = "Teste";$static_method_name = "funcao";$class_name::$static_method_name();...
Melhorias Novas Funçõesarray_replace e array_replace_recursive<?php$base = array("laranja", "banana", "maça", "goiabada")...
Melhorias GotoOperador Goto pode ser usado para pular para outra seção do programa <?php goto b; echo A; b: echo B; ?> B ...
Melhorias NowDocHereDoc<?php$variavel = teste;$bar = <<<CODIGOPHPTeste código php $variavelCODIGOPHP;echo $bar; // Teste ...
Melhorias __DIR__Constante __DIR__ indica o diretório corrente onde o script esta localizadoAntes do PHP 5.3echo dirname...
Melhorias – Operador ?:Permite obter de forma ágil um valor não vazio à partir de duas expressões  $a   =   "" ?: 1; // 1...
Melhorias SPLBibliotecas SPL inclusas no PHP 5.3: SplFixedArray, SplStack, SplQueue, SplHeap, SplMinHeap, SplMaxHeap, Spl...
Fale Conosco            Obrigado por Assistir !               Mais informações:    http://dpasqua.wordpress.com        E-m...
Upcoming SlideShare
Loading in...5
×

Novas Funcionalidade no PHP 5.3

1,013
-1

Published on

Conhecer as principais funcionalidades incluídas na versão 5.3 do PHP!

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,013
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
13
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Novas Funcionalidade no PHP 5.3

  1. 1. Novas Funcionalidades no PHP 5.3 Douglas V. Pasqua Zend Certified Engineer douglas.pasqua@gmail.com http://dpasqua.wordpress.com
  2. 2. ObjetivoConhecer as principais funcionalidades incluídas no PHP 5.3Exemplos de códigos PHP das novas funcionalidadesMelhores práticas de programação ao se trabalhar com os novos recursos http://dpasqua.wordpress.com
  3. 3. TópicosNamespacesStatic Late BindingsLambda e ClosuresArquivos Pharmysqlnd – MySQL Native DriverOutras melhorias http://dpasqua.wordpress.com
  4. 4. Namespaces – CaracterísticasAgrupar classes, funções e constantes em pacotes (namespaces)Possibilita mais de um classe/função/constante com o mesmo nome, porém em diferentes namespacesDiminui o número de prefixos usados nos nomes das classes/funções e constantesDeixa o código mais limpo e legível http://dpasqua.wordpress.com
  5. 5. Namespaces – DefiniçãoDeterminando um namespace para um arquivo PHPA diretiva namespace deve ser declarada antes de qualquer outro código php ou caractéres na saída padrão <?php namespace exemplo; http://dpasqua.wordpress.com
  6. 6. Namespaces – ExemploArquivo UsuarioBlog.php <?php namespace Blog; class Usuario { private $nome; public function setNome ($nome) { $this->nome = $nome; } public function getNome() { return "Usuário Atual do Blog é " . $this->nome; } } http://dpasqua.wordpress.com
  7. 7. Namespaces – ExemploArquivo UsuarioCms.php <?php namespace Cms; class Usuario { private $nome; public function setNome ($nome) { $this->nome = $nome; } public function getNome() { return "Usuário Atual do Cms é " . $this->nome; } } http://dpasqua.wordpress.com
  8. 8. Namespaces – ExemploAcessando as classes “Usuario” de acordo com o namespace. // incluíndo os arquivos das classes Usuarios require_once("UserBlog.php"); require_once("UserCms.php"); http://dpasqua.wordpress.com
  9. 9. Namespaces – ExemploAcessando as classes “Usuario” de acordo com o namespace. // incluíndo os arquivos das classes Usuarios require_once("UserBlog.php"); require_once("UserCms.php"); // Instancinado a classe Usuario no namespace Blog $usuario = new BlogUsuario(); $usuario->setNome("Douglas"); echo $usuario->getNome() . PHP_EOL; // Usuário Atual do Blog é Douglas http://dpasqua.wordpress.com
  10. 10. Namespaces – ExemploAcessando as classes “Usuario” de acordo com o namespace. // incluíndo os arquivos das classes Usuarios require_once("UserBlog.php"); require_once("UserCms.php"); // Instancinado a classe Usuario no namespace Blog $usuario = new BlogUsuario(); $usuario->setNome("Douglas"); echo $usuario->getNome() . PHP_EOL; // Usuário Atual do Blog é Douglas // Instancinado a classe Usuario no namespace Cms $usuario1 = new CmsUsuario(); $usuario1->setNome("Douglas"); echo $usuario1->getNome() . PHP_EOL; // Usuário Atual do Cms é Douglas http://dpasqua.wordpress.com
  11. 11. Namespaces – UtilizandoNome qualificado absoluto $a = new BlogUsuario(); $b = new CmsUsuario(); http://dpasqua.wordpress.com
  12. 12. Namespaces – UtilizandoNome qualificado absoluto $a = new BlogUsuario(); $b = new CmsUsuario();Nome não-qualificado namespace Blog; $a = new Usuario(); // BlogUsuario http://dpasqua.wordpress.com
  13. 13. Namespaces – UtilizandoNome qualificado absoluto $a = new BlogUsuario(); $b = new CmsUsuario();Nome não-qualificado namespace Blog; $a = new Usuario(); // BlogUsuarioNome qualificado relativo namespace Empresa; $a = new BlogUsuario(); // EmpresaBlogUsuario // Erro pois classe não existe neste namespace http://dpasqua.wordpress.com
  14. 14. Namespaces – Import e AliasA finalidade do Alias é criar um nome mais curto para referenciar um elementoA palavra-chave para import e alias é “use” use BlogUsuario as BlogUsuario; use CmsUsuario; $u1 = new BlogUsuario(); // alias referenciando BlogUsuario(); $u2 = new Usuario(); // alias referenciando CmsUsuario(); $u3 = new BlogUsuario(); // FQN não são afetados por Alias e import http://dpasqua.wordpress.com
  15. 15. Namespaces – Espaço GlobalA classe/função/constante pertencem ao namespace “global” quando não for especificado nenhuma namespace <?php class Usuario { private $nome; public function setNome ($usuario) { $this->nome = $usuario; } public function getNome() { return "Usuário Atual Global é " . $this->nome; } } http://dpasqua.wordpress.com
  16. 16. Namespaces – Espaço GlobalQuando pretendemos usar um elemento definido no espaço global, utiliza o prefixo “” seguido pelo nome do elemento $usuario = new Usuario(); $usuario->setNome("Douglas"); echo $usuario->getNome(); // Usuário Atual Global é Douglas http://dpasqua.wordpress.com
  17. 17. NamespacesAlém de classes, namespaces se aplicam para funções e constantes <?php namespace ABC; const TESTCONST = true; // função fopen no namespace ABC function fopen() { // chamando a função Global fopen $f = fopen(...); // constante no namespace ABC return TESTCONST; } http://dpasqua.wordpress.com
  18. 18. Namespaces __NAMESPACE__A constante __NAMESPACE__ contém o nome da namespace correnteNo namespace “Global” a constante terá o valor “vazio”Além da constante __NAMEPSACE__ existe a palavra-chave “namespace” que pode ser usada para referenciar o namespace atual <?php namespace FooBar; echo __NAMESPACE__; // exibe FooBar namespacefunc(); // chama a função em FooBarfunc(); http://dpasqua.wordpress.com
  19. 19. Namespaces - MúltiplosÉ possível trabalhar com múltiplos namespaces em um mesmo arquivo namespace ProjetoBlog { const teste_constante = 1; class Usuario() { ... } } namespace ProjetoCms { const teste_constante = 1; class Usuario() { ... } } namespace { const teste_constante = 1; class Usuario() { ... } } http://dpasqua.wordpress.com
  20. 20. Namespaces - autoload  É possível identificar o namespace na função de autoload do PHP. Autoload no PHP permite carregar classes dinâmicamente A função de autoload recebe o FQN, que inclui o namespace<?php$usuario = new ProjetoCmsUsuario();function __autoload($class) {$class = classes/ . str_replace(, /, $class) . .php; require_once($class); // classes/Projeto/Cms/Usuario.php} http://dpasqua.wordpress.com
  21. 21. Late Static BindingsPode ser usado para referência a classe chamada (run-time) em um contexto de herança de método estático http://dpasqua.wordpress.com
  22. 22. Late Static Bindings<?phpclass A {public static function who() { echo __CLASS__;}public static function test() { self::who(); // self:: referencia a classe do qual ométodo test pertence}}class B extends A {public static function who() { echo __CLASS__;}}B::test(); // Será impresso "A" e não "B" http://dpasqua.wordpress.com
  23. 23. Late Static Bindings<?phpclass A {public static function who() { echo __CLASS__;}public static function test() { static::who(); // static:: referencia a classe chamadaem tempo de execução}}class B extends A {public static function who() { echo __CLASS__;}}B::test(); // Dessa vez será impresso “B” http://dpasqua.wordpress.com
  24. 24. Lambda e Closures Lambda é o mesmo que funções anônimas.Podem ser definidas em qualquer lugar da aplicaçãoAs funções anônimas podem ser atribuídas à uma variávelA função deixará de existir quando a variável sair fora do escopoA utilização mais comum são em funções que aceitam um callback, como array_map, usort, etc.É equivalente a função create_function. Lambda são mais rápidas e tornam o código mais limpo.create_function é executada em run-time enquanto Lambda são criadas em compile-time http://dpasqua.wordpress.com
  25. 25. Lambda e Closures<?php$r = array_map(function($value) { return $value * 4; }, array(2, 4, 6, 8, 10));print_r ($r);?>816243240 http://dpasqua.wordpress.com
  26. 26. Lambda e Closures<?php$a = array(10, 4, 5 ,3 ,1);usort($a, function($a, $b) { if ($a == $b) { return 0; } return ($a < $b) ? -1 : 1;});print_r($a);?>Array( [0] => 1 [1] => 3 [2] => 4 [3] => 5 [4] => 10) http://dpasqua.wordpress.com
  27. 27. Lambda e Closures Closures adicionam recursos à LambdasClosures permite a interação de variáveis externasA importação das variáveis externas são feitas através da palavra-chave “use” <?php $string = "Olá teste!"; $closure = function() use ($string) { echo $string; }; $closure(); ?> Olá teste ! http://dpasqua.wordpress.com
  28. 28. Lambda e ClosuresPor padrão as variáveis importadas são passadas por valorÉ possível passar variáveis por referência usando “&”<?php$a = 10;$closure = function() use (&$a) { $a += 50; };$closure();var_dump ($a); // int(60)$closure();var_dump ($a); // int(110)$closure();var_dump ($a); // int(160) http://dpasqua.wordpress.com
  29. 29. Lambda e ClosuresAlém de programação procedural, closures podem ser utilizados em programação orientada a objetos <?php class DebugAll { public function __invoke($var) { var_dump($var); } } $obj1 = new DebugAll; $obj1(50); $obj1(100); ?> int(50) int(100) http://dpasqua.wordpress.com
  30. 30. Lambda e ClosuresExemplo de como podemos deixar um código mais limpo usando closures<?php$db = mysqli_connect("server","user","pass");Logger::log(debug,database,Conectando com a database);Logger::log(debug,database,Inserindo informações nobanco de dados); http://dpasqua.wordpress.com
  31. 31. Lambda e ClosuresExemplo de como podemos deixar um código mais limpo usando closures<?php$db = mysqli_connect("server","user","pass");Logger::log(debug,database,Conectando com a database);Logger::log(debug,database,Inserindo informações nobanco de dados);// definindo o closure$logdb = function ($string) {Logger::log(debug,database,$string); };$logdb(Conectando com a base de dados);$logdb(Inserindo informações no banco de dados); http://dpasqua.wordpress.com
  32. 32. Arquivos Phar Possibilita distribuir a aplicação/biblioteca em um único arquivoSemelhante aos arquivos JAR do JavaFuncionalidade nativa no PHP 5.3A criação e manipulação são feitas através de código PHPPraticamente não há perda de desempenho http://dpasqua.wordpress.com
  33. 33. Arquivos Phar - CriandoÉ necessário setar a diretiva phar.readonly para Off no php.iniPor motivos de segurança esta diretiva é habilitada por padrão $p = new Phar(/project/app.phar, 0, app.phar); $p->startBuffering(); http://dpasqua.wordpress.com
  34. 34. Arquivos Phar - Adicionando// método addFile$p->addFile("/project/userBlog.php");$p->addFile("/project/userCMS.php", "/lib/CMS.php"); http://dpasqua.wordpress.com
  35. 35. Arquivos Phar - Adicionando// método addFile$p->addFile("/project/userBlog.php");$p->addFile("/project/userCMS.php", "/lib/CMS.php");// ArrayAccess SPL$p[index.php] = file_get_contents("/project/index.php");$p[teste.txt] = "Teste 123 456"; http://dpasqua.wordpress.com
  36. 36. Arquivos Phar - Adicionando// método addFile$p->addFile("/project/userBlog.php");$p->addFile("/project/userCMS.php", "/lib/CMS.php");// ArrayAccess SPL$p[index.php] = file_get_contents("/project/index.php");$p[teste.txt] = "Teste 123 456";// Incluir vários arquivos de uma vez, recursivo$p->buildFromDirectory(/project, /.php/); http://dpasqua.wordpress.com
  37. 37. Arquivos Phar - StubStub é o arquivo inicial que será carregado ao executar o pacote $p->setStub(<?php Phar::mapPhar(); include "phar://app.phar/index.php"; __HALT_COMPILER(); ?>); Phar::mapPhar() - Lê e inicializa o pacote PharO código stub deve terminar com __HALT_COMPILER() http://dpasqua.wordpress.com
  38. 38. Arquivos Phar - StubUtilize o método createDefaultStub dentro do método setStub para especificar o arquivo que será executado ao executar o pacote $p->setStub($p->createDefaultStub(index.php)); http://dpasqua.wordpress.com
  39. 39. Arquivos Phar - Exemplo<?php$p = new Phar(teste.phar, 0, teste.phar);$p->startBuffering();$p[index.php] = <?php echo "Olá mundo"; ?>;$p->setStub($p->createDefaultStub(index.php));$p->stopBuffering();?># php criarTestePhar.php# php teste.pharOlá Mundo http://dpasqua.wordpress.com
  40. 40. Arquivos Phar - ManipulandoAcessando através de includeinclude teste.phar;include phar://teste.phar/index.php; http://dpasqua.wordpress.com
  41. 41. Arquivos Phar - Web <?php $phar = new Phar(exemplo.phar); $phar[index.php] = <?php echo "Hello World Index"; ?>; $phar[admin.php] = <?php echo "Hello World Admin"; ?>; $phar->setStub(<?php Phar::webPhar(); __HALT_COMPILER(); ?>); ?> Phar::webPhar() atua como um frontcontroller redirecionando as chamadas web para dentro do pacote http://dpasqua.wordpress.com
  42. 42. Arquivos Phar - Webhttp://exemplo.org/exemplo.phar“Hello World Index”http://exemplo.org/exemplo.phar/admin.php“Hello World Admin” http://dpasqua.wordpress.com
  43. 43. Mysql Native DriverÉ uma alternativa ao extensão libmysqlFunciona com as versões do Mysql >= 4.1Driver integrado com Zend EnginePerfomance melhorada em diversas funçõesNão necessidade de linkar com bibliotecas externasUtiliza “PHP License”Facilidade na compilação http://dpasqua.wordpress.com
  44. 44. Mysql Native DriverDriver pode ser utilizado nas três extensões do MySQL (mysql, mysqli, PDO_MySQL)Para usar o mysqlnd compilando o PHP a partir do código fonte utilize os parâmetros:--with-mysql=mysqlnd / --with-mysqli=mysqlnd / --with-pdo- mysql=mysqlndNa distribuição oficial do PHP para Windows o driver mysqlnd vem habilitado por padrãoAinda não há suporte à SSL http://dpasqua.wordpress.com
  45. 45. Outras MelhoriasFunção getoptError Levels e Funções Deprecated__callstaticVariáveis EstáticasNovas funçõesGotoNowDoc__DIR__Operador ?:Recursos SPL http://dpasqua.wordpress.com
  46. 46. Melhorias getoptA função getopt que funcionava somente no Linux esta disponível para WindowsAgora é possível usar o caracter de atribuição “=” ao setar argumentos na linha de comando # php teste_opt.php -i="valor teste123"O valor do argumento pode ser opcional# php teste_opt.php -i http://dpasqua.wordpress.com
  47. 47. Melhorias Error LevelsE_ALL agora inclui E_STRICTE_DEPRECATED – Usado para indicar funções que serão descontinuadas em funções futuras do phpExemplos de funções que serão descontinuadas: ereg, ereg_replace, split, session_register, register_globals, magic_quotes_gpc http://dpasqua.wordpress.com
  48. 48. Melhorias __callstatic__callstatic é um método mágico invocado quando se faz uma chamada para um método estático inexistenteSemelhante à __call, porém para métodos estáticos class Teste { static function __callStatic($nome, $args) { echo $nome . "(" . implode(",", $args) . ")"; } } Teste::funcao(a, b); // funcao(a, b) http://dpasqua.wordpress.com
  49. 49. Melhorias Variáveis Estáticas<?php$class_name = "Teste";$static_method_name = "funcao";$class_name::$static_method_name();?>string(32) "static function called" http://dpasqua.wordpress.com
  50. 50. Melhorias Novas Funçõesarray_replace e array_replace_recursive<?php$base = array("laranja", "banana", "maça", "goiabada");$repl = array(0 => "abacaxi", 4 => "morango");$bacia = array_replace($base, $repl);print_r($bacia);?> Array ( [0] => abacaxi [1] => banana [2] => maþa [3] => goiabada [4] => morango) http://dpasqua.wordpress.com
  51. 51. Melhorias GotoOperador Goto pode ser usado para pular para outra seção do programa <?php goto b; echo A; b: echo B; ?> B http://dpasqua.wordpress.com
  52. 52. Melhorias NowDocHereDoc<?php$variavel = teste;$bar = <<<CODIGOPHPTeste código php $variavelCODIGOPHP;echo $bar; // Teste código php testeNowDoc<?php$bar = <<<CODIGOPHPTeste código php $variavelCODIGOPHP;echo $bar;?>Teste código php $variavel http://dpasqua.wordpress.com
  53. 53. Melhorias __DIR__Constante __DIR__ indica o diretório corrente onde o script esta localizadoAntes do PHP 5.3echo dirname(__FILE__);A partir do PHP 5.3echo __DIR__; http://dpasqua.wordpress.com
  54. 54. Melhorias – Operador ?:Permite obter de forma ágil um valor não vazio à partir de duas expressões $a = "" ?: 1; // 1 $b = 1 ?: 2; // 1 $c = false ?: true; // true $d = array() ?: array(10); // array(10) http://dpasqua.wordpress.com
  55. 55. Melhorias SPLBibliotecas SPL inclusas no PHP 5.3: SplFixedArray, SplStack, SplQueue, SplHeap, SplMinHeap, SplMaxHeap, SplPriorityQueue http://www.slideshare.net/tobias382/new-spl-features-in- php-53 http://dpasqua.wordpress.com
  56. 56. Fale Conosco Obrigado por Assistir ! Mais informações: http://dpasqua.wordpress.com E-mail: douglas.pasqua@gmail.com Fone: 11 9236-4184 http://dpasqua.wordpress.com
  1. ¿Le ha llamado la atención una diapositiva en particular?

    Recortar diapositivas es una manera útil de recopilar información importante para consultarla más tarde.

×