PHPackages                             edgvi10/integration-controller - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. edgvi10/integration-controller

ActiveLibrary

edgvi10/integration-controller
==============================

1.0.2(5mo ago)07MITPHPPHP &gt;=7.4

Since Nov 22Pushed 5mo agoCompare

[ Source](https://github.com/edgvi10/PkgIntegrationController)[ Packagist](https://packagist.org/packages/edgvi10/integration-controller)[ RSS](/packages/edgvi10-integration-controller/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (1)DependenciesVersions (2)Used By (0)

Integration Controller
======================

[](#integration-controller)

Uma biblioteca PHP flexível para realizar requisições HTTP e integrar com APIs REST de forma simples e eficiente.

📋 Requisitos
------------

[](#-requisitos)

- PHP &gt;= 7.4
- Extensão cURL habilitada

📦 Instalação
------------

[](#-instalação)

### Via Composer

[](#via-composer)

```
composer require edgvi10/integration-controller
```

### Instalação Manual

[](#instalação-manual)

1. Clone o repositório:

```
git clone https://github.com/edgvi10/PkgIntegrationController.git
```

2. Inclua o autoloader do Composer no seu projeto:

```
require_once 'vendor/autoload.php';
```

🚀 Uso Básico
------------

[](#-uso-básico)

### Inicialização

[](#inicialização)

```
use App\Controllers\Utils\IntegrationController;

// Inicialização simples
$client = new IntegrationController();

// Inicialização com configurações
$client = new IntegrationController([
    'baseURL' => 'https://api.example.com',
    'headers' => ['Accept' => 'application/json'],
    'timeout' => 30,
    'verifySSL' => true,
    'userAgent' => 'MyApp/1.0'
]);
```

📖 Exemplos de Uso
-----------------

[](#-exemplos-de-uso)

### 1. Requisição GET Simples

[](#1-requisição-get-simples)

```
$client = new IntegrationController([
    'baseURL' => 'https://api.example.com'
]);

// Fazer uma requisição GET
if ($client->get('/users', ['page' => 1, 'limit' => 10])) {
    $data = $client->jsonResponse();
    print_r($data);
} else {
    echo "Erro: " . $client->lastError;
}
```

### 2. Requisição POST com Dados JSON

[](#2-requisição-post-com-dados-json)

```
$client = new IntegrationController([
    'baseURL' => 'https://api.example.com',
    'headers' => ['Content-Type: application/json']
]);

$userData = [
    'name' => 'João Silva',
    'email' => 'joao@example.com',
    'age' => 30
];

if ($client->post('/users', $userData)) {
    echo "Usuário criado com sucesso!";
    echo "Status: " . $client->responseStatusCode;
} else {
    echo "Erro: " . $client->lastError;
}
```

### 3. Autenticação Bearer Token

[](#3-autenticação-bearer-token)

```
$client = new IntegrationController([
    'baseURL' => 'https://api.example.com'
]);

$client->setAuthentication('bearer', 'seu_token_aqui');

if ($client->get('/protected-resource')) {
    $data = $client->jsonResponse();
    print_r($data);
}
```

### 4. Autenticação Basic

[](#4-autenticação-basic)

```
$client = new IntegrationController([
    'baseURL' => 'https://api.example.com'
]);

$client->setAuthentication('basic', [
    'username' => 'usuario',
    'password' => 'senha'
]);

$client->get('/secure-endpoint');
```

### 5. Autenticação API Key

[](#5-autenticação-api-key)

```
$client = new IntegrationController([
    'baseURL' => 'https://api.example.com'
]);

$client->setAuthentication('api_key', [
    'header' => 'X-API-Key',
    'key' => 'sua_api_key_aqui'
]);

$client->get('/data');
```

### 6. Requisição PUT

[](#6-requisição-put)

```
$client = new IntegrationController([
    'baseURL' => 'https://api.example.com'
]);

$updateData = [
    'name' => 'João Silva Atualizado',
    'email' => 'joao.novo@example.com'
];

if ($client->put('/users/123', $updateData)) {
    echo "Usuário atualizado com sucesso!";
}
```

### 7. Requisição PATCH

[](#7-requisição-patch)

```
$client = new IntegrationController([
    'baseURL' => 'https://api.example.com'
]);

$partialUpdate = [
    'status' => 'active'
];

$client->patch('/users/123', $partialUpdate);
```

### 8. Requisição DELETE

[](#8-requisição-delete)

```
$client = new IntegrationController([
    'baseURL' => 'https://api.example.com'
]);

if ($client->delete('/users/123')) {
    echo "Usuário excluído com sucesso!";
}
```

### 9. Configuração Avançada de Requisição

[](#9-configuração-avançada-de-requisição)

```
$client = new IntegrationController([
    'baseURL' => 'https://api.example.com'
]);

$client->setMethod('POST')
       ->setEndpoint('/users')
       ->setHeaders(['Content-Type: application/json'])
       ->setData(['name' => 'Maria', 'email' => 'maria@example.com'])
       ->send();

if ($client->responseStatusCode === 201) {
    echo "Recurso criado!";
}
```

### 10. Adicionando Campos Dinamicamente

[](#10-adicionando-campos-dinamicamente)

```
$client = new IntegrationController([
    'baseURL' => 'https://api.example.com'
]);

$client->setMethod('POST')
       ->setEndpoint('/products')
       ->useJson(false)
       ->addHeader('Content-Type', 'multipart/form-data')
       ->addField('name', 'Produto A')
       ->addField('price', 99.90)
       ->addField('category', 'Eletrônicos')
       ->addFile('image', fopen('/path/to/image.jpg', 'r'))
       ->addFile('image2', fopen('/path/to/image2.jpg', 'r'))
       ->send();
```

### 11. Requisição com Retry (Tentativas Automáticas)

[](#11-requisição-com-retry-tentativas-automáticas)

```
$client = new IntegrationController([
    'baseURL' => 'https://api.example.com'
]);

$client->setMethod('GET')
       ->setEndpoint('/unstable-endpoint');

// Tenta até 5 vezes com 2 segundos de intervalo
if ($client->sendWithRetry(5, 2)) {
    echo "Requisição bem-sucedida após tentativas!";
} else {
    echo "Falhou após todas as tentativas";
}
```

### 12. Requisição Assíncrona

[](#12-requisição-assíncrona)

```
$client = new IntegrationController([
    'baseURL' => 'https://api.example.com'
]);

$client->setMethod('GET')
       ->setEndpoint('/data');

$client->sendAsync(
    function($body, $statusCode, $headers) {
        echo "Sucesso! Status: $statusCode";
        print_r(json_decode($body, true));
    },
    function($error) {
        echo "Erro: $error";
    }
);
```

### 13. Logging Habilitado

[](#13-logging-habilitado)

```
$client = new IntegrationController([
    'baseURL' => 'https://api.example.com'
]);

$client->enableLogging = true;

$client->get('/users');

// Visualizar logs
foreach ($client->logs as $log) {
    echo "[{$log['timestamp']}] {$log['message']}\n";
    print_r($log['data']);
}

// Limpar logs
$client->clearLogs();
```

### 14. Trabalhando com Respostas

[](#14-trabalhando-com-respostas)

```
$client = new IntegrationController([
    'baseURL' => 'https://api.example.com'
]);

if ($client->get('/users/123')) {
    // Status code
    echo "Status: " . $client->responseStatusCode . "\n";

    // Body bruto
    echo "Body: " . $client->responseBody . "\n";

    // JSON decodificado
    $data = $client->jsonResponse();
    print_r($data);

    // Headers
    print_r($client->responseHeaders);

    // Endpoint usado
    echo "Endpoint: " . $client->responseEndpoint;
}
```

### 15. Múltiplas Requisições com Mesma Instância

[](#15-múltiplas-requisições-com-mesma-instância)

```
$client = new IntegrationController([
    'baseURL' => 'https://api.example.com'
]);

// Primeira requisição
$client->get('/users');
$users = $client->jsonResponse();

// Limpar estado antes da próxima requisição
$client->clear();

// Segunda requisição
$client->get('/products');
$products = $client->jsonResponse();
```

### 16. Configurando SSL e Timeout

[](#16-configurando-ssl-e-timeout)

```
$client = new IntegrationController([
    'baseURL' => 'https://api.example.com',
    'timeout' => 60,        // 60 segundos
    'verifySSL' => false,   // Desabilitar verificação SSL (não recomendado em produção)
    'userAgent' => 'MyBot/2.0'
]);

$client->get('/slow-endpoint');
```

### 17. Enviando Array de Valores em Parâmetros

[](#17-enviando-array-de-valores-em-parâmetros)

```
$client = new IntegrationController([
    'baseURL' => 'https://api.example.com'
]);

// Arrays são automaticamente convertidos em strings separadas por vírgula
$client->get('/search', [
    'categories' => ['tech', 'science', 'sports'],
    'status' => ['active', 'pending']
]);
// Resultado: ?categories=tech,science,sports&status=active,pending
```

### 18. Usando os atalhos para Verbos HTTP

[](#18-usando-os-atalhos-para-verbos-http)

```
$client = new IntegrationController([
    'baseURL' => 'https://api.example.com',
]);

$client->setAuthentication('bearer', 'seu_token_aqui');
$client->setUseJson(true);

// Criando um item com POST enviando dados e parâmetros adicionais
$create = $client->post('/items', ['name' => 'Item 1'], ['verbose' => true]);
$createdItem = $client->jsonResponse();

$list = $client->get('/items', ['page' => 1, 'limit' => 20]);
$items = $client->jsonResponse();

$update = $client->put('/items/1', ['name' => 'Item 1 Updated'], ['notify' => 'yes']);
$updatedItem = $client->jsonResponse();

$partialUpdate = $client->patch('/items/1', ['status' => 'active']);
$patchedItem = $client->jsonResponse();

$delete = $client->delete('/items/1', ['hard_delete' => 'true']);
$deleteSuccess = $client->responseStatusCode === 204;
```

🔧 Métodos Disponíveis
---------------------

[](#-métodos-disponíveis)

### Métodos de Configuração

[](#métodos-de-configuração)

- `setBaseURL($url)` - Define a URL base
- `setUseJson($bool)` - Define se usa JSON automaticamente
- `setAuthentication($type, $auth)` - Configura autenticação
- `setMethod($method)` - Define o método HTTP
- `setEndpoint($endpoint)` - Define o endpoint
- `setHeaders($values)` - Define headers personalizados
- `addHeader($key, $value)` - Adiciona um header personalizado
- `rmHeader($key, $conditionalValue = null)` - Remove um header personalizado, opcionalmente filtrando pelo valor
- `setParams($params)` - Define parâmetros de query string
- `setData($data)` - Define dados do body
- `addField($key, $value)` - Adiciona um campo ao body
- `addFile($key, $fileResource)` - Adiciona um arquivo ao body

### Métodos de Requisição

[](#métodos-de-requisição)

- `send()` - Envia a requisição configurada
- `sendAsync($callbackSuccess, $callbackError)` - Envia requisição assíncrona
- `sendWithRetry($maxRetries, $delaySeconds)` - Envia com tentativas automáticas
- `get($endpoint, $params)` - Requisição GET
- `post($endpoint, $data, $params)` - Requisição POST
- `put($endpoint, $data, $params)` - Requisição PUT
- `patch($endpoint, $data, $params)` - Requisição PATCH
- `delete($endpoint, $params)` - Requisição DELETE

### Métodos de Resposta

[](#métodos-de-resposta)

- `jsonResponse()` - Retorna resposta decodificada como JSON
- `responseStatusCode` - Código de status HTTP
- `responseBody` - Body da resposta
- `responseHeaders` - Headers da resposta

### Métodos de Limpeza

[](#métodos-de-limpeza)

- `clear()` - Limpa tudo
- `clearRequest()` - Limpa dados da requisição
- `clearResponse()` - Limpa dados da resposta
- `clearLogs()` - Limpa logs
- `clearLastError()` - Limpa último erro

### Métodos de Log

[](#métodos-de-log)

- `log($message, $data)` - Registra uma mensagem de log

⚙️ Propriedades Configuráveis
-----------------------------

[](#️-propriedades-configuráveis)

PropriedadeTipoPadrãoDescrição`baseURL`stringnullURL base da API`headers`array\[\]Headers padrão`authentication`arraynullConfigurações de autenticação`timeout`int30Timeout em segundos`verifySSL`booltrueVerificar certificado SSL`userAgent`stringnullUser Agent personalizado`useJson`boolfalseUsar JSON automaticamente`debug`boolfalseModo debug`enableLogging`boolfalseHabilitar logging`logs`array\[\]Array de logs🔐 Tipos de Autenticação Suportados
----------------------------------

[](#-tipos-de-autenticação-suportados)

1. **Bearer Token**: Para APIs que usam tokens JWT ou OAuth
2. **Basic Auth**: Para autenticação básica HTTP
3. **API Key**: Para APIs que usam chaves em headers personalizados

🐛 Tratamento de Erros
---------------------

[](#-tratamento-de-erros)

```
$client = new IntegrationController([
    'baseURL' => 'https://api.example.com'
]);

if (!$client->get('/endpoint')) {
    // Capturar erro
    echo "Erro: " . $client->lastError;
    echo "Status Code: " . $client->responseStatusCode;
}
```

✅ Pendencias
------------

[](#-pendencias)

- Implementar lógica de retry com backoff exponencial
- Adicionar suporte para autenticação OAuth2
- Adicionar suporte para opções personalizadas do cURL
- Tratamento de tipos de conteúdo baseado nos dados da requisição
    - Adicionar suporte básico para content type application/json
    - Adicionar suporte básico para content type application/xml
    - Adicionar suporte básico para requisições multipart/form-data
- Melhorar tratamento de erros e logging
- Adicionar suporte para requisições assíncronas usando curl\_multi ou outras bibliotecas

📝 Licença
---------

[](#-licença)

Este projeto está licenciado sob a Licença MIT - veja o arquivo [LICENSE](LICENSE) para mais detalhes.

👤 Autor
-------

[](#-autor)

**Eduardo Vieira**

- Email:
- GitHub: [@edgvi10](https://github.com/edgvi10)
- LinkedIn: [Eduardo Vieira](https://www.linkedin.com/in/edgvi10/)

🤝 Contribuindo
--------------

[](#-contribuindo)

Contribuições, issues e solicitações de recursos são bem-vindas!

⭐ Suporte
---------

[](#-suporte)

Se este projeto foi útil para você, considere dar uma estrela no GitHub!

###  Health Score

30

—

LowBetter than 64% of packages

Maintenance70

Regular maintenance activity

Popularity4

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity35

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

175d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/c9dac95fe392b475a674362848c4ab4341dd79dd9da059d80c52a3c5ef648796?d=identicon)[edgvi10](/maintainers/edgvi10)

---

Top Contributors

[![edgvi10](https://avatars.githubusercontent.com/u/47860806?v=4)](https://github.com/edgvi10 "edgvi10 (3 commits)")

### Embed Badge

![Health badge](/badges/edgvi10-integration-controller/health.svg)

```
[![Health](https://phpackages.com/badges/edgvi10-integration-controller/health.svg)](https://phpackages.com/packages/edgvi10-integration-controller)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
