{"id":23627348,"url":"https://github.com/faustinopsy/PHPCrudMVC-v7","last_synced_at":"2025-08-31T03:31:51.741Z","repository":{"id":269241632,"uuid":"906824635","full_name":"faustinopsy/PHPCrudMVC-v7","owner":"faustinopsy","description":"Framework feito em casa para conectar a um banco de dados existente e gerar rapidamente todas as classes modelo, todas classes repositóries, e todas as classes controllers com base nos métodos da repositórios, fornecendo uma API base pronta para uso.","archived":false,"fork":false,"pushed_at":"2025-07-15T21:40:46.000Z","size":41,"stargazers_count":11,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-07-16T20:17:19.883Z","etag":null,"topics":["automatic","fast","mvc-framework","php8","router"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/faustinopsy.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-12-22T02:36:57.000Z","updated_at":"2025-07-15T21:40:49.000Z","dependencies_parsed_at":null,"dependency_job_id":"65f03c32-18af-438e-8460-dee3430eef33","html_url":"https://github.com/faustinopsy/PHPCrudMVC-v7","commit_stats":null,"previous_names":["faustinopsy/fastbackphp","faustinopsy/phpcrudmvc-v7"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/faustinopsy/PHPCrudMVC-v7","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faustinopsy%2FPHPCrudMVC-v7","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faustinopsy%2FPHPCrudMVC-v7/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faustinopsy%2FPHPCrudMVC-v7/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faustinopsy%2FPHPCrudMVC-v7/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/faustinopsy","download_url":"https://codeload.github.com/faustinopsy/PHPCrudMVC-v7/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faustinopsy%2FPHPCrudMVC-v7/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272934244,"owners_count":25017821,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-31T02:00:09.071Z","response_time":79,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automatic","fast","mvc-framework","php8","router"],"created_at":"2024-12-27T23:58:53.252Z","updated_at":"2025-08-31T03:31:51.733Z","avatar_url":"https://github.com/faustinopsy.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# FastBackPHP\n\nFastBackPHP é 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.\n\n## Objetivo\n\nFastBackPHP 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.\n\n## Casos de Uso\n\n- **Automação de APIs REST:** Ideal para gerar rapidamente endpoints básicos para CRUD.\n- **Prototipagem Rápida:** Geração inicial de código para novos projetos baseados em bancos de dados existentes.\n- **Integração com Sistemas Legados:** Perfeito para integrar APIs a sistemas que já possuem um banco de dados definido.\n- **Educação:** Excelente para aprendizado e demonstração de como APIs REST funcionam com abstração de camadas (Model, Controller e Repository).\n\n## Funcionalidades\n\n1. **Configuração de Banco de Dados**\n    - Suporte a bancos MySQL, SQLite, PostgreSQL, SQL Server e MongoDB.\n    - Configuração via terminal para gerar automaticamente os parâmetros no arquivo `Config`.\n\n2. **Geração de Código**\n    - **Models:** Representações das tabelas do banco de dados.\n    - **Repositories:** Classes para encapsular operações de banco de dados (CRUD).\n    - **Controllers:** Camada para lidar com rotas e integração entre Models e Repositories.\n\n3. **Sistema de Rotas**\n    - Inspirado em frameworks como Laravel e Symfony, suporta anotações para simplificar o roteamento.\n\n4. **Flexibilidade**\n    - Não restringe a ordem de uso dos comandos.\n    - Você pode gerar apenas Models ou Repositories separadamente.\n\n---\n\n## Instalação\n\n### Pré-requisitos\n- **PHP 8.0+**\n- **Composer** instalado\n- Servidor Web (ex.: Apache, Nginx, ou CLI do PHP)\n\n### Passos de Instalação\n\n1. Clone o repositório ou baixe os arquivos:\n    ```bash\n    git clone https://github.com/faustinopsy/PHPCrudMVC-v7\n    ```\n\n2. Instale as dependências via Composer:\n    ```bash\n    composer install\n    ```\n\n3. Execute o CLI (Terminal/Promp):\n    ```bash\n    php Fast.php\n    ```\n\n4. Siga as instruções no terminal:\n    - **Opção 1:** Configure o banco de dados. Esse passo é obrigatório para outros comandos.\n    - **Opção 2:** Gere as Models para abstrair tabelas do banco.\n    - **Opção 3:** Gere os Repositories para operações CRUD.\n    - **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.\n     **Opção 5:** SObre o servidor interno do CLI.\n\n\n## Como Usar o Terminal\n\nAo executar `php Fast.php`, você verá as seguintes opções no terminal:\n\n1. **Configurar Banco de Dados:**\n   - Defina as credenciais do banco no arquivo `Config` para conexão e geração de código.\n\n2. **Gerar Models:**\n   - Gera classes que representam as tabelas do banco de dados.\n\n3. **Gerar Repositories:**\n   - Cria classes para manipulação de dados no banco com métodos CRUD.\n\n4. **Gerar Controllers:**\n   - Cria classes que conectam Models e Repositories, prontos para uso como APIs REST.\n\n5. **Subir o servidor embutido:**\n   - Servidor do PHP.\n\n6. **Sair:**\n   - Finaliza o CLI.\n\n---\n\n## Regras e Recomendações\n\n- **Passo 1:** Configuração do banco de dados é obrigatória antes de executar qualquer outro comando.\n(Pois esse framework é para possiveis migrações, ode já existem um banco de dados com tabelas)\n- **Uso flexível:** Pode-se gerar apenas Models ou Repositories, conforme necessário.\n- **Controllers dependem de Models e Repositories:** Não é possível gerar Controllers sem que Models e Repositories existam.\n\n---\n\n## O Sistema de Rotas com Atributos\nO FastBackPHP utiliza Attributes (um recurso do PHP 8+) para um roteamento declarativo e limpo, inspirado em frameworks modernos. Em vez de um arquivo de rotas gigante, cada rota é definida diretamente acima do método do controller que ela executa.\n\n### Como Funciona?\nQuando você gera os controllers, a ferramenta inspeciona os métodos públicos da classe de repositório correspondente e cria um método no controller para cada um, adicionando um atributo #[Router(...)] acima dele.\n\nExemplo de um UsersController.php gerado:\n```\n\u003c?php\n\nnamespace Fast\\Back\\Controllers;\n\nuse Fast\\Back\\Repositories\\UsersRepository;\nuse Fast\\Back\\Rotas\\Router;\n\nclass UsersController \n{\n    private $repository;\n\n    public function __construct() {\n        $this-\u003erepository = new UsersRepository();\n    }\n    \n    // Rota para buscar todos os usuários\n    #[Router('/users', methods: ['GET'])]\n    public function findAll() {\n        // ...\n    }\n\n    // Rota para buscar um usuário específico pelo ID\n    #[Router('/users/{id}', methods: ['GET'])]\n    public function findById($id) {\n        // ...\n    }\n\n    // Rota para criar um novo usuário\n    #[Router('/users', methods: ['POST'])]\n    public function create($data) {\n        // ...\n    }\n}\n```\n#[Router(...)]: É o atributo que define o endpoint.\n\n'/users/{id}': É o caminho (path) da rota. Partes entre chaves, como {id}, são parâmetros dinâmicos que são passados para o método.\n\nmethods: ['GET']: É o verbo HTTP permitido para esta rota.\n\nO framework lê esses atributos automaticamente e direciona as requisições para o método correto.\n\n## Exemplo de Uso: Consumindo a API\nApós gerar o código e iniciar o servidor (php Fast.php \u003e opção 5), você pode usar qualquer cliente HTTP (como Postman, Insomnia, ou o bom e velho curl) para interagir com seus novos endpoints.\n\nListar todos os usuários (GET)\n```bash\ncurl -X GET http://localhost/users\n```\nBuscar o usuário com ID 1 (GET com parâmetro)\n```bash\ncurl -X GET http://localhost/users/1\n```\nCriar um novo usuário (POST com corpo JSON)\n```bash\ncurl -X POST \\\n  http://localhost:8080/users \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"email\": \"novo.usuario@example.com\",\n    \"password_hash\": \"um_hash_de_senha_muito_seguro\"\n  }'\n```\n\n## Contribuições\nContribuições são bem-vindas! Caso tenha sugestões ou encontre bugs, abra uma issue ou envie um pull request no repositório oficial.\n\nSe 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.\n\n## Licença\nFastBackPHP é distribuído sob a licença MIT. Veja o arquivo LICENSE para mais informações.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffaustinopsy%2FPHPCrudMVC-v7","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffaustinopsy%2FPHPCrudMVC-v7","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffaustinopsy%2FPHPCrudMVC-v7/lists"}