Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/lukinhaadev/php-api-starter-template
a simple API template made with PHP 8.3
https://github.com/lukinhaadev/php-api-starter-template
api controller dao model php php8 php83 routing web
Last synced: 2 months ago
JSON representation
a simple API template made with PHP 8.3
- Host: GitHub
- URL: https://github.com/lukinhaadev/php-api-starter-template
- Owner: lukinhaadev
- License: mit
- Created: 2024-04-21T00:15:44.000Z (8 months ago)
- Default Branch: main
- Last Pushed: 2024-08-07T12:43:13.000Z (5 months ago)
- Last Synced: 2024-09-28T20:21:04.610Z (3 months ago)
- Topics: api, controller, dao, model, php, php8, php83, routing, web
- Language: PHP
- Homepage:
- Size: 15.6 KB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README-ptBR.md
- License: LICENSE
Awesome Lists containing this project
README
Docs available in [en-US](README.md)
# Modelo inicial de API PHP 💻
## Pré-requisitos 🛠️
- PHP instalado em sua máquina. 🐘
- Composer instalado em sua máquina. 📦
- Banco de dados MySQL configurado. 🗄️
- Entendimento básico de programação em PHP. 🧠## Instalação de Dependências 🚀
1. Clone o projeto ou baixe o template para o seu diretório local. 📂
2. Navegue até o diretório do projeto e execute o seguinte comando para instalar as dependências:
```bash
composer install
```3. Isso irá instalar todas as dependências listadas no arquivo `composer.json` e garantir que você trabalhe com as versões exatas especificadas em `composer.lock`. 🔒
## Configuração de Variáveis de Ambiente ⚙️
1. Localize o arquivo [.env.example](.env.example) no diretório do projeto. 🗂️
2. Renomeie o arquivo para `.env`:
Prompt de Comando:
```cmd
rename .env.example .env
```
PowerShell:
```powershell
mv .env.example .env
```3. Abra o arquivo `.env` em um editor de texto e configure as variáveis de ambiente conforme necessário: 📝
- **API Configuration:**
- `API_HOST`: O endereço onde a API será executada (por exemplo, `localhost`). 🌐
- `API_PORT`: A porta em que a API será executada (por exemplo, `8000`). 🔌
- `TIMEZONE`: O fuso horário da aplicação (por exemplo, `America/Sao_Paulo`). 🕰️- **Database Configuration:**
- `DB_HOST`: O endereço do servidor de banco de dados. 🏠
- `DB_PORT`: A porta do servidor de banco de dados. 🔌
- `DB_USER`: O nome de usuário para acessar o banco de dados. 👤
- `DB_PASS`: A senha para acessar o banco de dados. 🔑
- `DB_NAME`: O nome do banco de dados. 🏷️4. Salve as alterações no arquivo `.env`. 💾
## Configurando DAO, Model e Controller 🛠️
### DAO (Data Access Object) 🗃️
1. Crie uma classe DAO para cada entidade do banco de dados (por exemplo, `UserDAO` para a tabela `users`). 👥
2. Implemente métodos para operações específicas, como `selectAll()`. 💼
3. Use a conexão com o banco de dados para executar consultas SQL. 💻
#### Aqui está um exemplo de UserDAO:
```php
conn->prepare($sql);// Executa a consulta preparada
$stmt->execute();// Retorna todos os resultados da consulta como objetos de classe (baseado na classe DAO)
return $stmt->fetchAll(DAO::FETCH_CLASS);
}
}
```### Model 🧩
1. Crie uma classe Model para cada entidade do banco de dados (por exemplo, `UserModel`). 👤
2. Defina atributos para representar as colunas da tabela de banco de dados. 📊
3. Implemente métodos para interagir com o DAO, como `getAll()`. 🛠️
#### Aqui está um exemplo de UserModel:
```php
rows = $dao->selectAll();
} catch (Exception $e) {
// Lança uma exceção em caso de erro durante a execução
throw $e;
}
}
}
```### Controller ⚙️
1. Crie uma classe Controller para cada recurso ou conjunto de funcionalidades da sua API (por exemplo, `UserController`). 💡
2. No Controller, crie métodos para responder a solicitações HTTP específicas, como `GET`, `POST`, `PUT`, e `DELETE`. 📝
3. Chame os métodos do Model para processar os dados recebidos das solicitações e envie respostas apropriadas ao cliente. 📨
#### Aqui está um exemplo de UserController:
```php
getAll();
// Envia a resposta em formato JSON contendo os registros obtidos
parent::sendJSONResponse($model->rows);
}
}
```## Registrando as rotas da api ↪️
1. Adicione as rotas necessárias no arquivo [routes.php](App/routes.php):
```php