Você está na página 1de 10

Impetus.

php - Framework minimalista para criação de web


services REST utilizando a linguagem PHP *
Model - Magazine Abakós - ICEI - PUC Minas

Gustavo Henrique Vieira Soares1

Resumo

Com o aumento da demanda por desenvolvimento web, há uma crescente necessidade de


criar aplicativos web de forma mais eficiente, confiável e escalável. Isso tem levado à busca
por tecnologias que possam acelerar o processo de desenvolvimento sem comprometer a
qualidade do código. Sendo assim, a proposta desse artigo é a elaboração do framework
’Impetus.php’ irá auxiliar na construção de web services na linguagem PHP, proporcio-
nando maior velocidade no processo de desenvolvimento, qualidade e a segurança do soft-
ware. O Impetus.php disponibilizará diversos comandos que serão executados via terminal,
permitindo que a arquitetura do web service, métodos de autenticação e demais métodos
da API sejam criados de forma totalmente ou parcialmente automatizada. Além disso, o
Impetus.php facilitará a implementação de funcionalidades usuais em webservices, como a
criação de documentos PDF, XLSX, TXT e outros formatos, envio de e-mails, conversão
de arquivos para base64, registro de log de erros, entre outras diversas funcionalidades uti-
litárias comumente utilizadas no desenvolvimento de web services.
Palavras-chave: Web service. Framework. PHP. REST.

* Artigo
apresentado à Revista Abakos
1
Programa de Bacharelado em Sistemas de Informação da PUC Minas, Brasil– gustavohvs.dev@gmail.com
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.

Abakos, Belo Horizonte,v. 1, n. 1, p. 00-00, Jul. 2013 - ISSN: 2316-9451 2


Impetus.php - Framework minimalista para criação de web services REST utilizando a linguagem PHP

1 INTRODUÇÃO

A necessidade de criar aplicativos web de forma mais eficiente, confiável e escalável


tem aumentado devido à crescente demanda por desenvolvimento web. Isso tem gerado uma
busca por tecnologias que possam acelerar o processo de desenvolvimento sem comprometer a
qualidade do código. (LAAZIRI et al., 2019)
Uma das alternativas para agilizar o desenvolvimento web é o uso de frameworks. Os
frameworks são conjuntos de ferramentas e bibliotecas que permitem aos desenvolvedores cri-
arem softwares de forma mais rápida e eficiente.
Os softwares podem ser divididos em camadas, sendo algumas delas, a camada de In-
terface do Usuário (UI) ou Frontend, responsável por fornecer a interface com a qual o usuário
interage; a camada de aplicação ou Backend, responsável por lidar com a lógica de negócios e
o processamentos de dados; e a camada de banco de dados, responsável pelo armazenamento e
recuperação dos dados da aplicação.
Como foco deste trabalho, iremos abordar a respeito de duas camadas do desenvolvi-
mento de software, o backend e a camada de dados, através de um tópico muito importante para
o desenvolvimento web, a construção de web services. Web services são sistemas de software
que permitem a comunicação e a troca de informações entre diferentes aplicativos e plataformas
através da internet. Eles são projetados para permitir que diferentes sistemas se comuniquem
de forma independente de linguagem de programação, plataforma de hardware e sistema ope-
racional, dessa forma são amplamente utilizados em várias áreas de aplicações web modernas.
Os web services possuem diversos padrões, sendo os principais o SOAP (Simple Object
Access Protocol) e o REST (Representational State Transfer), e outros menos utilizados como
o XML-RPC (XML Remote Procedure Call), JSON-RPC (JavaScript Object Notation Remote
Procedure Call) e gRPC (Google Remote Procedure Call). Cada padrão possui suas particula-
ridades, vantagens e caso de uso específico. No entanto, para o desenvolvimento deste trabalho
iremos focar no padrão REST, por ser simples e altamente escalável.
Nesse contexto, o trabalho propõe a criação do framework "Impetus.php", que ajudará
os desenvolvedores a acelerar a construção de web services REST em PHP, permitindo a cri-
ação automatizada e padronizada da arquitetura de projeto, models, controllers, middlewares
e demais arquivos necessários, evitando tarefas repetitivas e aumentando a produtividade e a
qualidade do processo de desenvolvimento.

2 MOTIVAÇÃO

Ao desenvolver softwares web de alta qualidade, é importante levar em consideração


vários aspectos, incluindo a arquitetura do projeto, os métodos de autenticação, a segurança da
informação e a criação de models, controllers, middlewares e outros componentes de código.
Com o objetivo de simplificar esse processo, o Impetus.php surge como uma nova proposta de

Abakos, Belo Horizonte,v. 1, n. 1, p. 00-00, Jul. 2013 - ISSN: 2316-9451 3


Impetus.php - Framework minimalista para criação de web services REST utilizando a linguagem PHP

framework no mercado, oferecendo foco total no desenvolvimento ágil de web services com o
padrão REST.

3 OBJETIVO

3.1 Objetivo geral

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.

3.2 Objetivos específicos

a) Criar automaticamente a arquitetura do projeto;

a) Agilizar a implementação de autenticação com Json Web Token (JWT) em web services;

c) Facilitar a construção de rotas, controllers, models e middlewares, utilizando command-


line interface (CLI);

d) Facilitar a criação de testes unitários e testes de integração utilizando PHPUnit;

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;

f) Oferecer uma série de funcionalidades utilitárias comumente utilizadas na construção de


web services, como por exemplo, gerador de arquivos PDF, XLSX, TXT e outros for-
matos utilizados, leitor de CSV, envio de e-mails, conversor de diversos tipos de arquivo
para base64, relatórios de erros, verificadores de formato de dados, mecanismos de defesa
contra ataques de injeção de SQL (SQL injection) e ataques de negação de serviço (DOS
e DDOS), dentre outras funcionalidades.

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

Abakos, Belo Horizonte,v. 1, n. 1, p. 00-00, Jul. 2013 - ISSN: 2316-9451 4


Impetus.php - Framework minimalista para criação de web services REST utilizando a linguagem PHP

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

A metodologia utilizada para a construção do framework é a pesquisa aplicada, na qual


tem como foco principal produzir conhecimentos voltados para a aplicação prática e imediata,
com o intuito de resolver problemas específicos de forma direta e eficiente.
O planejamento para a construção do framework está subdividido em cinco etapas:

1) Criação da arquitetura de pastas do projeto;

2) Desenvolvimento da interface de linha de comando, "Impetusy";

3) Criação dos arquivos essenciais do projeto;

4) Distribuição do framework pelo Composer.

5.1 Arquitetura de pastas

Nessa primeira etapa do projeto, foi definido a arquitetura de pastas do framework, de


forma que os arquivos ficassem organizados, separando cada pasta por funções específicas den-
tro da aplicação, facilitando a leitura e a compreensão da utilidade de cada uma delas.
A príncipio foram criadas quatro pastas, sendo elas:

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.

Abakos, Belo Horizonte,v. 1, n. 1, p. 00-00, Jul. 2013 - ISSN: 2316-9451 5


Impetus.php - Framework minimalista para criação de web services REST utilizando a linguagem PHP

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.

Figura 1 – Arquitetura de pastas

Fonte: Imagem fornecida pelo autor

5.2 Interface de linha de comando, "Impetusy"

Uma interface de linha de comando (Command-Line Interface) é um tipo de interface de


usuário que permite interagir com um programa ou sistema operacional por meio de comandos
de texto inseridos em um prompt de comando.

Figura 2 – Prompt de comando

Fonte: Imagem fornecida pelo autor

Em um framework, a interface de linha de comando pode ajudar o desenvolvedor a rea-


lizar diversas tarefas já automatizadas pelo mesmo. Sendo assim, foi criado a interface "Impe-
tusy", que permite que o usuário do framework Impetus.php utilize duas tarefas automatizadas.

Abakos, Belo Horizonte,v. 1, n. 1, p. 00-00, Jul. 2013 - ISSN: 2316-9451 6


Impetus.php - Framework minimalista para criação de web services REST utilizando a linguagem PHP

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.

5.3 Arquivos essenciais

Além dos arquivos criados para o funcionamento da interface de linha de comando do


Impetus.php, foi necessário criar uma série de outros arquivos essenciais para o funcionamento
do framework. Nesta etapa foram criados modelos de testes unitários e de integração, modelos
de classes, controllers, middlewares e rotas, classes para lidar com validação de dados, auten-
ticação com JWT e diversos outras classes utilitárias para facilitar o desenvolvimento de web
services.

5.4 Distribuição do framework pelo Composer

Para facilitar a instalação do framework foi utilizado o Composer. O Composer é um


gerenciador de pacotes para a linguagem de programação PHP. Ele é amplamente utilizado
na comunidade PHP para gerenciar as dependências de um projeto e facilitar o processo de
instalação e atualização de bibliotecas de terceiros.
O Composer utiliza um repositório de pacotes chamado Packagist, um repositório que
permite a integração com o Github, uma plataforma de hospedagem e colaboração de desenvol-
vimento de software baseada em controle de versão Git. Sendo assim, primeiramente foi criado
um repositório no Github, onde foi hospedado o código-fonte do framework e posteriormente
este repositório foi vinculado com o Packagist, oferencendo a possibilidade de download da
aplicação via Composer.

6 RESULTADOS

Apesar da construção do framework ainda está em desenvolvimento, o projeto atual


contempla grande parte dos objetivos propostos neste artigo, cumprindo o objetivo principal de

Abakos, Belo Horizonte,v. 1, n. 1, p. 00-00, Jul. 2013 - ISSN: 2316-9451 7


Impetus.php - Framework minimalista para criação de web services REST utilizando a linguagem PHP

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.

Abakos, Belo Horizonte,v. 1, n. 1, p. 00-00, Jul. 2013 - ISSN: 2316-9451 8


Impetus.php - Framework minimalista para criação de web services REST utilizando a linguagem PHP

7 CONCLUSÃO

O framework em desenvolvimento ainda precisa de melhorias para se tornar uma solução


completa na criação de web services REST. Embora tenha alcançado parcialmente os objetivos
propostos, existem deficiências a serem supridas. Sendo assim, o desenvolvimento continuará,
com a correção de falhas, a realização de testes, melhoria dos recursos existentes e criação de
novos recursos, até que a qualidade desejada seja alcançada.

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:

1. Desenvolvimento de um sistema de rotas mais robusto, permitindo o vínculo de mid-


dlewares e coleta de variáveis diretamente das rotas;

2. Integração com diferentes tipos de database, como por exemplo, o MongoDB e o Post-
greSQL;

3. Desenvolvimento do front-end da aplicação utilizando tecnologias modernas, para o fra-


mework oferecer uma solução completa no desenvolvimento de aplicações web.

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.

Abakos, Belo Horizonte,v. 1, n. 1, p. 00-00, Jul. 2013 - ISSN: 2316-9451 9


Impetus.php - Framework minimalista para criação de web services REST utilizando a linguagem PHP

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.

ADERMANN, Nils; BOGGIANO, Jordi. Documentação do Composer. 2023. Disponível em:


<https://getcomposer.org/doc/03-cli.md>. Acesso em: 23 de maio 2023.

BOGGIANO, Jordi. Documentação do Packagist. 2023. Disponível em: <https://packagist.


org/>. Acesso em: 23 de maio 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.

Abakos, Belo Horizonte,v. 1, n. 1, p. 00-00, Jul. 2013 - ISSN: 2316-9451 10

Você também pode gostar