Slim, possivelmente o framework ideal para quem vem do Golang

Photo by Paul Harris on Unsplash

Slim, possivelmente o framework ideal para quem vem do Golang

Eu trabalho com programação PHP há pelo menos 13 anos, já usei o PHP puro, frameworks como CodeIgniter, Symfony, Laravel, Laminas/Zend, CakePHP, Yii, já fiz um framework próprio, o Fox, já usei e criei várias bibliotecas também. Enfim, vi muita coisa no mundo do PHP.

Porém, eu sentia a necessidade de ter experiência com uma segunda linguagem de programação e escolhi o Golang como expliquei aqui.

Mas, depois de um tempo, acabei tendo saudades do PHP e como ele evoluiu nestes 4 anos que estive no mundo Golang, decidi fazer uns projetos para me manter atualizado na linguagem, mas aí veio o desafio.

Como trazer a filosofia minimalista do Golang para PHP?

Uma das coisas que mais gosto no mundo do Golang é ter quase total controle sobre o código e queria ter o mesmo controle no PHP, então decidi pesquisar e estudar frameworks para este objetivo.

Slim Framework

Logo de início, escolhi o Slim primeiro para fazer os testes, até porque eu me lembrava bem dele quando também estudei o finado Silex no passado para uso de um micro framework.

Nos primeiros testes eu usei o Skeleton do Slim e vi que ele utiliza somentes bibliotecas realmente necessárias para o funcionamento mínimo, como o PHP-DI, Monolog e o próprio Slim e a lib PSR-7 do Slim, como pode ser visto aqui. Com isto eu tenho um container para injeção de dependências, log, rotas, handlers, middlewares e pronto, tudo que eu preciso! Para conferir o Skeleton do Slim, basta acessar este link.

Com isso, todo o resto fica por minha conta, seja arquitetura em camadas, interfaces, repository, use cases, etc. Isto torna até mais fácil ter uma estrutura para testes unitários. Isto torna o projeto muito mais enxuto.

Porque não Symfony?

Eu vi a evolução do Symfony desde a versão 1 e vi como ele evoluiu de um grande e inchado framework para um micro framework, com o suporte de vários componentes da própria Symfony que você pode instalar opcionalmente e isto é muito bom, pois permite que você escolha somente o que irá precisar.

Um exemplo disto era que lembro que antigamente a gente fazia APIs no Symfony, mas o Twig era instalado como dependência, mesmo sem a gente precisar dele.

Confesso que embora eu seja um grande fã boy do Symfony, eu ainda considero um pouco chatinho lidar com o Kernel e configurações dele, principalmente por ficar em arquivos separados, embora eu entendo que isso é por conta dos bundles, que é algo excelente no ecossistema do Symfony.

Mas, o Symfony seria minha segunda escolha, caso Slim não atendesse minhas expectativas.

Porque não Lumen?

Embora o Lumen faça menos "mágica" que o Laravel, ainda sim eu não tenho o controle que eu gostaria do código, além dele ter muitas, muitas, muitas dependências, como pode ser visto aqui.

Conclusão

Por fim, minha escolha pelo Slim foi por conta da simplicidade e facilidade de implementação do seu código, deixando para ele algumas tarefas como injeção de dependências, rotas e middlewares, enquanto você fica com o resto, ao estilo "Do It Yourself".

Então é isto, até a próxima!