PHPackages                             srvclick/scurlv2 - 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. srvclick/scurlv2

ActiveLibrary

srvclick/scurlv2
================

Easy Curl PHP v2

1.1(5mo ago)1131MITPHPPHP &gt;=8.1

Since Dec 9Pushed 5mo agoCompare

[ Source](https://github.com/SrvClick/ScurlV2)[ Packagist](https://packagist.org/packages/srvclick/scurlv2)[ RSS](/packages/srvclick-scurlv2/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (2)Dependencies (2)Versions (2)Used By (1)

🚀 SrvClick Scurl v2
===================

[](#-srvclick-scurl-v2)

**Scurl** es una librería moderna de PHP basada en cURL, orientada a objetos, fluida, fácil de extender y altamente reutilizable. Ideal para APIs, scraping y automatizaciones, con soporte completo para cookies, headers personalizados, archivos y más.

Su diseño permite reutilizar una sola instancia de Scurl para manejar múltiples solicitudes HTTP consecutivas, conservando configuraciones globales como headers, cookies, timeouts o el User-Agent.

Esto te permite escribir código más limpio y eficiente:

---

📦 Instalación
-------------

[](#-instalación)

```
composer require srvclick/scurlv2
```

Inclúyelo en tu proyecto vía autoload (PSR-4) o crea un paquete personalizado.

---

🧪 Ejemplo de uso
----------------

[](#-ejemplo-de-uso)

```
use SrvClick\Scurlv2\Scurl;

$curl = new Scurl();

$curl->cookie() //Almacena y envia las cookies.
     ->headers([
         'User-Agent: SrvClick Scurl/2.0',
         'Accept: application/json',
         'X-Api-Key: 1234567890abcdef',
     ]) //Headers personalizados
     ->timeout(10); //Timeout de 10 segundos;

$response = $curl->url('https://example.com')
                 ->get() // También disponible con el metodo method("GET")
                 ->send();

if($response->isOk()) {
    // Procesar respuesta exitosa
    print_r( $response->json() ); // Si la respuesta es JSON, lo convierte a array

    echo $response->body(); // Texto plano de la respuesta
} else {
    // Manejar error
    echo "Error: " . $response->statuscode();
}
```

### 🌐 Multiples peticiones

[](#-multiples-peticiones)

```
$curl = new Scurl();
$curl->config(['exceptions' => true])
     ->cookie()
     ->headers([
         'User-Agent: SrvClick Scurl/2.0',
         'Accept: application/json',
         'X-Api-Key: 1234567890abcdef',
     ])
     ->timeout(10);

// Primera solicitud (GET)
$response = $curl->url('https://example.com/url1')->get()->send();

if(! $response->isOk()) {
   die("Error en la primera solicitud: " . $response->statuscode());
}
// Segunda solicitud (PUT)
$response = $curl->url('https://example.com/url2')
                ->put()
                ->body('{"name":"SrvClick Scurl","version":"2.0"}')
                ->acceptStatus(400) // Si retorna 400 no lanzará excepción
                ->send();
if(! $response->isOk()) {
   die("Error en la segunda solicitud: " . $response->statuscode());
}
// Tercera solicitud (POST con archivo)
$response = $curl->url('https://example.com/url3')
                ->upload('/ruta/archivo.txt')
                ->body([
                    'nombre' => 'Test',
                    'archivo' => $curl->getUploadFile()
                ])
                ->post()
                ->send();
if(! $response->isOk()) {
   die("Error en la tercera solicitud: " . $response->statuscode());
}

echo "Archivos subidos y respuestas procesadas correctamente.";
```

---

🧩 Características principales
-----------------------------

[](#-características-principales)

### 🌐 Métodos HTTP

[](#-métodos-http)

```
$curl->get();      // Método GET
$curl->post();     // Método POST
$curl->put();      // Método PUT
$curl->delete();   // Método DELETE
$curl->patch();    // PATCH
$curl->head();     // HEAD
$curl->options_method(); // OPTIONS

o bien

$curl->method('GET');
$curl->method('POST');
...
```

---

### 🔧 Configuración

[](#-configuración)

```
$curl->config(
    [
        'exceptions' => true, // Lanza excepción si el status no es 2xx
        'auto_json' => true, // Añade automáticamente el header 'Content-Type: application/json' si se envía un JSON, es true por defecto.
    ]
);
$curl->timeout(10);                    // Timeout de la solicitud
$curl->acceptStatus(400);             // Acepta 400 como respuesta válida y no se lanzará excepción
```

---

### 📤 Headers, parámetros y JSON

[](#-headers-parámetros-y-json)

```
$curl->headers([
    'Content-Type: application/json',
    'Authorization: Bearer TOKEN'
]);

$curl->body(['key' => 'value']); // array , string o JSON
$curl->json();                   // Activa encabezado JSON automáticamente
```

---

### 🍪 Cookies persistentes

[](#-cookies-persistentes)

```
$curl->cookie(); // Habilita y reutiliza cookies automáticamente
```

---

### 📎 Subida de archivos

[](#-subida-de-archivos)

```
$curl->upload('/ruta/archivo.txt')
     ->body([
         'nombre' => 'Archivo de prueba',
         'archivo' => $curl->getUploadFile()
     ])
     ->post()
     ->send();
```

---

📥 Manejo de respuesta
---------------------

[](#-manejo-de-respuesta)

```
$response = $curl->send();

$response->statuscode();    // Código HTTP
$response->body();          // Texto plano
$response->json();          // Array si es JSON
$response->isOk();          // true si status es 2xx
```

---

🧠 Clases principales
--------------------

[](#-clases-principales)

ClaseDescripción`Scurl`Clase principal. Encadena métodos y ejecuta solicitudes.`Request`Administra headers, método, cuerpo, timeout, cookies y configuración general.`Response`Provee acceso a cuerpo, status code, headers, validación y parseo de JSON.---

⚠️ Errores y excepciones
------------------------

[](#️-errores-y-excepciones)

Si activas:

```
$curl->config(['exceptions' => true]);
```

Entonces cualquier código fuera de 2xx (o el grupo aceptado con `acceptStatus`) lanzará una `Exception` automática.

---

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

[](#-requisitos)

- PHP 8.0 o superior
- Extensión `curl` habilitada

---

📄 Licencia
----------

[](#-licencia)

Este proyecto está licenciado bajo la licencia **MIT**.

###  Health Score

35

—

LowBetter than 79% of packages

Maintenance72

Regular maintenance activity

Popularity8

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity43

Maturing project, gaining track record

 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

158d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/83abdba3404e1ac1d6d9def8bf81511f02892eee6d7250280de42cd1b98ef6cb?d=identicon)[SrvClick](/maintainers/SrvClick)

---

Top Contributors

[![SrvClick](https://avatars.githubusercontent.com/u/91323399?v=4)](https://github.com/SrvClick "SrvClick (14 commits)")

### Embed Badge

![Health badge](/badges/srvclick-scurlv2/health.svg)

```
[![Health](https://phpackages.com/badges/srvclick-scurlv2/health.svg)](https://phpackages.com/packages/srvclick-scurlv2)
```

###  Alternatives

[laravel/framework

The Laravel Framework.

34.6k509.9M17.0k](/packages/laravel-framework)[laravel/horizon

Dashboard and code-driven configuration for Laravel queues.

4.2k84.2M225](/packages/laravel-horizon)[sylius/sylius

E-Commerce platform for PHP, based on Symfony framework.

8.4k5.6M651](/packages/sylius-sylius)[stancl/tenancy

Automatic multi-tenancy for your Laravel application.

4.3k6.6M40](/packages/stancl-tenancy)[knuckleswtf/scribe

Generate API documentation for humans from your Laravel codebase.✍

2.3k12.2M45](/packages/knuckleswtf-scribe)[google/cloud

Google Cloud Client Library

1.2k16.2M53](/packages/google-cloud)

PHPackages © 2026

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