PHP Classes

Learn how to create a PHP API using the Package PHP CRUD REST API : Implement an example REST API using MVC

Recommend this page to a friend!
  Info   View files Example   View files View files (10)   DownloadInstall with Composer Download .zip   Reputation   Support forum   Blog    
Last Updated Ratings Unique User Downloads Download Rankings
2024-04-19 (11 hours ago) RSS 2.0 feedNot yet rated by the usersTotal: 1 This week: 1All time: 11,311 This week: 69Up
Version License PHP version Categories
crud-rest 1.0MIT/X Consortium ...5PHP 5, Databases, Web services, Desig...
Description 

Author

This package implements an example REST API using MVC.

It provides a controller class that can perform several operations on the records of a user and generates the API responses.

The user records are stored in a database. The package provides a repository class that performs operations to manipulate the user records.

Picture of Rodrigo Faustino
  Performance   Level  
Name: Rodrigo Faustino <contact>
Classes: 16 packages by
Country: Brazil Brazil
Innovation award
Innovation award
Nominee: 12x

Winner: 1x

Example

<?php
require "../../vendor/autoload.php";

use
App\Controller\UsuarioController;
use
App\Http\HttpHeader;
use
App\Repository\UsuarioRepository;

HttpHeader::setDefaultHeaders();

$repository = new UsuarioRepository();
$controller = new UsuarioController($repository);

if (
$_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
    exit(
0);
}
$action = 'default';
if (isset(
$_GET['action'])) {
   
$action = $_GET['action'];
}
$data = json_decode(file_get_contents("php://input"));

switch (
$_SERVER['REQUEST_METHOD']) {
    case
'POST':
        switch (
$action) {
            case
'login':
               
$controller->login($data);
                break;
            default:
               
$controller->create($data);
                break;
        }
        break;
    case
'GET':
       
$id = isset($_GET['id']) ? $_GET['id'] : null;
       
$controller->read($id);
        break;
    case
'PUT':
       
$controller->update($data);
        break;
    case
'DELETE':
       
$id = isset($_GET['id']) ? $_GET['id'] : null;
        if (
$id === null) {
           
HttpHeader::sendNotAllowedMethod();
        }
       
$controller->delete($id);
        break;
    default:
       
HttpHeader::sendNotAllowedMethod();
        break;
}


Details

Modelo Inicial CRUD

Este projeto serve como um modelo inicial para a implementação de um sistema CRUD (Create, Read, Update, Delete) básico, utilizando PHP para fins educacionais. É projetado para ensinar os fundamentos da construção de uma aplicação CRUD seguindo boas práticas de programação e padrões de projeto.

Padrões Utilizados

Padrão de Design

O projeto segue o padrão MVC (Model-View-Controller), que separa a aplicação em três componentes principais para organizar a lógica de negócios, a interface do usuário e a interação do usuário. Isso promove uma separação clara de preocupações, facilitando a manutenção e expansão do código.

  • Model: Representa a estrutura de dados, contendo lógica relacionada ao banco de dados.
  • View: (Não implementado explicitamente neste modelo inicial) Seria responsável pela exibição dos dados ao usuário. na branch separada há um arquivo que irámanipular a rota nos seus respectivos verbos
  • Controller: Contém a lógica de controle, intermediando a comunicação entre o Model e a View.

Padrão de Arquitetura

Utilizamos uma arquitetura baseada em serviços, onde o backend pode ser consumido por diferentes clientes (como uma aplicação web front-end ou mobile) através de uma API RESTful.

Padrão de Comunicação

A comunicação entre o cliente e o servidor é feita através de HTTP, seguindo os princípios REST. Isso permite uma comunicação stateless, utilizando os métodos HTTP (GET, POST, PUT, DELETE) para realizar operações CRUD.

Padrão de Armazenamento e Repository

A persistência de dados é realizada utilizando o SQLite, o que torna este projeto modelo inicial fácil de configurar e executar sem a necessidade de um ambiente de banco de dados complexo. Entretanto, a abstração da camada de banco de dados através do uso do padrão Repository permite a fácil substituição por outros SGBDs (Sistemas Gerenciadores de Banco de Dados), como MySQL, PostgreSQL, entre outros. Isso é alcançado ajustando apenas a configuração de conexão, demonstrando a flexibilidade do projeto em se adaptar a diferentes ambientes de banco de dados.

Configuração do Ambiente de Desenvolvimento

Este projeto utiliza Composer para gerenciar suas dependências. Assim, é necessário ter o Composer instalado no seu sistema para configurar o ambiente de desenvolvimento.

Instalando Dependências

Após clonar o repositório para a sua máquina local, navegue até o diretório do projeto abre o promp de comando e execute o seguinte comando para instalar as dependências necessárias:

composer install

Iniciando o Servidor PHP

Para desenvolvedores que têm o PHP instalado independentemente:

Se você tem o PHP instalado em seu sistema, pode iniciar o servidor embutido do PHP com o seguinte comando:

php -S localhost:8000


Para usuários do XAMPP:

Se preferir usar o XAMPP, coloque o projeto na pasta htdocs do XAMPP e inicie o Apache através do painel de controle do XAMPP. Então, você poderá acessar o projeto via navegador com uma URL baseada no nome da pasta dentro de htdocs.

Uso

Documentação da API

Esta API fornece um conjunto de endpoints para operações CRUD (Create, Read, Update, Delete) para usuários. Abaixo estão os detalhes de como interagir com cada endpoint.

Base URL Supondo que o servidor esteja executando localmente na porta 8000, a URL base será: http://localhost:8000/

Autenticação de Usuários (Login)

URL: /login?action=login Método: POST Dados Requeridos:

{
  "email": "user@example.com",
  "senha": "password123"
}

Descrição: Autentica um usuário com email e senha.

Criar Novo Usuário

URL: / Método: POST Dados Requeridos:

{
  "nome": "Novo Usuario",
  "email": "novo@example.com",
  "senha": "novaSenha123"
}


Descrição: Cria um novo usuário com nome, email e senha.

Ler Informações de Usuário(s)

Para um único usuário: URL: /?id=1 Método: GET Descrição: Obtém as informações de um usuário específico pelo ID.

Para todos os usuários:

URL: / Método: GET Descrição: Lista todos os usuários.

Atualizar Usuário URL: / Método: PUT Dados Requeridos:

{
  "usuario_id": 1,
  "nome": "Usuario Atualizado",
  "email": "atualizado@example.com",
  "senha": "senhaAtualizada123"
}

Descrição: Atualiza as informações de um usuário existente.

Deletar Usuário

URL: /?id=1 Método: DELETE Descrição: Exclui um usuário específico pelo ID.

Testando com Postman

Para testar esses endpoints com o Postman:

Abra o Postman e crie uma nova requisição. 2. Selecione o método apropriado (GET, POST, PUT, DELETE) conforme a operação que deseja testar.

Insira a URL base seguida pelo caminho do endpoint. Por exemplo, para criar um novo usuário, a URL seria http://localhost:8000/ com o método POST. Para os métodos que requerem dados (POST e PUT), vá até a aba "Body", selecione "raw" e escolha "JSON" como formato. Então, insira os dados requeridos no formato JSON. Pressione o botão "Send" para realizar a requisição.

Licença

Especifique a licença sob a qual o projeto é disponibilizado, promovendo o uso e contribuição da comunidade.


  Files folder image Files  
File Role Description
Files folder imageapp (6 directories)
Accessible without login Plain text file composer.json Data Auxiliary data
Accessible without login Plain text file readme.md Doc. Documentation

  Files folder image Files  /  app  
File Role Description
Files folder imageController (1 file)
Files folder imageDatabase (3 files)
Files folder imageHttp (1 file)
Files folder imageModel (1 file)
Files folder imageRepository (1 file)
Files folder imageRouter (1 file)

  Files folder image Files  /  app  /  Controller  
File Role Description
  Plain text file UsuarioController.php Class Class source

  Files folder image Files  /  app  /  Database  
File Role Description
  Accessible without login Plain text file agenda.sqbpro Data Auxiliary data
  Accessible without login Plain text file config.php Aux. Auxiliary script
  Plain text file Database.php Class Class source

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

  Files folder image Files  /  app  /  Model  
File Role Description
  Plain text file Usuario.php Class Class source

  Files folder image Files  /  app  /  Repository  
File Role Description
  Plain text file UsuarioRepository.php Class Class source

  Files folder image Files  /  app  /  Router  
File Role Description
  Accessible without login Plain text file UsuarioRouter.php Example Example script

 Version Control Unique User Downloads Download Rankings  
 100%
Total:1
This week:1
All time:11,311
This week:69Up