# Como usar cURL PHP na transferência de dados

A maior vantagem da biblioteca cURL PHP é sua capacidade de atender a diversos requisitos de transferência de dados e, ao mesmo tempo, possibilitar a **integração completa com APIs**. Conheça a sintaxe e aprenda a fazer uso de cURL PHP com exemplos práticos.

## O que é cURL PHP?

cURL (*Client URL Request Library*) é uma extensão para a linguagem de programação PHP. Ela disponibiliza uma interface que possibilita o envio de solicitações HTTP e comunicações por diversos protocolos de rede (como HTTP, HTTPS e FTP). Por meio do cURL, você pode **adicionar ou alterar cabeçalhos (*headers*), parâmetros e dados**, para cumprir requisitos de APIs.

## Como instalar cURL PHP?

Se você deseja fazer uso do cURL PHP, provavelmente não precisará se preocupar com o processo de instalação, já que essa é uma **extensão incorporada**. Por outro lado, você deverá verificar se a extensão está ativa na sua instalação PHP. Para checar a ativação do cURL, crie um arquivo PHP e, dentro dele, execute o seguinte código:

```php
phpinfo();
```

Na página que lhe será apresentada, busque pela informação ***cURL support** *ou semelhante. Ela mostrará se o cURL está ativo. Caso não esteja, você precisará editar o arquivo* php.ini*. Nele, localize a expressão `;extension=php_curl.dll` se estiver trabalhando com cURL no Windows ou `;extension=curl` se planeja usar o cURL no Linux. Para habilitar um cURL desativado, exclua o ponto e vírgula (`;`) do início da linha — basta fazer isso para que a extensão cURL passe a funcionar. Em seguida, salve o arquivo e reinicie o servidor web para que as alterações possam ser aplicadas.

Dica No [tutorial PHP para iniciantes](https://www.ionos.com/pt-br/digitalguide/sites-de-internet/criar-sites/aprenda-php-nosso-tutorial-abrangente-sobre-php-para-iniciantes/ "Aprender PHP: Tutorial completo para iniciantes") do nosso Digital Guide, você aprende os **princípios básicos da programação em PHP**, fundamentais para a utilização do cURL. Se você quer conhecer as vantagens e desvantagens da linguagem de programação PHP com relação a outras, acesse nossos artigos comparativos PHP vs. Python e PHP vs. JavaScript.

## cURL PHP: Sintaxe e uso

A estrutura de comandos cURL PHP é formada por funções e opções que tem os objetivos de **configurar uma sessão cURL**, executar solicitações e trabalhar os resultados.

### Passo 1: Iniciar uma sessão cURL

```php
$curl = curl_init();
```

### Passo 2: Definir as opções

```php
curl_setopt($curl, CURLOPT_URL, 'https://exemplo.com/api'); // define o URL
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); // define o resultado da solicitação como valor de retorno
```

### Passo 3: Executar a solicitação cURL

```php
$response = curl_exec($curl);
```

### Passo 4: Encerrar a sessão cURL

```php
curl_close($curl);
```

Dica A solução [Deploy Now](https://www.ionos.com/hosting/deploy-now "Deploy Now — IONOS") da IONOS acelera o seu trabalho de desenvolvimento, minimizando períodos de inatividade. Aplique estratégias flexíveis de implantação de projetos on-line com os recursos oferecidos pelo Deploy Now.

## cURL PHP: Funções

Diversas [funções PHP](https://www.ionos.com/pt-br/digitalguide/sites-de-internet/desenvolvimento-web/function-php/ "Funções PHP") permitem **criar solicitações HTTP** ou fazer uploads de arquivos. Ainda, também é possível [recuperar informações de um banco de dados MySQL com PHP](https://www.ionos.com/pt-br/digitalguide/sites-de-internet/desenvolvimento-web/obter-dados-de-um-banco-de-dados-com-php-mysqli-query/ "PHP para recuperar informações de banco de dados MySQL/MariaDB"), e enviá-las, por cURL, em formato JSON.

Estas são algumas das funções mais importantes do cURL PHP:

- **curl\_init**: Inicia uma nova sessão cURL e retorna um identificador cURL.
- **curl\_setopt**: Configura opções para a sessão cURL. Aqui, você deve definir parâmetros como URLs, cabeçalhos ou métodos de autenticação. Com o cURL PHP, também é possível especificar dados POST a serem enviados ao servidor.
- **curl\_exec**: Executa a sessão cURL e retorna a resposta como *string*.
- **curl\_close**: Encerra a sessão cURL e libera os recursos.
- **curl\_setopt\_array**: Define uma série de opções do cURL em um único comando.
- **curl\_getinfo**: Retorna informações sobre a sessão cURL mais recente, como o URL ou o código de status HTTP.
- **curl\_error**: Retorna a mensagem de erro da última solicitação cURL.
- **curl\_errno**: Retorna o código de erro da última solicitação cURL.
- **curl\_multi\_init**: Inicia um cURL *multi-handle*, que permite executar várias solicitações cURL simultaneamente.
- **curl\_multi\_add\_handle**: Adiciona uma sessão cURL a um cURL *multi-handle*.
- **curl\_multi\_exec**: Executa múltiplas solicitações cURL.
- **curl\_multi\_getcontent**: Retorna o conteúdo específico da resposta de uma sessão cURL no cURL *multi-handle*.

## cURL PHP: Exemplo de uso

Ao criar suas próprias [classes PHP](https://www.ionos.com/pt-br/digitalguide/sites-de-internet/desenvolvimento-web/php-class/ "Classes PHP"), você torna o seu código mais modular, além de **definir métodos reutilizáveis** e simplificar a implementação do cURL nas aplicações.

O exemplo abaixo ilustra o uso de uma classe PHP em combinação com uma solicitação GET cURL PHP:

```php
class MyCurlClient {
    private $curl;
    public function __construct() {
        $this->curl = curl_init();
        // Aqui você pode fazer outras configurações
    }
    public function sendRequest($url) {
        curl_setopt($this->curl, CURLOPT_URL, $url);
        curl_setopt($this->curl, CURLOPT_RETURNTRANSFER, true);
        
        $response = curl_exec($this->curl);
        return $response;
    }
    public function close() {
        curl_close($this->curl);
    }
}
// Utilização da própria classe
$myCurl = new MyCurlClient();
$response = $myCurl->sendRequest('https://exemplo.com/api');
echo $response;
$data = json_decode($response, true);
// Exibição de dados com operadores PHP
echo "Post ID: " . $data['id'] . "<br>";
echo "Title: " . $data['title'] . "<br>";
echo "Body: " . $data['body'] . "<br>";
$myCurl->close();
```

Neste cURL PHP de exemplo, criamos a classe `MyCurlClient` para processar uma sessão cURL PHP no construtor. O método `sendRequest()` recebe um URL, configura as opções do cURL e executa a solicitação `HTTP GET`. As *strings* exibidas são sequenciadas com [operadores PHP](https://www.ionos.com/pt-br/digitalguide/sites-de-internet/desenvolvimento-web/operadores-php/). Por fim, a função `close()` encerra a sessão cURL.


This is a markdown version of: [https://www.ionos.com/pt-br/digitalguide/sites-de-internet/desenvolvimento-web/curl-php/](https://www.ionos.com/pt-br/digitalguide/sites-de-internet/desenvolvimento-web/curl-php/) for AI/LLM consumption.