Impetus PHP Framework Minimalista para Criação de Web Services REST Utilizando A Linguagem PHP
Impetus PHP Framework Minimalista para Criação de Web Services REST Utilizando A Linguagem PHP
Impetus PHP Framework Minimalista para Criação de Web Services REST Utilizando A Linguagem PHP
Resumo
* Artigo
apresentado à Revista Abakos
1
Programa de Bacharelado em Sistemas de Informação da PUC Minas, Brasil– [email protected]
Impetus.php - Framework minimalista para criação de web services REST utilizando a linguagem PHP
Abstract
With the increasing demand for web development, there is a growing need to create web
applications more efficiently, reliably, and scalably. This has led to the search for tech-
nologies that can accelerate the development process without compromising the quality of
the code. Therefore, the proposal of this article is the development of the "Impetus.php"
framework that will assist in building web services in the PHP language, providing greater
speed in the development process, quality, and software security. Impetus.php will provide
various commands that will be executed via terminal, allowing the architecture of the web
service, authentication methods, and other API methods to be created either fully or par-
tially automated. Additionally, Impetus.php will facilitate the implementation of common
functionalities in web services, such as creating PDF, XLSX, TXT, and other document
formats, sending emails, converting files to base64, error logging, among many other com-
monly used utility features in web service development.
Keywords: Web service. Framework. PHP. REST.
1 INTRODUÇÃO
2 MOTIVAÇÃO
framework no mercado, oferecendo foco total no desenvolvimento ágil de web services com o
padrão REST.
3 OBJETIVO
Este trabalho tem como objetivo o desenvolvimento de um framework que irá agilizar a
construção de web services em PHP com o padrão REST.
a) Agilizar a implementação de autenticação com Json Web Token (JWT) em web services;
e) Disponibilizar dois comandos para serem executados via terminal: MIGRATE e BUILD.
O comando MIGRATE irá estruturar o banco de dados, permitindo que o mesmo seja
criado em segundos. Já o comando BUILD irá mapear uma tabela no banco de dados e a
partir dela, serão criados o model, os controllers e as rotas necessárias para disponibilizar
os métodos básicos para essa tabela, sendo eles, CREATE, READ, UPDATE e DELETE,
também popularmente conhecidos como CRUD;
4 JUSTIFICATIVA
Com a crescente demanda por desenvolvimento web ágil, muitos frameworks surgiram
para facilitar o trabalho dos desenvolvedores. No universo do PHP, há muitas opções de fra-
meworks, como Laravel, Symphony, CakePHP e CodeIgniter. No entanto, essas ferramentas
são bastante complexas e têm uma curva de aprendizado longa, já que oferecem muitos recur-
sos para diversas áreas do desenvolvimento, muitos dos quais podem não ser necessários em
determinados projetos.
Para resolver esse problema, o Impetus.php foi criado para se concentrar em uma área
específica do desenvolvimento: a criação de web services REST. Oferecendo recursos total-
mente voltados para esse objetivo, visando simplificar o processo de desenvolvimento, reduzir
a curva de aprendizado e acelerar a criação de web services com praticidade e excelência.
5 METODOLOGIA
1) Pasta "APP": Essa pasta armazena todos arquivos referentes a lógica e a configuração da
aplicação. A pasta "app"possui uma série de subpastas, onde é possível definir rotas, criar
conexão e estruturar o banco de dados, criar as regras de negócio, lógica da aplicação e
definir os end-points;
2) Pasta "IMPETUS": Pasta responsável por armazenar todos arquivos referentes ao fra-
mework Impetus, tais como arquivos utilitários e lógica de comandos a serem executados
pelo terminal;
3) Pasta "TESTS": Essa pasta armazena todos os testes a serem realizados na aplicação a
ser desenvolvida. A pasta "tests"possui duas subpastas, uma com o intuito de armazenar
testes unitários e a outra testes de integração.
4) Pasta "VENDOR": Essa pasta contém bibliotecas (libraries) de terceiros instaladas atra-
vés do gerenciador de pacotes Composer, ou instaladas manualmente na aplicação.
O primeiro comando, chamado "MIGRATE", permite que o usuário crie o banco de da-
dos automaticamente, criando tabelas, views, e populando as tabelas com os dados pré-definidos
no arquivo ’database.php’, localizado na pasta ’database’. Para executar o comando pasta digitar
’php impetusy migrate –all’ em seu terminal na raiz do projeto.
O segundo comando, chamado "BUILD", é responsável por criar automaticamente mo-
dels, controllers e rotas, para executar o comando basta digitar ’php impetusy build nomeDaTa-
bela –all’. Desta forma, o software irá acessar o banco de dado e mapear a tabela informada no
comando, criando os arquivos necessários para sejam criados cinco método em seu web service
referente a está tabela, os comandos de buscar, listar, criar, atualizar e deletar registros desta
tabela.
6 RESULTADOS
agilizar a construção de web services em PHP com o padrão REST. Segue abaixo as funciona-
lidades que o sistema possui em seu estado atual e as pendências que o projeto possui:
Primeiramente, o framework permite a criação automática da arquitetura do projeto uti-
lizando o comando "create-project"disponibilizado pelo Composer. Utilizando este comando, o
projeto é iniciado na máquina, contendo toda a arquitetura de pastas e arquivos essenciais para
a criação de web services. Também são criados métodos de autenticação de usuários utilizando
Json Web Token (JWT), tornando o desenvolvimento mais ágil.
O Impetus.php também oferece um comando muito importante que pode ser usado via
terminal, o comando ’build’. Utilizando esse comando é possível criar modelos, controladores e
rotas automaticamente a partir de uma tabela previamente criada no banco de dados. O software
realiza o mapeamento da tabela, identificando os tipos de dados de cada coluna, criando todos os
arquivos necessários para disponibilizar um "CRUD"pronto em poucos minutos. O "CRUD"é
um acrônimo que representa as operações básicas de manipulação de dados em um sistema de
gerenciamento de banco de dados ou aplicativo web. O termo CRUD refere-se a Create (Criar),
Read (Ler), Update (Atualizar) e Delete (Excluir), que são as quatro operações principais usadas
para interagir com os dados. Na prática, ao utilizar o comando ’build’ são criados cinco métodos
no web service a partir da tabela informada, o comando de buscar um registro da tabela, listar
registros com paginação, criar, editar e deletar registros.
O sistema de rotas do Impetus.php ainda está precário em vista dos frameworks mais
modernos como o Laravel, Spring e o Express.js, pelo fato de não possuir coleta de variáveis
e a não permitir vincular middlewares diretamente nas rotas, sendo necessário lidar com tais
questões diretamente na camada de controladores, causando certa desorganização do código. O
sistema de rotas existe e está funcional, mas deve e será melhorado.
Para facilitar os testes, o framework vem com a biblioteca PHPUnit instalada e confi-
gurada, possuindo alguns modelos de testes unitários e testes de integração, presentes na pasta
’tests’.
Apesar das funcionalidades já criadas, o framework pode ser melhorado com a criação
de mais funcionalidade utilitárias comumente utilizadas por desenvolvedores. Hoje o software
possui funções de validação de input, geração de tokens, encode/decode de JWT e funções
matemáticas inexistentes no PHP como cálculo de fatorial e verificação de números primos.
No entanto, podem ser criadas diversas outras funcionalidades, como geração de arquivos TXT,
CSV, XSLX e PDF, leitores de arquivos, envio de e-mails, conversores de unidade de medida,
entre outros.
O framework é um software de código aberto e está disponível no GitHub sob licença
MIT, para visualizar os resultados na prática, visite o repositório do projeto:
https://github.com/gustavohvs-dev/impetus.
7 CONCLUSÃO
8 TRABALHOS FUTUROS
Apesar dos resultados positivos do presente trabalho, o framework pode ser melhorado
de diversas formas, seguem sugestões para melhoria do projeto:
2. Integração com diferentes tipos de database, como por exemplo, o MongoDB e o Post-
greSQL;
9 COMENTÁRIOS DE MELHORIA
Título – 1,0 => 1,0 Resumo (sem abstract) – 3,0 => 2,5 Introdução (incluindo objetivo
geral) – 7,0 => 4,0 Revisão (incluindo trabalhos relacionados) - 5,0 => 0 Metodologia – 7,0 =>
5,0 Resultados – 7,0 => 6,0 Conclusões – 4,0 => 4,0 Referências – 3,0 => 1,0 Adequação ao
padrão – 3,0 => 3,0 Comentários: - No resumo, faltou abordar a metodologia. - Na introdução,
faltou a questão-problema, a metodologia e apresentar a estrutura do trabalho. Sugiro não
dividir o texto em tantas seções curtas. - Não apresentou revisão bibliográfica. - A metodologia
está apresentando resultados, também. - As referências só deveriam conter trabalhos citados no
texto.
Referências
ACHOUR, Mehdi et al. Documentação da linguagem PHP. 2023. Disponível em: <https:
//www.php.net/manual/pt_BR/>. Acesso em: 15 de abril 2023.
LAAZIRI, Majida et al. A comparative study of php frameworks performance. The 12th In-
ternational Conference Interdisciplinarity in Engineering, Procedia Manufacturing, p. 8,
2019.
SCHMITZ, Daniel. Criando Sistemas RESTful com PHP e jQuery:: Uma abordagem prática
na criação de eum sistema de vendas. 1. ed. [S.l.]: Novatec Editora Ltda, 2013.
SOUZA, Thiago Silva de et al. Uma abordagem baseada em especificação para testes de web
services restful. ANAIS DO SIMPÓSIO BRASILEIRO DE SISTEMAS DE INFORMA-
ÇÃO (SBSI), SBC OPEN LIB, p. 12, 2012.