PHPackages                             mmaurice/qurl - 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. mmaurice/qurl

ActiveLibrary

mmaurice/qurl
=============

Simple QueryURL library (based on cURL)

0.1.1(4y ago)02206MITPHPPHP &gt;=5.6

Since Nov 14Pushed 4y ago1 watchersCompare

[ Source](https://github.com/moss-maurice/qURL)[ Packagist](https://packagist.org/packages/mmaurice/qurl)[ RSS](/packages/mmaurice-qurl/feed)WikiDiscussions main Synced 6d ago

READMEChangelogDependenciesVersions (10)Used By (6)

Simple QueryURL library (based on cURL)
=======================================

[](#simple-queryurl-library-based-on-curl)

[![Language](https://camo.githubusercontent.com/ab325f2956ec170e8a1155be8f232aa83076fb543d9591758057b9d7a4ab1679/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7068702d253545352e362d626c7565)](https://img.shields.io/badge/php-%5E5.6-blue) [![Language](https://camo.githubusercontent.com/5828cf76e4d933aca7ce83ff14b815ecd0187a3bb13bb435fc55d3abf16f7364/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6355524c2d253545372e35392e302d626c7565)](https://img.shields.io/badge/cURL-%5E7.59.0blue)

Класс библиотеки QueryURL представляет собой простой интерфейс для работы с cURL-библиотекой.

#### Установка

[](#установка)

Установка производится через Composer:

```
composer require mmaurice/qurl
```

#### Примеры кода

[](#примеры-кода)

###### Создание объекта

[](#создание-объекта)

Для создания объекта нет нужды передавать какие-либо параметры в конструктор. Тогда будет создан базовый клиент.

```
use \mmaurice\qurl\Client;

$client = new Client;
```

###### Задание параметров cURL

[](#задание-параметров-curl)

При создании клиента можно передавать в конструктор параметры cURL:

```
use \mmaurice\qurl\Client;

$client = new Client([
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_SSL_VERIFYPEER => false,
    CURLOPT_RETURNTRANSFER => true,
]);
```

Так же параметры можно задавать методом `setOption`. В таком случае, первым аргументом будет выступать константа параметра cURL, а вторым аргументом - его значение:

```
$client
    ->setOption(CURLOPT_FOLLOWLOCATION, true)
    ->setOption(CURLOPT_SSL_VERIFYPEER, false)
    ->setOption(CURLOPT_RETURNTRANSFER, true);
```

В случае необходимости задания массива параметров, можно воспользоваться методом `setOptions`, который принимает массив значений, состоящий из констант параметров cURL в качестве ключей, и значений параметров в качестве значений массива:

```
$client->setOptions([
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_SSL_VERIFYPEER => false,
    CURLOPT_RETURNTRANSFER => true,
]);
```

Более подробно о параметрах cURL можно ознакомиться в соответствующем разделе [документации](https://www.php.net/manual/ru/function.curl-setopt.php).

###### Создание объекта запроса

[](#создание-объекта-запроса)

Для начала конфигурирования запроса, необходимо воспользоваться методом `request`, который имеет набор методов для настройки запроса:

```
$request = $client->request(); // Instance of \mmaurice\qurl\Request
```

###### Задание заголовков

[](#задание-заголовков)

Заголовки можно задать при помощи метода `setHeader`. В таком случае, первым аргументом будет выступать имя заголовка, а вторым аргументом - его значение:

```
$request->setHeader('Accept-Encoding', 'gzip, deflate, br');
```

В случае необходимости задания массива заголовков, можно воспользоваться методом `setHeaders`, который принимает массив значений, состоящий из имён заголовков в качестве ключей, и значений заголовков в качестве значений массива:

```
$request->setHeaders([
    'Accept-Language' => 'ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7',
    'Cache-Control' => 'max-age=0',
    'Connection' => 'keep-alive',
]);
```

###### Задание тела запроса

[](#задание-тела-запроса)

Тело запроса можно задать при помощи метода `setBodyFields`. В качестве аргументов, метод принимает ассоциативный массив значений, которые далее будут сформированы в тело запроса. Например:

```
$request->setBodyFields([
    'foo' => 'bar',
    'baz' => 'boo',
]);
```

В случае необходимости дополнить существующий массив параметров, можно воспользоваться методом `setBodyField`. В таком случае, первым аргументом будет выступать ключ параметра, а вторым аргументом - его значение:

```
$request->setBodyField('foo', 'bar');
```

Хочется дополнительно отметить, что эта операция дополнит существующий набор параметров переданными.

Кроме этого, можно указать, как именно необходимо закодировать тело запроса, а именно - **json**, **url-encoded** строка и **массив**:

```
// Закодировать тело запроса в формате JSON
// Будет автоматически установлен заголовок "Content-Type: application/json"
$request->setBodyJson();

// Закодировать тело запроса в формате url-encoded строки
// Будет автоматически установлен заголовок "Content-Type: application/x-www-form-urlencoded"
$request->setBodyUrlEncode();

// Закодировать тело запроса в формате массива
// Будет автоматически установлен заголовок "Content-Type: multipart/form-data"
$request->setBodyMultipartFormData();
```

###### Прочие параметры запроса

[](#прочие-параметры-запроса)

Объект Request поддерживает настройку некоторых ключевых параметров запроса, а именно:

```
// Задать номер порта (CURLOPT_PORT), на который будет отправлен запрос
$request->setPort(80);

// Задать таймаут (CURLOPT_TIMEOUT)
$request->setTimeout(5);

// Задать таймаут соединения (CURLOPT_CONNECTTIMEOUT)
$request->setTimeout(2);

// Задать таймаут соединения (CURLOPT_USERAGENT)
$request->setUserAgent('Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');

// Разрешить следовать редиректам (CURLOPT_FOLLOWLOCATION), а так же ограничить их количество (CURLOPT_MAXREDIRS)
$request->setFollowLocation(true, 5);
```

Прочие параметры cURL можно задачть в настройках клиента.

###### Отправка запроса

[](#отправка-запроса)

Для отправки обыкновенного **GET**-запроса, необходимо воспользоваться методом `get`, первым аргументом которого будет URL, на который отправляется запрос, вторым аргументом можно так же передавать тело запроса в виде массива параметров, а третьим аргументом можно передать массив заголовков. Тело запроса и заголовки можно не передавать, если они уже были переданы отдельными методами, или если запрос не подразумевает их передачу. В качестве результата запроса будет создан объект Response:

```
$response = $request->get($url, $body = [], $headers = []); // Instance of \mmaurice\qurl\Response
```

Запрос будет иметь следующий вид:

```
$response = $request->get('https://api.ipify.org/?format=json');
```

Важно отметить, что `$url` можно задать и в виде массива, первым аргументом которого будет путь, а вторым аргументом - массив **GET-параметров**:

```
$response = $request->get([
    'https://api.ipify.org/',
    [
        'format' => 'json',
    ],
]);
```

Помимо этого, существует возможность отправить запросы методом `post`, `put`, `head`, `delete`, `connect`, `options`, `path`, `trace`, `search`. Пример соответствующих методов выглядят следующим образом:

```
$response = $request->post($url, $body = [], $headers = []);
$response = $request->put($url, $body = [], $headers = []);
$response = $request->head($url, $body = [], $headers = []);
$response = $request->delete($url, $body = [], $headers = []);
$response = $request->connect($url, $body = [], $headers = []);
$response = $request->options($url, $body = [], $headers = []);
$response = $request->path($url, $body = [], $headers = []);
$response = $request->trace($url, $body = [], $headers = []);
$response = $request->search($url, $body = [], $headers = []);
```

Набор аргументов для этих методов идентичен набору аргументов для метода `get` - в качестве первого аргумента передаётся URL запроса, а в качестве второго аргумента - массив полей тела запроса, а третьего аргумента - массив заголовков.

Все выше описанные методы являюся обёртками для основного метода запроса `query`. Можно воспользоваться им напрямую, для создания любого типа запроса. Например:

```
use \mmaurice\qurl\Request;

$response = $request->query(Request::GET, [
    'https://api.ipify.org/',
    [
        'format' => 'json',
    ],
]);
```

В качестве первого аргумента передаётся значение типа запроса. Все типы запросов перечислены в виде констант класса `\mmaurice\qurl\Request`, а именно:

- `\mmaurice\qurl\Request::GET`
- `\mmaurice\qurl\Request::POST`
- `\mmaurice\qurl\Request::PUT`
- `\mmaurice\qurl\Request::HEAD`
- `\mmaurice\qurl\Request::DELETE`
- `\mmaurice\qurl\Request::CONNECT`
- `\mmaurice\qurl\Request::OPTIONS`
- `\mmaurice\qurl\Request::PATH`
- `\mmaurice\qurl\Request::TRACE`
- `\mmaurice\qurl\Request::SEARCH`

###### Получение результата

[](#получение-результата)

Одним из преимуществ данной библиотеки является возможность простым образом получить данные о сформированном запросе и полученном ответе. Можно получить следующие данные:

```
//Запрашиваемый URL
$response->getRequestUrl();

//Заголовки запроса
$response->getRequestHeader();

//Заголовки запроса без предварительной обработки
$response->getRawRequestHeader();

//Тело запроса
$response->getRequestBody();

//Тело запроса без предварительной обработки
$response->getRawRequestBody();

//Заголовки ответа сервера
$response->getResponseHeader();

//Заголовки ответа сервера без предварительной обработки
$response->getRawResponseHeader();

//Тело ответа сервера
$response->getResponseBody();

//Тело ответа сервера без предварительной обработки
$response->getRawResponseBody();

//Ссылка перенаправления сервера (если передал)
$response->getResponseRedirect();

//IP-адрес ответившего сервера
$response->getResponseIp();

//Порт ответившего сервера
$response->getResponsePort();

//Тип контента ответа
$response->getResponseContentType();

//Код ответа сервера
$response->getResponseCode();

//Сообщение сервера
$response->getResponseMessage();

//Полное сообщение сервера
$response->getResponseRawMessage();
```

Более наглядные примеры работы с библиотекой находятся в каталоге `/examples` проекта.

###  Health Score

24

—

LowBetter than 32% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity12

Limited adoption so far

Community14

Small or concentrated contributor base

Maturity44

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

Every ~309 days

Total

2

Last Release

1698d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/123941664?v=4)[kreexus](/maintainers/kreexus)[@kreexus](https://github.com/kreexus)

---

Top Contributors

[![moss-maurice](https://avatars.githubusercontent.com/u/1444521?v=4)](https://github.com/moss-maurice "moss-maurice (8 commits)")

### Embed Badge

![Health badge](/badges/mmaurice-qurl/health.svg)

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

PHPackages © 2026

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