Microframework PHP definição

Micro frameworks em minha observação

Vou descrever um pouco sobre o que tenho aprendido sobre framework PHP e esclarecer um pouco da diferença entre micro frameworks e fullstack frameworks. A comunidade PHP tem se dedicado em desenvolver essas duas frentes para facilitar a criação de novas aplicações, cada uma com suas vantagens. Acredito que podemos chegar a uma definição e esclarecer quando usar.

Proposta de definição

Um microframework é um termo usado para se referir a um framework de aplicação web minimalista. É contrastado com fullstack frameworks também chamados de frameworks entreprise, onde há uma coleção completa de recursos a disposição. Para um micro framework os recursos adicionais são considerados como dependências da aplicação, deixando mais enxuto o mecanismo mínimo de funcionamento.

Um micro framework facilita o recebimento de uma requisição HTTP, roteando a requisição para uma controller apropriada, despachando uma controller e retornando uma resposta HTTP. Além desse recurso talvez alguns adicionais, como log, porém a ideia que recursos sejam dependências do projeto a ser implementado. Como pode ser ilustrado na imagem abaixo:

ex de arquitetura de um microframework
exemplo de arquitetura de um microframework

Um fullstack framework é comum ter um conjunto de recursos para uma aplicação web completa, como:

  • Autenticação, contas, papéis, login, etc.
  • Acesso a base de dados, principalmente através de um mapeamento objeto relacional
  • Validação de entradas e sanitização de input
  • Views e template engine
  • Abstração de sistemas de arquivos

Também pode ser adicionado recursos por dependências em projetos fullstack, porém para uma aplicação web os recursos já existem em boa parte. Como é ilustado na imagem abaixo:

arquitetura de fullstack framework
exemplo de arquitetura de um fullstack framework

Projetos de microframeworks em PHP

Abaixo listei os quais eu consegui captar, eu particularmente uso o Slim framework e tenho um skeleton para usa-lo com o paradgima de Orientação a Objetos PHP em https://github.com/ptcmariano/slim-skeleton-controller

Movimento de microserviços

A proposta desse artigo não é se aprofundar a discussão para o movimento de microserviços, porém acredito que esses projetos de microframeworks vem para facilitar a implementação da estratégia de microserviços. Deve haver relações entre esses movimentos, se alguém tiver referências por favor comentem para que a comunidade tenham melhor entendimento dessa relação.

Conclusão, prós e contras

Podemos observar a diferença principal é que os microframeworks usam dependências para criar as aplicações web, isso traz a vantagem de maior flexibilidade para variar quais dependências você vai escolher para cada projeto, porém há necessidade de administração maios das dependências. Para a escolha de um fullstack framework, tem a vantagem de haver recursos disponíveis para a sua aplicação, tendo também a facilidade de uma única documentação explicar como tratar todos recursos disponíveis, com a desvantagem de carregar recursos que talvez não sejam necessários para o projeto que você irá usar e menor flexibilidade para alterar os recursos que serão usados (não é comum altera-los já que estão disponíveis). Bom com essas informações é possível melhorar a escolha de cada projeto, sendo que pode ser enriquecido a decisão com seus próprios critérios para escolha de um ou outro tipo de framework. Desejo que a próxima vez que tomar a decisão de usar um framework leve em consideração, além é claro de sua experiência, qual é a necessidade do projeto, vai usar poucos recursos? vai experimentar um recurso novo? Com isso você terá a oportunidade de expandir a suas habilidades e a aplicação web ter novos recursos quem sabe até disponibilizar novas oportunidades de negócios.

Se achar que algum ponto pode ser melhor no artigo, por favor faça comentários a respeito. Pretendo aumentar a discussão sobre isso para entendermos melhor essas frentes.

Referências

Acessados em 17/04/2017

https://belitsoft.com/laravel-development-services/full-stack-framework-or-microframework-laravel-or-lumen

https://en.wikipedia.org/wiki/Microframework

Anúncios

Minha Jornada com PHP

Recentemente me deparei que estou envolvido até as tampas com PHP. Comecei aqui mesmo em 2010 e nem sabia, a plataforma wordpress ainda não tinha me trazido para desenvolvimento, era só uma forma de compartilhar os meus estudos.

Agora em 2017, nos últimos só tenho utilizado PHP, por que? Simples, ele é produtivo. Ah beleza, se usar Rails ou Django tem gente que consegue criar aplicações com facilidade. Mas eu ter trabalhado 3 anos e meio na Catho, sai pra montar um negócio (em outro post explico, eu se quiser me mande uma msg), fez com que eu conhecesse essa incrivel plataforma, gratuita, popular e vamos dizer “simpática”. Veja só é um elefante! (elephantine mascot of the PHP project) rsrs.

elephpant-running-78x48

Bom pra continuar essa saga, comprei um livro, criando aplicações web com wordpress.

Pretendo criar artigos sobre WP aqui! e continuar a descrição dos meus estudos nesse blog. Depois de um hiato de alguns meses.

Abraços.

Paulo Tiago Castanho Mariano

 

Escrever menos código

One of the fundamental truths of software development is that you have to write code, but one of the biggest fallacies is the idea that writing code is your job. When I first started out as a software developer, I fell into that trap, writing code is a powerful thing, its empowering, you feel like you are productive and you are accomplishing things. However, what I have learned over the years is the real truth of the matter. The truth that the job of a software developer is to write as little code as possible.

Now, don’t get me wrong, we should not be getting ourselves into code golf situations where we are compacting code and saving keystrokes to the point where the code you produce is no longer understandable. When you think about it though the fact that most of your time will be maintaining the terrible code you wrote, writing less code and not creating more work for yourself will start to look like an exceptionally good idea.

Why?

Look around, look at your tools, look at the framework you likely use to produce that thing you work on. Everything you do, all the tools you use, everything is trying make you write less code. Your tools are trying to make you less error prone, and abstracting away the things that will cause you trouble down the road.

So why should you write less code? When I said earlier that your job was to write less code, I was fibbing a little bit. Really your job is to think, your job is to think about the problem at hand, devise an elegant solution and then turn that solution into software. One of the byproducts of creating software is that you have to write code to solve problems.

Code is a by-product

Code isn’t that important. We love to convince ourselves that it is because as we actually start executing and turning our solutions into software, it seems like writing code is both a means and an end unto itself. We talk about our editors, we talk about our language of choice and we talk about our environments. I do it, you do it, we all do it. There is no shame in enjoying the craft of the work you do. The trick is to stay focused. Code is awesome, but its also the enemy, it takes time to write, it can be fragile, it can be unclear and not particularly robust.

This is why I stick with the mantra “Write less code”. Whenever I feel like something is getting bigger than it should be or more complicated than it should be, I say “Write less code”. Whenever I write so much code that it gets hard to keep it in context, I refactor, I clean it up, all the while, thinking about “Write less code”.

As much as it pains me to say, sometimes there is no way to get around writing a bunch of code, but if you can’t be concise, be clear. Writing less code is writing clean code. Writing less code is also about writing clear code. When you are economical with the code you write the purpose of your code becomes clear.

So, whats the lesson here? Most importantly I think the lesson here is that code is a by-product, its an unavoidable thing that you generate in the process of doing your job. So think more, refactor more, remove some old code and write less new code, do yourself a favor and start this today.

From: http://mikegrouchy.com/blog/2012/06/write-less-code.html