Nas redes sociais, muitas vezes os novos desenvolvedores de PHP perguntam "Qual framework devo usar para o meu projeto" e geralmente as respostas dadas são "Laravel" ou "Symfony".
Embora ambas sejam boas opções, a resposta certa para esta pergunta deve ser "O que você precisa que a estrutura faça?"
A estrutura certa deve ser aquela que faz o que você precisa, sem muitos recursos que você nunca usará.
Se você estiver fazendo um site com uma rota, usar Laravel ou Symfony seria um excesso de engenharia do site, enquanto para um site complexo, Laravel ou Symfony pode ser a escolha certa.
Micro frameworks são ótimos para construir sites de pequeno e médio porte que não precisam de todos os recursos que um framework full stack oferece.
Embora existam muitos, Slim e Flight PHP são ótimos exemplos de micro frameworks.
Recentemente, construí um pequeno site que pede ao usuário para resolver 10 questões relacionadas ao banco de dados. Tinha três rotas e algumas consultas básicas para buscar as perguntas e comparar as respostas.
Para um projeto pequeno como este, um micro framework é uma ótima escolha. Eu construí o site em Slim e Flight PHP para compará-los.
Se você nunca usou uma estrutura específica antes, usar o esqueleto do projeto fornecido geralmente é um ótimo lugar para começar.
O projeto esqueleto do Flight PHPs é praticamente o que eu esperava, leve, configuração MVC simples, fácil de entender a estrutura de pastas e saber onde tudo deve ir no projeto.
Para alguém novo na estrutura, a curva de aprendizado para começar a trabalhar é mínima.
Bibliotecas leves de compositores, apenas 5 no total (incluindo a biblioteca principal), 4 usadas na produção.
O tamanho de produção do Skeleton foi de 1,6Mb.
O projeto Slims Skeleton me surpreendeu. A estrutura de diretórios era mais complexa do que eu imaginava. Voltado mais para uma estrutura que pode ser utilizada em um projeto maior do que em um projeto pequeno. Para um micro framework, isso não era esperado.
O esqueleto Slim era um pouco mais pesado que o Flight PHP. 21 bibliotecas de compositores, 9 utilizadas na produção. O tamanho de produção do projeto foi de 3,3Mb.
Ambos funcionaram imediatamente com configuração adicional mínima necessária.
Em vez de usar os esqueletos, decidi construir os sites criando minha própria configuração. As vantagens de fazer isso é que pude adaptar as estruturas para atender às minhas necessidades e ver como elas eram flexíveis para diferentes estruturas.
Uma das grandes vantagens de usar micro frameworks é ser capaz de construí-los para fazer exatamente o que você precisa sem sobrecarga desnecessária, adicionando recursos e bibliotecas conforme necessário.
Minha configuração com Flight PHP não foi significativamente diferente do esqueleto. Embora eu tenha acabado com menos diretórios e diferentes bibliotecas de compositores, estruturalmente, era semelhante.
Com Slim, a estrutura do projeto acabou sendo significativamente diferente do esqueleto.
Foi bom que Slim fosse flexível e não fizesse suposições sobre estrutura e funcionasse muito bem com uma estrutura completamente diferente do esqueleto.
Flight PHP também é flexível dessa forma, permitindo estruturas mais complexas se necessário, adicionando novas bibliotecas ao framework foi simples.
Roteamento
Do ponto de vista do roteamento, foi bom trabalhar com ambos. Ambos eram fáceis de configurar, sem a necessidade de muita leitura de documentação.
Routes in Flight PHP era um pouco mais simples de configurar do que Slim e usava menos código para fazer isso, mas nenhum deles era difícil de configurar.
Grupos de roteamento, habilidades de regex e opções de middleware tornaram as rotas flexíveis e ao mesmo tempo fáceis de trabalhar.
Conexões de banco de dados
Com Slim, a expectativa é que você use um ORM como Eloquent ou Doctrine para suas consultas de banco de dados, enquanto Flight PHP fornece um wrapper simples para PDO que pode ser usado se você precisa e, opcionalmente, Active Record pode ser adicionado ao projeto para construção de consulta.
Para um projeto pequeno como o que eu estava trabalhando, usar um ORM parecia ser um pouco mais que o necessário, então acabei construindo uma pequena classe wrapper PDO para Slim, semelhante àquela que vem embutida no Flight PHP .
ORMs são ótimos, mas ter a flexibilidade incorporada para escolher como desejo codificar as consultas do banco de dados é um bom recurso.
Codificação geral
Os frameworks PHP Slim e Flight são bons para permitir que você escreva código do seu próprio jeito.
Alguns frameworks tendem a forçá-lo a codificar de uma maneira específica e às vezes pode parecer que você está lutando contra o framework.
As estruturas devem funcionar com você e não contra você, e ambos pareciam estar trabalhando comigo.
Slim também oferece vários complementos úteis, incluindo integração CSRF e cache HTTP.
Flight PHP fornece complementos adicionais, incluindo permissões e registro ativo.
Todos esses complementos são adições úteis sem a necessidade de usar soluções de terceiros ou criar as suas próprias.
Retornar JSON como resposta é mais limpo no Flight PHP do que no Slim, o Slim 3 teve uma resposta withJson conveniente. Embora o Slim 4 adira mais ao PSR-7, isso significa que construir a resposta JSON requer mais código.
Se eu fosse usar muito respostas JSON, provavelmente criaria um wrapper para torná-lo mais conveniente e ao mesmo tempo seguir o padrão PSR-7.
Esta é uma diferença significativa entre os dois Frameworks, Slim parece que precisa ser mais adaptado criando classes para limpar e simplificar a base de código, enquanto o Flight PHP já fez isso para você.
Slim fornece vários middlewares auxiliares. O middleware é necessário para fazer alguns recursos funcionarem.
Um exemplo disso é buscar dados de Javascript usando FETCH. Slim possui um método getParsedBody para criar um array de dados a partir da solicitação POST.
No entanto, para usá-lo, o addBodyParsingMiddleware precisa ser adicionado ao contêiner.
É uma armadilha para novos desenvolvedores, mas também fornece acesso a recursos opcionais, que podem reduzir o impacto geral da estrutura, ativando apenas os recursos necessários.
Flight PHP consegue isso por meio de um arquivo de configuração, alguns recursos podem ser ativados e desativados por meio da configuração, em vez de por meio da ativação de middleware.
Testes de velocidade
De acordo com benchmarks, comparar os dois tem resultados interessantes, Slim supera Flight PHP em algumas áreas, enquanto Flight PHP supera Slim em outras áreas.
Colocar os dois frameworks em teste em meu próprio código mostrou que o Flight PHP tinha tempos de resposta mais rápidos e consistentes do que o Slim.
Front-end
Solicitação GET retornando JSON
Solicitação POST retornando JSON
O que achei digno de nota foram os picos discrepantes ao usar o Slim.
Executar esses testes várias vezes produziu resultados semelhantes aos que mostrei acima, com tempos de resposta geralmente bons para ambos, mas com picos discrepantes no Slim que não ocorreram ao testar o Flight PHP, e o Flight PHP geralmente teve melhor tempos de resposta.
Se você ainda não se aventurou em micro frameworks, experimente-os, existem alguns por aí e pode ser uma ótima experiência de aprendizado experimentá-los e ver o que você gosta e o que não gosta em cada um um.
Tanto Slim quanto Flight PHP são ótimos micro frameworks.
Slim é uma estrutura sólida com alguns recursos interessantes, que funcionarão silenciosamente para você.
Flight PHP é mais leve e sua simplicidade torna o aprendizado da estrutura muito fácil.
Bons tempos de resposta e código mais simplificado para alcançar o mesmo objetivo o tornam uma escolha realmente boa para uso de uma microestrutura.
Depois de colocar esses dois lado a lado, eu prefiro Flight PHP em vez de Slim, mas como acontece com qualquer framework, experimente e veja se funciona para você.
Afinal, a estrutura certa é aquela que faz o que você precisa.
PHP de voo
Estrutura Slim
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3