{"id":749,"date":"2016-06-27T09:24:57","date_gmt":"2016-06-27T12:24:57","guid":{"rendered":"https:\/\/blog.umbler.com\/?p=749"},"modified":"2018-12-06T10:36:08","modified_gmt":"2018-12-06T12:36:08","slug":"phalcon-php","status":"publish","type":"post","link":"https:\/\/blog.umbler.com\/br\/phalcon-php\/","title":{"rendered":"Phalcon PHP"},"content":{"rendered":"<p>As discuss\u00f5es sobre usar ou n\u00e3o um framework PHP s\u00e3o vastas. Pesquisar \u201cto use or not to use a PHP framework\u201d no Google nos rendeu 48 300 000 resultados com as mais diversas opini\u00f5es. Decidimos perguntar \u00e0 comunidade PHP e acompanhar as discuss\u00f5es do <a href=\"https:\/\/www.quora.com\/Should-I-use-a-PHP-framework\" target=\"_blank\" rel=\"noopener\">Quora<\/a> e <a href=\"https:\/\/stackoverflow.com\/questions\/5821209\/what-should-i-know-before-using-a-php-framework\" target=\"_blank\" rel=\"noopener\">Stack Overflow<\/a> para trazermos alguns dos melhores argumentos sobre o uso de Frameworks.<\/p>\n<h2>Reinventar ou n\u00e3o Reinventar a Roda?<\/h2>\n<p><img fetchpriority=\"high\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/blog.umbler.com\/wp-content\/uploads\/2016\/06\/10640GYyK1INZ6.gif\" alt=\"Frameworks PHP - Reinventar ou n\u00e3o a Roda\" width=\"310\" height=\"174\" \/><br \/>\nEm muitas discuss\u00f5es sobre frameworks PHP, uma frase que acaba sempre aparecendo \u00e9: n\u00e3o reinvente a roda (don\u2019t reinvent the wheel). Um dos argumentos mais utilizados para defender o uso dos frameworks \u00e9 justamente a possibilidade de deixar os desenvolvedores livres para se preocupar com aquilo que realmente far\u00e1 seus sites\/aplica\u00e7\u00f5es se destacarem. Por que fazer toda a \u00e1rea de login de uma aplica\u00e7\u00e3o do zero se j\u00e1 existe um c\u00f3digo pronto, testado e seguro, que realiza essa fun\u00e7\u00e3o? Frameworks podem ser uma m\u00e3o na roda no desenvolvimento de grandes aplica\u00e7\u00f5es, porque j\u00e1 trazem bibliotecas e helpers importantes, evitando que voc\u00ea precise escrever do zero, ou copiar e colar esses itens de outro projeto. O uso de um framework tamb\u00e9m auxilia na organiza\u00e7\u00e3o do c\u00f3digo e torna mais f\u00e1cil o crescimento do projeto ou da equipe. Por dar uma estrutura que a aplica\u00e7\u00e3o precisa para crescer, evita situa\u00e7\u00f5es de c\u00f3digo n\u00e3o documentado e facilita a inclus\u00e3o de novas pessoas \u00e0 equipe, j\u00e1 que existe uma curva de aprendizado menor da aplica\u00e7\u00e3o quando um novo desenvolvedor entra no projeto.<\/p>\n<h3>Pr\u00f3s<\/h3>\n<ul class=\"icon-ul\">\n<li><i class=\"icon icon-li icon-check\"><\/i>Organiza\u00e7\u00e3o do c\u00f3digo e de arquivos<\/li>\n<li><i class=\"icon icon-li icon-check\"><\/i>Bibliotecas e utilit\u00e1rios<\/li>\n<li><i class=\"icon icon-li icon-check\"><\/i>Padr\u00e3o MVC<\/li>\n<li><i class=\"icon icon-li icon-check\"><\/i><a href=\"https:\/\/blog.umbler.com\/br\/seguranca-e-privacidade-no-atendimento-com-ia\/\">Seguran\u00e7a<\/a><\/li>\n<li><i class=\"icon icon-li icon-check\"><\/i>Menos c\u00f3digo e desenvolvimento mais r\u00e1pido &#8211; como cada projeto \u00e9 baseado na mesma estrutura, fica mais f\u00e1cil desenvolver<\/li>\n<li><i class=\"icon icon-li icon-check\"><\/i>Bom para projetos de desenvolvimento \u00e1gil<\/li>\n<li><i class=\"icon icon-li icon-check\"><\/i>Comunidade<\/li>\n<li><i class=\"icon icon-li icon-check\"><\/i>Performance Tools<\/li>\n<li><i class=\"icon icon-li icon-check\"><\/i>Projetos mais est\u00e1veis, j\u00e1 que a base \u00e9 a mesma<\/li>\n<\/ul>\n<p>Dos motivos contras, a maioria parece estar relacionada \u00e0 maturidade do framework. Frameworks que n\u00e3o estejam consolidados aumentam a curva de aprendizado, podem apresentar mais vulnerabilidades e, por n\u00e3o terem documenta\u00e7\u00e3o extensa, poder\u00e3o causar mais dificuldades na hora de corrigir eventuais problemas. H\u00e1 quem defenda que aprender um framework \u00e9 quase aprender uma nova linguagem. Se o projeto for simples e o tempo for curto, talvez seja melhor desenvolv\u00ea-lo diretamente. Para quem est\u00e1 come\u00e7ando a desenvolver e busca ganhar experi\u00eancia, tamb\u00e9m \u00e9 melhor evitar o uso de frameworks, justamente para ter controle da linguagem e saber resolver eventuais problemas.<\/p>\n<h3>Contras<\/h3>\n<ul class=\"icon-ul ul-dashed\">\n<li><i class=\"icon icon-li icon-times\"><\/i>Curva de aprendizado<\/li>\n<li><i class=\"icon icon-li icon-times\"><\/i>Dificuldade para contratar devs com experi\u00eancia em determinado framework<\/li>\n<li><i class=\"icon icon-li icon-times\"><\/i>Frameworks n\u00e3o necessariamente s\u00e3o livres de bugs<\/li>\n<li><i class=\"icon icon-li icon-times\"><\/i>Potenciais vulnerabilidades de seguran\u00e7a em frameworks<\/li>\n<li><i class=\"icon icon-li icon-times\"><\/i>Uma boa parte do c\u00f3digo n\u00e3o ser\u00e1 escrita por voc\u00ea, o que poder\u00e1 trazer uma dificuldade a mais na hora de corrigir algum bug;<\/li>\n<\/ul>\n<p>Frameworks existem desde o in\u00edcio dos anos 2000: um dos primeiros foi o Moijavi Project, de 2003-2004, que hoje j\u00e1 n\u00e3o est\u00e1 mais ativo. Desde ent\u00e3o, diversas op\u00e7\u00f5es de Frameworks est\u00e3o dispon\u00edveis, a maioria de forma gratuita, levando a uma nova pergunta: como escolher um framework? Tudo depende do projeto em quest\u00e3o e suas necessidades.<\/p>\n<p>O portal Site Point faz, anualmente uma pesquisa sobre os frameworks mais utilizados. Com 7800 respostas de desenvolvedores de todo mundo, um dos frameworks que t\u00eam ganho destaque nos \u00faltimos anos \u00e9 o Phalcon PHP, que vamos explorar nesse post.<\/p>\n<h2>Phalcon: novo, mas com potencial<\/h2>\n<p>O Phalcon foi lan\u00e7ado em 2012, ou seja, tem apenas cerca de quatro anos de exist\u00eancia. Mesmo assim, ele tem apresentado um crescimento muito positivo, com muitos usu\u00e1rios e uma comunidade crescente ocupada com a melhoria constante deste framework. Atualmente, ele est\u00e1 na vers\u00e3o 2.0.13 e j\u00e1 foi traduzido para, pelo menos, 14 idiomas (inclusive portugu\u00eas).<\/p>\n<h2>Diferenciais do Phalcon<\/h2>\n<p>Existem dois diferenciais principais do framework Phalcon que voc\u00ea precisa conhecer. Em primeiro lugar, ele funciona como uma extens\u00e3o de servidor web, escrita em linguagem C. Obviamente, isso j\u00e1 \u00e9 uma grande diferen\u00e7a de arquitetura em rela\u00e7\u00e3o aos outros frameworks PHP mais usados (como Symfony ou Laravel), que s\u00e3o escritos na pr\u00f3pria linguagem PHP.<\/p>\n<p>O uso da linguagem C e o fato de ser usado como uma extens\u00e3o web fazem com que o Phalcon tenha outro diferencial importante. Ele \u00e9 considerado o framework mais r\u00e1pido dispon\u00edvel. A velocidade de execu\u00e7\u00e3o \u00e9 maior e ele tamb\u00e9m consegue lidar com mais solicita\u00e7\u00f5es HTTP por segundo, se comparado a outros frameworks escritos em PHP.<\/p>\n<h2>Benchmark de rapidez do Phalcon<\/h2>\n<p>Para que voc\u00ea veja que a rapidez do Phalcon \u00e9 real, pesquisamos testes de benchmark comparando-o a outros frameworks. O site <a href=\"https:\/\/wheresmykeyboard.com\/2015\/07\/performance-benchmark-popular-php-frameworks\/\" target=\"_blank\" rel=\"noopener\">Where\u2019s My Keyboard<\/a> fez um teste em que o Phalcon conseguiu mais de 822 mil solicita\u00e7\u00f5es por segundo, mais do que o dobro do segundo colocado, Slim.<\/p>\n<p>O <a href=\"https:\/\/blog.a-way-out.net\/blog\/2015\/03\/27\/php-framework-benchmark\/\" target=\"_blank\" rel=\"noopener\">Blog a Way Out<\/a> tamb\u00e9m fez seu pr\u00f3prio teste, no qual o Phalcon atingiu 1.622 solicita\u00e7\u00f5es por segundo, mantendo um dos menores \u00edndices de pico de uso da mem\u00f3ria. J\u00e1 o site oficial do <a href=\"https:\/\/benchmark.kotchasan.com\/\" target=\"_blank\" rel=\"noopener\">Kotchasan<\/a>, uma alternativa pouco conhecida de framework PHP origin\u00e1ria da Tail\u00e2ndia, tamb\u00e9m fez testes de benchmarking que colocaram o Phalcon no topo da lista.<\/p>\n<p>Na documenta\u00e7\u00e3o do Phalcon, \u00e9 poss\u00edvel encontrar testes que mostram a velocidade maior quando comparado aos frameworks do mercado:<br \/>\nNeste teste, o Phalcon lidera com 2535,82 requests por segundo, mais do dobro do segundo colocado CodeIgniter, com 1059,05 requests por segundo.<br \/>\n<img decoding=\"async\" class=\"alignnone size-full wp-image-752\" src=\"https:\/\/blog.umbler.com\/wp-content\/uploads\/2016\/06\/Phalcon-1.png\" alt=\"Benchmark velocidade Phalcon PHP e outros Frameworks\" width=\"575\" height=\"356\" \/><br \/>\nTempo de resposta:<br \/>\n<img decoding=\"async\" class=\"alignnone size-full wp-image-753\" src=\"https:\/\/blog.umbler.com\/wp-content\/uploads\/2016\/06\/Phalcon-2.png\" alt=\"Phalcon PHP Benchmark tempo de resposta\" width=\"637\" height=\"401\" \/><br \/>\nO tempo de resposta do Phalcon tamb\u00e9m foi considerado muito superior ao dos outros concorrentes, 394 ms frente a 944 ms do segundo colocado, CodeIgniter.<br \/>\nPara ver outros testes de benchmark, acesse a <a href=\"https:\/\/docs.phalconphp.com\/en\/1.2.6\/reference\/benchmark\/hello-world.html\" target=\"_blank\" rel=\"noopener\">documenta\u00e7\u00e3o do Phalcon<\/a>.<\/p>\n<h2>Caracter\u00edsticas do Phalcon PHP<\/h2>\n<h3>Pr\u00f3s<\/h3>\n<ul class=\"icon-ul list-dashed\">\n<li><i class=\"icon icon-li icon-check\"><\/i>Ele oferece as caracter\u00edsticas cl\u00e1ssicas de um framework PHP MVC moderno ( rotas, controladores, <a href=\"https:\/\/blog.umbler.com\/br\/evitar-bloqueio-por-spam-no-whatsapp\/\">templates<\/a>, ORM, cache, etc.), ent\u00e3o n\u00e3o h\u00e1 nada de especial quando comparado com outros frameworks, exceto por sua velocidade.<\/li>\n<li><i class=\"icon icon-li icon-check\"><\/i>Diferentemente da maioria dos frameworks PHP, Phalcon \u00e9 implementado como uma extens\u00e3o de servidor web escrito em C. Uma grande desvantagem para o PHP \u00e9 que em cada solicita\u00e7\u00e3o, todos os arquivos s\u00e3o lidos a partir do disco r\u00edgido, traduzidos, e ent\u00e3o executados. Isso ocasiona uma perda de desempenho importante quando comparado com outras linguagens como Ruby (Rails) ou Python (Django). Com Phalcon, todo o framework j\u00e1 est\u00e1 em mem\u00f3ria, n\u00e3o havendo a necessidade de processar todos os arquivos.<\/li>\n<li><i class=\"icon icon-li icon-check\"><\/i>Outra vantagem de ser uma extens\u00e3o, \u00e9 a quantidade de arquivos. Laravel, por exemplo, que \u00e9 inscrito completamente em PHP, inclui v\u00e1rios pacotes via composer. J\u00e1 o Phalcon \u00e9 somente uma extens\u00e3o a mais no servidor.<\/li>\n<\/ul>\n<h3>Contras<\/h3>\n<ul class=\"icon-ul\">\n<li><i class=\"icon icon-li icon-times\"><\/i>Pode haver uma curva de aprendizado maior<\/li>\n<li><i class=\"icon icon-li icon-times\"><\/i>Caso algo d\u00ea errado, voc\u00ea poder\u00e1 ter que debugar c\u00f3digo em C (vers\u00e3o 2.0 ja utiliza Zephir)<\/li>\n<\/ul>\n<h2>Projetos desenvolvidos em Phalcon<\/h2>\n<p>As vantagens do Phalcon atra\u00edram desenvolvedores e levaram ao surgimento de aplicativos web bastante interessantes. Alguns exemplos de projetos desenvolvidos em Phalcon s\u00e3o:<\/p>\n<ul>\n<li>O site www.delete.im &#8211; que permite enviar uma mensagem que se auto deleta ap\u00f3s, no m\u00e1ximo, 99 segundos;<\/li>\n<li>O site www.photofunia.com &#8211; que permite criar v\u00e1rios efeitos divertidos com suas fotos.<\/li>\n<\/ul>\n<h2>Projetos em Phalcon na Umbler<\/h2>\n<p>A extens\u00e3o do Phalcon j\u00e1 est\u00e1 ativa por padr\u00e3o na Umbler. Crie uma <a href=\"https:\/\/www.umbler.com\/br?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=phalcon\" target=\"_blank\" rel=\"noopener\">conta gratuita<\/a> e fa\u00e7a um teste, depois nos diga o que achou \ud83d\ude09<\/p>\n","protected":false},"excerpt":{"rendered":"<p>As discuss\u00f5es sobre usar ou n\u00e3o um framework PHP s\u00e3o vastas. Pesquisar \u201cto use or not to use a PHP framework\u201d no Google nos rendeu 48 300 000 resultados com as mais diversas opini\u00f5es. Decidimos perguntar \u00e0 comunidade PHP e acompanhar as discuss\u00f5es do Quora e Stack Overflow para trazermos alguns dos melhores argumentos sobre [&hellip;]<\/p>\n","protected":false},"author":23,"featured_media":5616,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[23],"tags":[98,99,100,101,30],"class_list":["post-749","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev","tag-frameworks","tag-frameworks-php","tag-phalcon","tag-phalcon-php","tag-php"],"_links":{"self":[{"href":"https:\/\/blog.umbler.com\/br\/wp-json\/wp\/v2\/posts\/749"}],"collection":[{"href":"https:\/\/blog.umbler.com\/br\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.umbler.com\/br\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.umbler.com\/br\/wp-json\/wp\/v2\/users\/23"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.umbler.com\/br\/wp-json\/wp\/v2\/comments?post=749"}],"version-history":[{"count":0,"href":"https:\/\/blog.umbler.com\/br\/wp-json\/wp\/v2\/posts\/749\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.umbler.com\/br\/wp-json\/wp\/v2\/media\/5616"}],"wp:attachment":[{"href":"https:\/\/blog.umbler.com\/br\/wp-json\/wp\/v2\/media?parent=749"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.umbler.com\/br\/wp-json\/wp\/v2\/categories?post=749"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.umbler.com\/br\/wp-json\/wp\/v2\/tags?post=749"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}