PHP Classes

How to Use an Automatic PHP REST API Generator to Implement PHP APIs in Less Time Using FastbackPHP: Automate the creation of PHP REST APIs

Recommend this page to a friend!
  Info   Example   Videos   View files Files   Install with Composer Install with Composer   Download Download   Reputation   Support forum   Blog    
Last Updated Ratings Unique User Downloads Download Rankings
2024-12-29 (1 month ago) RSS 2.0 feedNot enough user ratingsTotal: 33 This week: 4All time: 11,097 This week: 14Up
Version License PHP version Categories
fast_rest_api 1.0MIT/X Consortium ...7Code Generation, Design Patterns, PHP 7
Description 

Author

This package can automate the creation of PHP REST APIs.

It can automatically create classes for controllers, repositories, and models.

The package also allows configuring the routes to handle requests by forwarding to the generated controller class.

In Portuguese:

Framework feito em casa para conectar a um banco de dados existente e gerar rapidamente todas as classes modelo, todas classes repositories, e todas as classes controllers com base nos métodos da repositórios, fornecendo uma API base pronta para uso.

Innovation Award
PHP Programming Innovation award nominee
January 2025
Nominee
Vote
Automating processes allows professionals to do their work faster.

PHP developers often have to create new APIs for their work.

This package provides a framework that can automatically create several types of files necessary to develop a REST API.

This way developers can do their API development work faster.

Manuel Lemos
Picture of Rodrigo Faustino
  Performance   Level  
Name: Rodrigo Faustino <contact>
Classes: 37 packages by
Country: Brazil Brazil
Innovation award
Innovation award
Nominee: 23x

Winner: 3x

Instructions

Using this package you can connect to your database with just a few clicks and generate all the system classes based on your database.

If you have 100 database tables it will take a lot of time to transform them into classes.

You will save a lot of time worrying only about specific business rules, in less than 3 minutes you have a complete REST API system.

Example

<?php
namespace Fast\Back;
use
Fast\Back\Rotas\Router;
use
Fast\Back\Http\HttpHeader;
use
Fast\Back\Rotas\AttributeRouter;
use
Exception;

require_once
'vendor/autoload.php';

set_time_limit(0);
ini_set('memory_limit', '1024M');
ini_set('display_errors', 0);
ini_set('log_errors', 1);
ini_set('error_log', __DIR__ . '/logs/php_errors.log');
error_reporting(E_ALL);
 
if (!
file_exists(__DIR__ . '/logs')) {
  
mkdir(__DIR__ . '/logs', 0755, true);
}

HttpHeader::setDefaultHeaders();

if (
$_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
   
http_response_code(204);
    exit();
}

$roteador = new AttributeRouter();

$metodoHttp = $_SERVER['REQUEST_METHOD'];
$uri = $_SERVER['REQUEST_URI'];

$caminhoControladores = __DIR__ . '/Controllers';
$namespaceBase = 'Fast\\Back\\Controllers';

$classesControladoras = obterClassesControladoras($caminhoControladores, $namespaceBase);

foreach (
$classesControladoras as $classeControladora) {
   
$roteador->passaControlador($classeControladora);
}

$roteador->resolve($metodoHttp, $uri);

/**
 * Função para obter todas as classes de controladores no diretório Controllers
 *
 * @param string $caminhoControladores Caminho para o diretório de controladores
 * @param string $namespaceBase Namespace base dos controladores
 * @return array Lista de nomes completos das classes de controladores
 */
   
function obterClassesControladoras($caminhoControladores, $namespaceBase) {
       
$classesControladoras = [];

       
$iterador = new \RecursiveIteratorIterator(
            new \
RecursiveDirectoryIterator($caminhoControladores)
        );

        foreach (
$iterador as $arquivo) {
            if (
$arquivo->isFile() && $arquivo->getExtension() === 'php') {
               
$caminhoRelativo = substr($arquivo->getPathname(), strlen($caminhoControladores));
               
$caminhoRelativo = ltrim($caminhoRelativo, DIRECTORY_SEPARATOR);
               
$caminhoRelativo = substr($caminhoRelativo, 0, -4);
               
$parteNomeClasse = str_replace(DIRECTORY_SEPARATOR, '\\', $caminhoRelativo);
               
$nomeClasse = $namespaceBase . '\\' . $parteNomeClasse;

            if (!
class_exists($nomeClasse)) {
                require_once
$arquivo->getPathname();
            }
            if (
class_exists($nomeClasse)) {
               
$classesControladoras[] = $nomeClasse;
            }
        }
    }

    return
$classesControladoras;
}


Details

FastBackPHP

FastBackPHP é uma automação simplificada para conectar-se a um banco de dados existente e abstrair todas as tabelas em modelos (models), controladores (controllers) e repositórios (repositories). Inspirado em ferramentas como PHPMaker, Scriptcase, e Laravel Nova, este micro-framework foi projetado para facilitar a criação de APIs REST com suporte a um sistema de rotas integrado.

Objetivo

FastBackPHP foi criado para desenvolvedores que desejam automatizar a construção de APIs REST para aplicações que já possuem um banco de dados estruturado. A ferramenta abstrai a lógica básica e permite que você se concentre em customizar a lógica de negócios ou nos endpoints necessários.

Casos de Uso

  • Automação de APIs REST: Ideal para gerar rapidamente endpoints básicos para CRUD.
  • Prototipagem Rápida: Geração inicial de código para novos projetos baseados em bancos de dados existentes.
  • Integração com Sistemas Legados: Perfeito para integrar APIs a sistemas que já possuem um banco de dados definido.
  • Educação: Excelente para aprendizado e demonstração de como APIs REST funcionam com abstração de camadas (Model, Controller e Repository).

Funcionalidades

  1. Configuração de Banco de Dados - Suporte a bancos MySQL, SQLite, PostgreSQL, SQL Server e MongoDB. - Configuração via terminal para gerar automaticamente os parâmetros no arquivo `Config`.
  2. Geração de Código - Models: Representações das tabelas do banco de dados. - Repositories: Classes para encapsular operações de banco de dados (CRUD). - Controllers: Camada para lidar com rotas e integração entre Models e Repositories.
  3. Sistema de Rotas - Inspirado em frameworks como Laravel e Symfony, suporta anotações para simplificar o roteamento.
  4. Flexibilidade - Não restringe a ordem de uso dos comandos. - Você pode gerar apenas Models ou Repositories separadamente.

Instalação

Pré-requisitos

  • PHP 8.0+
  • Composer instalado
  • Servidor Web (ex.: Apache, Nginx, ou CLI do PHP)

Passos de Instalação

  1. Clone o repositório ou baixe os arquivos:
    git clone https://github.com/faustinopsy/fastbackphp.git
    cd fastbackphp
    
  2. Instale as dependências via Composer:
    composer install
    
  3. Execute o CLI (Terminal/Promp):
    php Fast.php
    
  4. Siga as instruções no terminal: - Opção 1: Configure o banco de dados. Esse passo é obrigatório para outros comandos. - Opção 2: Gere as Models para abstrair tabelas do banco. - Opção 3: Gere os Repositories para operações CRUD. - Opção 4: Gere os Controllers para criar endpoints REST (esse passo deve vir depois dos dois anteriores), pois o controller ler os métodos do repository e gera as rotas para cada método. Opção 5: SObre o servidor interno do CLI.

Como Usar o Terminal

Ao executar php Fast.php, você verá as seguintes opções no terminal:

  1. Configurar Banco de Dados: - Defina as credenciais do banco no arquivo `Config` para conexão e geração de código.
  2. Gerar Models: - Gera classes que representam as tabelas do banco de dados.
  3. Gerar Repositories: - Cria classes para manipulação de dados no banco com métodos CRUD.
  4. Gerar Controllers: - Cria classes que conectam Models e Repositories, prontos para uso como APIs REST.
  5. Subir o servidor embutido: - Servidor do PHP.
  6. Sair: - Finaliza o CLI.

Regras e Recomendações

  • Passo 1: Configuração do banco de dados é obrigatória antes de executar qualquer outro comando. (Pois esse framework é para possiveis migrações, ode já existem um banco de dados com tabelas)
  • Uso flexível: Pode-se gerar apenas Models ou Repositories, conforme necessário.
  • Controllers dependem de Models e Repositories: Não é possível gerar Controllers sem que Models e Repositories existam.

Contribuições

Contribuições são bem-vindas! Caso tenha sugestões ou encontre bugs, abra uma issue ou envie um pull request no repositório oficial.

Se por algum motivo esse pacote é útil, deixe uma doação para eu melhorar isso colocando outra camada que leverá muito temp ode desenvolvimento, mas a outra camada é um frontend para cada controller, com autenticação e autorização.

Licença

FastBackPHP é distribuído sob a licença MIT. Veja o arquivo LICENSE para mais informações.


Videos (1)  
  • API REST ultra rápido (crie um sistema rapidamente)
  Files folder image Files (11)  
File Role Description
Files folder imageCLI (3 files)
Files folder imageDatabase (1 file)
Files folder imageHttp (1 file)
Files folder imageRotas (2 files)
Accessible without login Plain text file composer.json Data Auxiliary data
Plain text file Fast.php Class Class source
Accessible without login Plain text file index.php Example Example script
Accessible without login Plain text file readme.md Doc. Documentation

  Files folder image Files (11)  /  CLI  
File Role Description
  Plain text file crieControllers.php Class Class source
  Plain text file crieModels.php Class Class source
  Plain text file crieRepository.php Class Class source

  Files folder image Files (11)  /  Database  
File Role Description
  Plain text file Database.php Class Class source

  Files folder image Files (11)  /  Http  
File Role Description
  Plain text file HttpHeader.php Class Class source

  Files folder image Files (11)  /  Rotas  
File Role Description
  Plain text file AttributeRouter.php Class Class source
  Plain text file Router.php Class Class source

The PHP Classes site has supported package installation using the Composer tool since 2013, as you may verify by reading this instructions page.
Install with Composer Install with Composer
 Version Control Unique User Downloads Download Rankings  
 100%
Total:33
This week:4
All time:11,097
This week:14Up