{"id":194,"date":"2008-04-17T09:09:00","date_gmt":"2008-04-17T12:09:00","guid":{"rendered":"http:\/\/helbertt.16mb.com\/site\/index.php\/2008\/04\/17\/novidades-do-php-5-3\/"},"modified":"2008-04-17T09:09:00","modified_gmt":"2008-04-17T12:09:00","slug":"novidades-do-php-5-3","status":"publish","type":"post","link":"https:\/\/helbertt.xyz\/site\/novidades-do-php-5-3\/","title":{"rendered":"Novidades do PHP 5.3"},"content":{"rendered":"<p>O PHP 5.3 esta previsto para ser lan\u00e7ado em abril e traz features que a tornam uma das vers\u00f5es mais aguardas pelos desenvolvedores PHP. Nesse artigo vou listar as principais novidades que foram anunciadas.<\/p>\n<p><strong>Namespaces<\/strong><br \/>Para quem acompanha o desenvolvimento da linguagem, sabe que essa feature \u00e9 a mais pedida e a mais polemica nas listas de discuss\u00e3o. Originalmente prevista para sair no PHP6, foi adiantada para alegria da galera :). Essa nova vers\u00e3o vir\u00e1 com uma implementa\u00e7\u00e3o completa de Namespaces, com suporte a autoload e namespaces hier\u00e1rquicos.<\/p>\n<p>Isso permite aos desenvolvedores organizar melhor o c\u00f3digo, evitando conflitos com bibliotecas internas do PHP ou de terceiros e produz um c\u00f3digo mais limpo e leg\u00edvel. Essencial para o pessoal que desenvolve frameworks.<\/p>\n<p>Voce agora pode fazer um c\u00f3digo assim:<\/p>\n<p><em><span style=\"color:#3333ff;\">namespace teste;<br \/>class minhaClasse {<br \/>const COR = &#8216;Azul&#8217;;<br \/>public function executar(){}<br \/>}<\/span><\/em><\/p>\n<p>e usar assim:<\/p>\n<p><em><span style=\"color:#3333ff;\">$var = teste::minhaClasse::executar();<\/span><\/em><\/p>\n<p>ou<\/p>\n<p><span style=\"color:#3333ff;\"><em>use teste;<br \/>$var = new minhaClasse::executar();<\/em><br \/><\/span><br \/>Para mais informa\u00e7\u00f5es sobre namespaces, visite <a href=\"http:\/\/www.phpavancado.net\/node\/430\">aqui<\/a>(em portugues), <a href=\"http:\/\/blog.felho.hu\/whats-new-in-php-53-part-1-namespaces.html\">aqui<\/a> ou <a href=\"http:\/\/cvs.php.net\/viewvc.cgi\/php-src\/README.namespaces?revision=1.7&amp;view=markup\">aqui<\/a>.<\/p>\n<p><strong>Garbage Collector<\/strong><br \/>Esse item me surpreendeu. Agora \u00e9 poss\u00edvel fazer limpeza da memoria n\u00e3o mais utilizada, reduzindo os problemas como o fat\u00eddico \u201cMemory allocation error\u201d. Excelente para quem constr\u00f3i sistemas de grande porte e esta preocupado com a escalabilidade.exemplo de fun\u00e7\u00f5es:<\/p>\n<p><span style=\"color:#3333ff;\"><em>gc_enable(); \/\/ Enable Garbage Collector<br \/>var_dump(gc_enabled()); \/\/ true<br \/>var_dump(gc_collect_cycles()); \/\/ # of elements cleaned up<br \/>gc_disable(); \/\/ Disable Garbage Collector<\/em><br \/><\/span><br \/><strong>Performance<\/strong><br \/>No geral esta nova vers\u00e3o \u00e9 15% mais r\u00e1pida. Os itens que se destacam \u00e9 a otimiza\u00e7\u00e3o do acesso a memoria, melhorias no tratamento de exce\u00e7\u00f5es e redu\u00e7\u00e3o das chamas ao sistema pelos m\u00e9todos require(_once), include(_once).<\/p>\n<p><strong>MySQLnd<\/strong><br \/>Uma das maiores novidades dessa vers\u00e3o \u00e9 um nova biblioteca para acesso ao Mysql, feita para substituir a atual e desenvolvida pelo pr\u00f3prio <a href=\"http:\/\/dev.mysql.com\/downloads\/connector\/php-mysqlnd\/\">pessoal da Mysql<\/a> especialmente para o PHP.<br \/>Entre as vantagens podemos citar:<\/p>\n<p>Velocidade de acesso aos dados<br \/>menor consumo de memoria<br \/>integra\u00e7\u00e3o com o PHP e n\u00e3o depend\u00eancia de driver<br \/>possibilidade de retornar estat\u00edsticas, para otimiza\u00e7\u00e3o de performance<br \/>Infelizmente ainda n\u00e3o existe uma vers\u00e3o para PDO pronta<\/p>\n<p><strong>__DIR__<\/strong><br \/>Agora temos um metodo magico para saber em que diretorio o script est\u00e1.<br \/>O que era feito assim:<br \/><em><span style=\"color:#3333ff;\">echo dirname(__FILE__); \/\/ <><\/em><\/span><br \/><em><span style=\"color:#3333ff;\"><\/span><br \/>agora pode ser feito assim:<br \/><span style=\"color:#3333ff;\"><em>echo __DIR__; \/\/ >= PHP 5.3<\/em><\/span><br \/><span style=\"color:#3333ff;\"><\/span><br \/><strong>Novo operador ?:<\/strong><br \/>Parecido com o j\u00e1 existente operador tern\u00e1rio, o operador ?: retorna o valor n\u00e3o vazio de 2 express\u00f5es.<br \/>Exemplo:<\/p>\n<p><em><span style=\"color:#3333ff;\">$a = true ?: false; \/\/ true<br \/>$a = false ?: true; \/\/ true<br \/>$a = &#8220;&#8221; ?: 1; \/\/ 1<br \/>$a = 0 ?: 2; \/\/ 2<br \/>$a = array() ?: array(1); \/\/ array(1);<br \/>$a = strlen(&#8220;&#8221;) ?: strlen(&#8220;a&#8221;); \/\/ 1<\/span><\/em><\/p>\n<p><strong>__callStatic()<\/strong><br \/>Tem a mesma finalidade da fun\u00e7\u00e3o __call para objetos, mas agora para metodos static.<\/p>\n<p><strong>Static Calls<\/strong><br \/>O PHP agora suporta chamadas dinamicas a metodos static<br \/>exemplo:<\/p>\n<p><em><span style=\"color:#3333ff;\">class helper {<br \/>static function foo() { echo __METHOD__; }<br \/>}<br \/>$a = &#8220;helper&#8221;;<br \/>$b = &#8220;foo&#8221;;<br \/>$a::$b(); \/\/ helper::foo<\/span><\/em><\/p>\n<p><strong>Bibliotecas e outras coisas<\/strong><\/p>\n<p>Melhorias na classe SPL e adi\u00e7\u00e3o de novos metodos.<br \/>Adicionada novas fun\u00e7\u00f5es de manipula\u00e7\u00e3o de datas<br \/>Criada a op\u00e7\u00e3o de \u201cprofiling\u201d na XSLT<br \/>um novo HEREDOC chamado NOWDOC que n\u00e3o precisa escapar as variaveis<br \/>atualizado para o SQLite 3.5.6<br \/>varias otimiza\u00e7\u00f5es CGI\/FastCGI SAPI<br \/>Novo tipo de erro E_DEPRECATED que indica que o m\u00e9todo ser\u00e1 removido (Preparando para o PHP6)<\/p>\n<p><strong>Conclus\u00e3o<\/strong><br \/>Com essa nova vers\u00e3o, a equipe de desenvolvimento do PHP mostra que esta preocupada com o chamado \u201centerprise ready\u201d, criando features solicitadas pelo mercado e preparando o terreno para o PHP6 que deve desembarcar somente na metade de 2009.<\/p>\n<p>Para saber mais:<br \/><a href=\"http:\/\/www.itjungle.com\/tfh\/tfh021808-story05.html\">Entrevista com Andy Gutmans<\/a><br \/><a href=\"http:\/\/wiki.php.net\/todo\/php53\">Roadmap PHP 5.3<\/a><br \/><a href=\"http:\/\/blog.felho.hu\/stone\/php-53\">Artigo de Gergely Hodicska<\/a><\/p>\n<p><\/em><br \/><span style=\"color:#3333ff;\"><\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>O PHP 5.3 esta previsto para ser lan\u00e7ado em abril e traz features que a tornam uma das vers\u00f5es mais<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"colormag_page_container_layout":"default_layout","colormag_page_sidebar_layout":"default_layout"},"categories":[93,37,57],"tags":[],"_links":{"self":[{"href":"https:\/\/helbertt.xyz\/site\/wp-json\/wp\/v2\/posts\/194"}],"collection":[{"href":"https:\/\/helbertt.xyz\/site\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/helbertt.xyz\/site\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/helbertt.xyz\/site\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/helbertt.xyz\/site\/wp-json\/wp\/v2\/comments?post=194"}],"version-history":[{"count":0,"href":"https:\/\/helbertt.xyz\/site\/wp-json\/wp\/v2\/posts\/194\/revisions"}],"wp:attachment":[{"href":"https:\/\/helbertt.xyz\/site\/wp-json\/wp\/v2\/media?parent=194"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/helbertt.xyz\/site\/wp-json\/wp\/v2\/categories?post=194"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/helbertt.xyz\/site\/wp-json\/wp\/v2\/tags?post=194"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}