Skip to content

Latest commit

 

History

History
108 lines (56 loc) · 5.69 KB

DOC.md

File metadata and controls

108 lines (56 loc) · 5.69 KB

Resumo / História:

O Continuum é um framework PHP baseado em diversos frameworks já existentes no mercado para desenvolvimento de aplicações web que seguem o padrão MVC

Quando comecei a desenvolver este projeto, não tinha como ideia construir algo tão completo e complexo, e sim somente um sistema que me auxiliasse a formar URLs amigáveis para serem interpretadas facilmente por um sistema de rotas. Como vi que era possível aprimorar o projeto e deixa-lo com mais funcionalidades, dediquei-me a produzir algo que pudesse ser utilizado no lugar de frameworks já existentes no mercado

Este projeto me fez aprender e desenvolver vários conhecimentos mais complexos na linguagem PHP, como: namespaces, carregamento automático (Autoload), passagem por valor e por referência, operador de propagação, funções anônimas, tipos de dados, compositor (Composer), reflexão (Reflection), verbos HTTP, script de linha de comando (CLI), variáveis de ambiente (ENV), autenticação e autorização, CORS, CSRF, JSON, JWT, REST, padrões de design e de projeto, código limpo e escrita de documentação através do Markdown

Durante o desenvolvimento do projeto levei como base o Laravel, Codeigniter e ASP .NET Core

Na estruturação do framework, segui o modelo existente no Laravel onde todo sistema (aplicação) é construído dentro da pasta app. Observei também a estrutura do framework Codeigniter, buscando encontrar um modelo que me permitisse desenvolver um projeto enxuto, leve, simples e completo

No mapeamento automático dos métodos existentes no Controller utilizei como base o modo de funcionamento do ASP .NET Core


Características / Funcionalidades:

Segue o padrão de estrutura MVCSS (Modelo, Visão, Controlador, Esquema e Serviço);

Contém um sistema de rotas com URL amigável;

Permite trabalhar com REST através de vários métodos HTTP, como: GET, POST, PUT, DELETE, PATCH e OPTIONS;

Aceita requisições através de CORS (Compartilhamento de recursos com origens diferentes), podendo conter JSON, FormData e x-www-form-urlencoded no corpo da requisição;

Tem um gerador automático de rotas do controlador assinadas por: private $generateRoutes

Contém a funcionalidade de geração e validação de Token CSRF para requisições HTTP;

Possui uma classe para emissão e validação de JWT (JSON Web Token) de forma nativa;

Gera tabelas no banco de dados a partir de um esquema e mapeia-o através de um modelo;

Os bancos de dados suportados pelo Eloquent ORM são: MySQL, MariaDB, PostgreSQL, SQLite e SQL Server

Atenção: Este Framework foi construído para ser utilizado em servidor Apache, porém funciona em Nginx e IIS.

O framework usa a reescrita (ReWrite) do Apache Server através do HTACCESS,
em servidores IIS e Nginx o framework pode não funcionar corretamente.

Informações sobre as configurações que devem existir para que o projeto funcione corretamente


Dentro da pasta do projeto Continuum existe um arquivo chamado adm, com ele é possível executar comandos que realizam algumas ações

Permite a geração de Controladores, Visões, Serviços, Modelos e outras coisas


O arquivo em lib/helpers.php contém a implementação de ajudantes (funções) globais, que podem ser utilizadas em qualquer lugar do framework


Exemplos abaixo de como usar a estrutura MVCSS

Definindo arquivos públicos

Dentro da pasta public é o local onde você deve armazenar os arquivos públicos, como CSS, JS e IMG

Definindo arquivos particulares

Dentro da pasta privada app é onde os arquivos que compõem o aplicativo devem ser armazenados, como Rotas, Modelo, Visões, Controladores, Esquemas e Serviços

Dentro da pasta privada storage é onde os arquivos anexos (uploads) devem ser armazenados

Permite fazer a modelagem e acesso ao banco de dados

Para usar o Eloquent ORM, é necessário instalar suas dependências. Abaixo estão os comandos de instalação e desinstalação:

composer db-require, composer db-remove

É utilizado para fazer a lógica da regra de negócios da aplicação, como validações de dados submetidos ao controlador

Contém a implementação dos métodos do controlador, podendo ter geração de rotas automáticas

Possibilita a criação de rotas de maneira manual, que direcionam a um método no controlador, visão ou possui um escopo de função (callback) próprio

É utilizado para criação de telas, podendo ser estáticas ou dinâmicas. Essas telas podem ser usadas como View (Visão) ou Templates (Modelo)

O arquivo .env deve conter as configurações do projeto, como: Acesso ao banco de dados, senha utilizada para assinar tokens JWT, geração de rotas dos métodos existentes nos controladores, dentre outras coisas