Como criar um framework?

Estava revisando alguns conteúdos enquanto estudava PHP, Banco de dados, um tico de Front, e uma das sugestões foi criar o meu próprio framework para aprender e compreender melhor outros frameworks populares como Laravel e outros. Há algum material disponível para isso, ou devo analisar os frameworks existentes para tentar criar o meu?

Como Criar um Framework

Vamos começar esclarecendo duas definições comuns de framework:

Framework Conceitual: Frequentemente encontrado na literatura científica, refere-se a uma metodologia ou conjunto de conceitos que fornecem uma estrutura para abordar e resolver uma classe específica de problemas genéricos. Ele serve como um guia, ajudando os pesquisadores a entender e resolver determinados tipos de problemas.

Framework de Programação: É uma implementação prática de uma metodologia. Em termos simples, é uma estrutura pré-fabricada que os desenvolvedores podem usar para criar aplicativos específicos. Ele fornece um conjunto de ferramentas, bibliotecas e convenções que simplificam a resolução de uma classe de problemas.

Desmistificando os frameworks de programação.

Há um mito em torno do desenvolvimento de frameworks, sugerindo que são ferramentas mágicas acessíveis apenas a uma elite de programadores místicos. No entanto, a realidade é que um framework é apenas um software como qualquer outro. Qualquer desenvolvedor com uma compreensão dos princípios de programação e principalmente um entendimento sofisticado do problema que se pretende resolver pode criar um.

É possivel que sem qualeur formalismo ou rigor você já tenha criado diversos 'frameworks' para resolver uma classe de problemas que enfrentou sem sequer se dar conta.

Passos Básicos

  • Identificar um Problema: Antes de tudo, você precisa de um problema generico para resolver. Pode ser algo que você tenha notado em seus próprios projetos ou uma necessidade comum na comunidade de desenvolvimento.
  1. Definir Requisitos: Defina claramente o que você espera que seu framework faça. Liste as funcionalidades essenciais e as opcionais.

  2. Esboçar um Design: Planeje a arquitetura do seu framework. Como as diferentes partes vão interagir? Quais padrões de design você usará? Qual vai ser a API exposta aos usários?

  3. Prototipagem: Crie uma versão inicial do seu framework. Não se preocupe em torná-lo perfeito; o objetivo é ter algo funcional.

  4. Testar: Use seu framework em diferentes projetos e contextos. Observe onde ele funciona bem e onde pode ser melhorado.

  • Iterar: Com base no feedback e nos testes, faça as alterações necessárias. Repita os passos 1,2,3,4 até sentir que está satisfeito com seu framework.

Acho louvável a ideia de criar um framework como base de estudo. Realmente é um desafio.

Como você falou do PHP, acho que um framework do zero deve ter algumas coisas iniciais:

  1. Ser MVC: Ter a camada de view, de controller, de model
  2. Permitir o uso de template bind: Ou seja, se o controller exporta uma variável "foo", ele pode ser lida na view
  3. Possuir um ORM: Assim fica fácil fazer cruds e operações mais simples no SQL, sem digitar SQL

Eu ja participei ativamente da construção de 2 frameworks onde trabalho, um em 2002 (SIM, 2002!) e outro em 2007. Agora estamos migrando tudo pra spring boot + angular.

recentemente crie um, mas ainda preciso atualizar algumas coisas, tenho algumas ideias, mas para motivar você a... caso queira escrevi no medium, copiar e trazer para cá seria inútil, mas se quiser saber dá um pulo lá. https://faustinopsy.medium.com/geradores-de-c%C3%B3digos-gerador-de-crud-mvc-php-bc668af9ae64