{"id":18445,"date":"2018-07-03T14:03:53","date_gmt":"2018-07-03T17:03:53","guid":{"rendered":"https:\/\/king.host\/blog\/?p=18445"},"modified":"2024-06-03T16:45:06","modified_gmt":"2024-06-03T19:45:06","slug":"um-papo-sobre-framework-php","status":"publish","type":"post","link":"https:\/\/king.host\/blog\/tecnologia\/um-papo-sobre-framework-php\/","title":{"rendered":"Um Papo Sobre Framework PHP"},"content":{"rendered":"<p>Em junho\u00a0<strong>o PHP comemorou 23 anos<\/strong> e fizemos uma s\u00e9rie de posts especiais sobre uma das linguagens mais usadas no mundo. Durante as semanas em que produzimos materiais, acabamos batendo <strong>um papo com os DEVs aqui da KingHost sobre framework PHP<\/strong> e resolvemos fazer um compilado dos principais destaques.<\/p>\n<p>Vem comigo neste bate-papo descobrir <strong>qual framework PHP foi o mais citado entre os devs<\/strong>. Quais seus palpites?<\/p>\n<h2><img fetchpriority=\"high\" decoding=\"async\" class=\"alignleft wp-image-18446 size-full\" src=\"https:\/\/cdn-cms.king.host\/blog-hlg\/uploads\/2018\/07\/archer.png\" alt=\"\" width=\"250\" height=\"250\" title=\"\" srcset=\"https:\/\/cdn-cms.king.host\/blog-hlg\/uploads\/2018\/07\/archer.png 250w, https:\/\/cdn-cms.king.host\/blog-hlg\/uploads\/2018\/07\/archer-150x150.png 150w, https:\/\/cdn-cms.king.host\/blog-hlg\/uploads\/2018\/07\/archer-177x177.png 177w\" sizes=\"(max-width: 250px) 100vw, 250px\" \/>Daniel Archer &#8211; Analista de Desenvolvimento<\/h2>\n<h3>H\u00e1 uma experi\u00eancia legal que passou com um determinado Framework PHP e que gostaria de compartilhar?<\/h3>\n<p>Sim, em uma antiga empresa, t\u00ednhamos diversos m\u00f3dulos do sistema da Intranet separados por pastas e todos os arquivos acessados diretamente. Devido a isso, <strong>todo login era refeito em cada modulo<\/strong> e o gerenciamento era todo fragmentado.<\/p>\n<p>Para centraliza\u00e7\u00e3o e padroniza\u00e7\u00e3o utilizamos o <a href=\"https:\/\/www.slimframework.com\/\" target=\"_blank\" rel=\"noopener\"><strong>Slim Framework<\/strong><\/a>. Esse \u00e9 um framework focado em resolver o problema de roteamento de uma aplica\u00e7\u00e3o. Com o Slim foi poss\u00edvel adicionar novos m\u00f3dulos com uma mesma configura\u00e7\u00e3o e fazer a migra\u00e7\u00e3o paralela entre novas vers\u00f5es conforme elas estavam em desenvolvimento.<\/p>\n<h3>Quais foram as dificuldades que voc\u00ea teve e como encontrou a solu\u00e7\u00e3o neste framework?<\/h3>\n<p>Entre as dificuldades, uma foi justamente <strong>a quest\u00e3o de ACL<\/strong>, para controle de quais usu\u00e1rios tinham acesso a quais funcionalidades. Mas uma vez que <strong>toda requisi\u00e7\u00e3o era segmentada em GET\/POST\/PUT\/DELETE<\/strong> foi mais f\u00e1cil adicionar essa granularidade ao sistema, j\u00e1 que s\u00e3o rotas totalmente separadas.<\/p>\n<p>Com <strong>o Slim com muito f\u00e1cil resolver esse problema<\/strong> e criar um sistema de ACL completo.<\/p>\n<h3>E hoje, qual sua vis\u00e3o em geral deste framework? (ainda usa?)<\/h3>\n<p>O Slim tem se mostrado bem maduro, se atualizando constantemente \u00e0s novas mudan\u00e7as e adi\u00e7\u00f5es de PSRs. Acho que \u00e9 um micro-framework muito util e simples de lidar. Mas <strong>\u00e9 necess\u00e1ria cautela, pois toda arquitetura<\/strong> depende<strong> do desenvolvedor<\/strong>.<\/p>\n<h2><img decoding=\"async\" class=\"alignleft wp-image-18451 size-full\" src=\"https:\/\/cdn-cms.king.host\/blog-hlg\/uploads\/2018\/07\/felipe.png\" alt=\"\" width=\"250\" height=\"250\" title=\"\" srcset=\"https:\/\/cdn-cms.king.host\/blog-hlg\/uploads\/2018\/07\/felipe.png 250w, https:\/\/cdn-cms.king.host\/blog-hlg\/uploads\/2018\/07\/felipe-150x150.png 150w, https:\/\/cdn-cms.king.host\/blog-hlg\/uploads\/2018\/07\/felipe-177x177.png 177w\" sizes=\"(max-width: 250px) 100vw, 250px\" \/>Felipe Abreu &#8211; Analista de Desenvolvimento<\/h2>\n<h3>H\u00e1 uma experi\u00eancia legal que passou com um determinado Framework PHP e que gostaria de compartilhar?<\/h3>\n<p><strong>Utilizei o <a href=\"https:\/\/cakephp.org\/\" target=\"_blank\" rel=\"noopener\">CakePHP<\/a><\/strong> h\u00e1 alguns anos, na \u00e9poca em que os frameworks PHP seguiam uma linha um pouco mais elaborada, na qual t\u00ednhamos CakePHP e Zend 1 como refer\u00eancia. Este seguia uma linha bastante inspirada no Rails, o framework MVC que fez a linguagem Ruby ganhar notoriedade.<\/p>\n<p>Algo que chamou bastante a aten\u00e7\u00e3o para este FW foi a ferramenta intitulada &#8220;Bake&#8221; que, seguindo a mesma linha do Ruby on Rails, permite que com alguns comandos sejam magicamente criados arquivos necess\u00e1rios para o CRUD de alguma &#8220;entidade&#8221; (lendo direto a estrutura pr\u00e9-existente no BD para definir toda a estrutura MVC).<\/p>\n<p><strong>Muitos outros FW posteriormente implementaram tamb\u00e9m este tipo de criador de arquivo<\/strong>s, mas este era um dos maiores diferenciais deste quando surgiu.<\/p>\n<p>Minha escolha na \u00e9poca se deu pela agilidade e facilidade de se colocar algo no ar muito r\u00e1pido (mesma proposta do Ruby on Rails).<\/p>\n<p>O framework automatizava bastante coisa com uma interface bastante simples, de f\u00e1cil compreens\u00e3o, e um curva de aprendizado incomum para a \u00e9poca (a maioria dos FW tinham uma curva de aprendizado bem maior se comparado a este). Talvez a quest\u00e3o de<strong> curva de aprendizado seja algo que sempre chamou a aten\u00e7\u00e3o no CakePHP<\/strong>.<\/p>\n<h3>E hoje, qual sua vis\u00e3o em geral deste framework? (ainda usa?)<\/h3>\n<p>Hoje o CakePHP ainda segue uma linha semelhante de quando foi criado e ainda <strong>pode ser considerado um FW bastante completo<\/strong> e que supre praticamente qualquer necessidade comum a maioria das aplica\u00e7\u00f5es WEB.<\/p>\n<p>Talvez por isso n\u00e3o seja t\u00e3o recomendado para aplica\u00e7\u00f5es mais simples, que n\u00e3o tem a necessidade de uma estrutura grande (<strong>pode talvez ser considerado uma &#8220;bazuca para matar uma mosca&#8221; dependendo do problema<\/strong> &#8211; coisa que muito repetimos para a maioria dos FW que surgiram na mesma \u00e9poca).<\/p>\n<p>Mas embora ainda tenha uma estrutura muito robusta e com solu\u00e7\u00f5es m\u00e1gicas, muitas vezes desnecess\u00e1ria, <strong>pode continuar sendo considerado um FW relativamente simples de se entender, e a curva de aprendizado continua semelhante a sua origem<\/strong>.<\/p>\n<p><img decoding=\"async\" class=\"alignleft wp-image-18452 size-full\" src=\"https:\/\/cdn-cms.king.host\/blog-hlg\/uploads\/2018\/07\/jeronimo.png\" alt=\"\" width=\"250\" height=\"250\" title=\"\" srcset=\"https:\/\/cdn-cms.king.host\/blog-hlg\/uploads\/2018\/07\/jeronimo.png 250w, https:\/\/cdn-cms.king.host\/blog-hlg\/uploads\/2018\/07\/jeronimo-150x150.png 150w, https:\/\/cdn-cms.king.host\/blog-hlg\/uploads\/2018\/07\/jeronimo-177x177.png 177w\" sizes=\"(max-width: 250px) 100vw, 250px\" \/><\/p>\n<h2>Jer\u00f4nimo &#8211; Coordenador de Desenvolvimento<\/h2>\n<h3>Quais foram as dificuldades que voc\u00ea teve e como encontrou a solu\u00e7\u00e3o\u00a0neste framework?<\/h3>\n<p>Aqui na KingHost j\u00e1 experimentamos diversos frameworks dispon\u00edveis na linguagem PHP. <strong>Todos eles trouxeram experi\u00eancias importantes e muito aprendizado<\/strong>.<\/p>\n<p>Entretanto, destaco como experi\u00eancia de muito sucesso a utiliza\u00e7\u00e3o do <a href=\"https:\/\/www.slimframework.com\/\" target=\"_blank\" rel=\"noopener\"><strong>Slim<\/strong><\/a>. <strong>Este framework pequeno e simples cobriu muito do que era exigido em nossos projetos<\/strong>, bem como adiciona pouco c\u00f3digo ao runtime, o que torna a experi\u00eancia de uso dos sistemas mais r\u00e1pida.<\/p>\n<p>Al\u00e9m disso, a sua baixa complexidade torna a manuten\u00e7\u00e3o dos sistemas mais facilitada, pois o c\u00f3digo resultante \u00e9 tamb\u00e9m bem menor.<\/p>\n<p>N\u00e3o h\u00e1 dificuldades relativas a sua utiliza\u00e7\u00e3o, mas <strong>\u00e9 \u00fatil destacar que como ele \u00e9 um microframework, n\u00e3o prov\u00ea toda a funcionalidade de um fullstack<\/strong>, o que nos leva a importar outras bibliotecas para cumprir estas fun\u00e7\u00f5es.<\/p>\n<p>Isso, a meu ver, \u00e9 at\u00e9 melhor, pois nos <strong>permite escolher as melhores bibliotecas, cada uma para um problema<\/strong>, assim como se fazia &#8220;antigamente&#8221; em C, ou em outras linguagens. O c\u00f3digo resultante n\u00e3o depende exclusivamente de um mantenedor, e podemos &#8220;tunar&#8221; o c\u00f3digo com a utiliza\u00e7\u00e3o das bibliotecas mais adequadas, o que nos leva a c\u00f3digo melhor e mais r\u00e1pido.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignleft wp-image-18453 size-full\" src=\"https:\/\/cdn-cms.king.host\/blog-hlg\/uploads\/2018\/07\/mallmann.png\" alt=\"\" width=\"250\" height=\"250\" title=\"\" srcset=\"https:\/\/cdn-cms.king.host\/blog-hlg\/uploads\/2018\/07\/mallmann.png 250w, https:\/\/cdn-cms.king.host\/blog-hlg\/uploads\/2018\/07\/mallmann-150x150.png 150w, https:\/\/cdn-cms.king.host\/blog-hlg\/uploads\/2018\/07\/mallmann-177x177.png 177w\" sizes=\"(max-width: 250px) 100vw, 250px\" \/><\/p>\n<h2>Guilherme Mallmann &#8211; Analista de Desenvolvimento<\/h2>\n<h3>Quais foram as dificuldades que voc\u00ea teve e como encontrou a solu\u00e7\u00e3o neste framework?<\/h3>\n<p>N\u00e3o foi exatamente uma dificuldade, mas acho que se encaixa nesta pergunta. Eu estava come\u00e7ando a estudar mais afundo PHP quando apareceu um cliente para o qual eu deveria desenvolver um sistema.<\/p>\n<p>Um colega me indicou desenvolver com o <a href=\"https:\/\/phalconphp.com\/pt\/\" target=\"_blank\" rel=\"noopener\"><strong>Phalcon<\/strong><\/a>, <strong>pois \u00e9 um framework f\u00e1cil de aprender e r\u00e1pido por ser desenvolvido em C e roda como uma extens\u00e3o do PHP<\/strong>.<\/p>\n<p>Comparando com o \u00fanico framework que eu tinha desenvolvido na \u00e9poca (Zend) \u00e9 muito mais simples, a ORM \u00e9 muito mais tranquila de trabalhar, sem a necessidade de mapear toda tabela, todo campo da tabela.<\/p>\n<h3>Hoje, qual sua vis\u00e3o em geral deste framework? (ainda usa?)<\/h3>\n<p>S\u00f3 melhorou. A cada necessidade nova que eu tinha eu via que a documenta\u00e7\u00e3o do Phalcon j\u00e1 tinha a resposta. Tu podes utiliz\u00e1-lo tanto como um fullStack como um micro-framework e independente do tamanho da aplica\u00e7\u00e3o, d\u00e1 para ter uma aplica\u00e7\u00e3o otimizada, r\u00e1pida e de f\u00e1cil leitura de c\u00f3digo com Phalcon.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignleft wp-image-18454 size-full\" src=\"https:\/\/cdn-cms.king.host\/blog-hlg\/uploads\/2018\/07\/schmitz.png\" alt=\"\" width=\"250\" height=\"250\" title=\"\" srcset=\"https:\/\/cdn-cms.king.host\/blog-hlg\/uploads\/2018\/07\/schmitz.png 250w, https:\/\/cdn-cms.king.host\/blog-hlg\/uploads\/2018\/07\/schmitz-150x150.png 150w, https:\/\/cdn-cms.king.host\/blog-hlg\/uploads\/2018\/07\/schmitz-177x177.png 177w\" sizes=\"(max-width: 250px) 100vw, 250px\" \/><\/p>\n<h2>Mateus Schmitz &#8211; Analista de Desenvolvimento<\/h2>\n<h3>H\u00e1 uma experi\u00eancia legal que passou com um determinado Framework PHP e que gostaria de compartilhar?<\/h3>\n<p><strong>Utilizo bastante o <a href=\"https:\/\/phalconphp.com\/pt\/\" target=\"_blank\" rel=\"noopener\">Phalcon<\/a>, framework PHP<\/strong>, mas escrito utilizando Zephir, que acaba compilado e \u00e9 utilizado como uma biblioteca do PHP. Existem algumas vantagens e desvantagens quanto ao uso dele, <strong>a maior vantagem \u00e9 o quesito performance<\/strong>, pois o fato de ser compilado o torna extremamente perform\u00e1tico e com menor overhead.<\/p>\n<p>Outro ponto positivo \u00e9 <strong>a curva de aprendizado<\/strong>, que \u00e9 bem baixa se comparada a outros frameworks. Como ponto negativos podemos destacar justamente o fato de ser compilado e as suas corre\u00e7\u00f5es precisarem ser feitas em outra linguagem.<\/p>\n<h3>Quais foram as dificuldades que voc\u00ea teve e como encontrou a solu\u00e7\u00e3o neste framework?<\/h3>\n<p><strong>O maior desafio para utiliza\u00e7\u00e3o dele talvez seja essa caracter\u00edstica de instala\u00e7\u00e3o e o uso<\/strong>, pois gera certo receio. No in\u00edcio de sua ado\u00e7\u00e3o havia uma certa desconfian\u00e7a caso houvesse necessidade de colocar a m\u00e3o diretamente no c\u00f3digo do framework, o que n\u00e3o aconteceu. Em nenhum momento encontramos problemas com a implementa\u00e7\u00e3o do Phalcon e tudo correu conforme o planejado.<\/p>\n<h3>E hoje, qual sua vis\u00e3o em geral deste framework? (ainda usa?)<\/h3>\n<p>Atualmente, <strong>uma parte dos nossos servi\u00e7os e sistemas roda com Phalcon e possuem bons \u00edndices de performance<\/strong>. O framework segue evoluindo constantemente, ganhou uma vers\u00e3o LTS, tem suporte a vers\u00f5es mais atuais do PHP e \u00e9 cada vez mais utilizado. Em projetos pessoais, sempre que necess\u00e1rio o uso de algum framework, opto pelo uso do Phalcon, que possui tamb\u00e9m uma vers\u00e3o micro, ideal para pequenas aplica\u00e7\u00f5es.<\/p>\n<p>&#8212;<\/p>\n<p>E a\u00ed, pessoal, concordam com nossos DEVs? O nosso placar foi:\u00a0<strong>Slim citado 2x, assim como Phalcon. J\u00e1 o Cake PHP, apenas uma vez! <\/strong><\/p>\n<p>Conta pra gente nos coment\u00e1rios <strong>qual sua experi\u00eancia mais legal utilizando um framework PHP<\/strong>.<\/p>\n<p>Fique ligado no <a href=\"https:\/\/king.host\/blog\/tag\/php\/\" target=\"_blank\" rel=\"noopener\">LAB<\/a>, o Blog da KingHost para mais conte\u00fados sobre PHP!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Em junho\u00a0o PHP comemorou 23 anos e fizemos uma s\u00e9rie de posts especiais sobre uma das linguagens mais usadas no mundo. Durante as semanas em que produzimos materiais, acabamos batendo um papo com os DEVs aqui da KingHost sobre framework PHP e resolvemos fazer um compilado dos principais destaques. Vem comigo neste bate-papo descobrir qual [&hellip;]<\/p>\n","protected":false},"author":331,"featured_media":18459,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1179,8],"tags":[1374],"class_list":["post-18445","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-desenvolvimento","category-tecnologia","tag-php"],"_links":{"self":[{"href":"https:\/\/king.host\/blog\/wp-json\/wp\/v2\/posts\/18445","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/king.host\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/king.host\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/king.host\/blog\/wp-json\/wp\/v2\/users\/331"}],"replies":[{"embeddable":true,"href":"https:\/\/king.host\/blog\/wp-json\/wp\/v2\/comments?post=18445"}],"version-history":[{"count":16,"href":"https:\/\/king.host\/blog\/wp-json\/wp\/v2\/posts\/18445\/revisions"}],"predecessor-version":[{"id":38348,"href":"https:\/\/king.host\/blog\/wp-json\/wp\/v2\/posts\/18445\/revisions\/38348"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/king.host\/blog\/wp-json\/wp\/v2\/media\/18459"}],"wp:attachment":[{"href":"https:\/\/king.host\/blog\/wp-json\/wp\/v2\/media?parent=18445"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/king.host\/blog\/wp-json\/wp\/v2\/categories?post=18445"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/king.host\/blog\/wp-json\/wp\/v2\/tags?post=18445"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}