Легкий и удобный Http клиент (dHttp)

ARACOOL

Новичок
Добрый день уважаемые.
Хочу поделиться с вами со своей библиотекой для выполнения http запросов dHttp.
Клиент очень легок в использовании и гибко настраивается.
PHP:
include_once('dHttp/dHttp.php');
include_once('dHttp/dResponse.php');

$http = new dHttp\dHttp('http://website.com');

$resp = $http->get();
// Get response code
var_dump($resp->http_code);
// Get response body
var_dump($resp->body);
// Get request errors
var_dump($resp->errors);
PHP:
include_once('dHttp/dHttp.php');
include_once('dHttp/dResponse.php');

$http = new dHttp\dHttp('http://website.com');

$http->add_options(array(CURLOPT_RETURNTRANSFER => false))
    ->set_cookie('/tmp/cookie.txt')
    ->set_user_agent('Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31')
    ->post(array(
        'field1' => 'value1',
        'field2' => 'value2',
    ));
Так же есть возможность выполнять мультизапросы.
PHP:
include_once('dHttp/dHttp.php');
include_once('dHttp/dResponse.php');

$multi = new dHttp\dHttp();
$response_array = $multi->multi(array(
    new dHttp\dHttp('http://website1.com'),

    new dHttp\dHttp('http://website2.com', array(
        CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows NT 5.1; rv:5.0.1) Gecko/20100101 Firefox/5.0.1',
        CURLOPT_TIMEOUT => 5,
    ))
));
Установить его можно через composer
Код:
{
    "require": {
        "aracoool/dhttp": "dev-master"
    }
}
 

akd

dive now, work later
Команда форума
я похоже устарел, но чем CURL не удобен? :)
 

hell0w0rd

Продвинутый новичок
ARACOOL, зачем? Есть исключения и есть соглашения.
Зачем в конструкторе это проверять? Добавьте в комозер lib-curl и хватит. Если не установлен curl - и так фатал вывалится.
Еще тесты странные. на 5.3 я бы проверял http://example.com/, на 5.4+ можно поднять встроенный веб-сервер и написать больше тестов
В общем не понимаю зачем эта либа нужна, она ни чуть не удобнее curl.
Я себе в проекте писал обертку - вот там были нужные опции в виде методов, обработка ответа в зависимости от content-type, кодировки, все это можно перезаписать, reset у вас очень странный, фактически после $client->reset() ожидаешь что следующий запрос будет с чистого листа, ан нет, в хендлере-то все опции сохранились.
Жалко когда писал не видел guzzle, только buzz, который на каждый запрос создает хендлдер
 
Последнее редактирование:

ARACOOL

Новичок
ARACOOL, зачем? Есть исключения и есть соглашения.
Зачем в конструкторе это проверять? Добавьте в комозер lib-curl и хватит. Если не установлен curl - и так фатал вывалится.
Еще тесты странные. на 5.3 я бы проверял http://example.com/, на 5.4+ можно поднять встроенный веб-сервер и написать больше тестов
Можно немного узнать о каких исключениях и соглашениях идет речь. Спасибо
 

hell0w0rd

Продвинутый новичок
ARACOOL, соглашение - не использовать die, у вас же есть исключения! Еще соглашения psr, хорошие они или плохие - другой вопрос, большинство привыкло именно к ним, ваш код сложно читать, возожно это просто личное имхо
everyone who use die - must die (c) :D
 

ARACOOL

Новичок
ARACOOL, соглашение - не использовать die, у вас же есть исключения! Еще соглашения psr, хорошие они или плохие - другой вопрос, большинство привыкло именно к ним, ваш код сложно читать, возожно это просто личное имхо
everyone who use die - must die (c) :D
Спасибо за подсказку, поправлю.
 

Absinthe

жожо
Код:
thorow new Exception('Error: Curl is not supported');
Посмотрел на код - японцы при таком позоре обычно самоуничтожаются.
Надеюсь, что автор поймет свою ошибку, удалит пакет и будет учиться. В противном случае рекомендую идти путем японцев.
 
  • Like
Реакции: WMix

ARACOOL

Новичок
Код:
thorow new Exception('Error: Curl is not supported');
Посмотрел на код - японцы при таком позоре обычно самоуничтожаются.
Надеюсь, что автор поймет свою ошибку, удалит пакет и будет учиться. В противном случае рекомендую идти путем японцев.
Да Вам спасибо я поправил
 

Absinthe

жожо
ARACOOL, моя фраза была не о этой строке, а о коде вцелом.
Он просто ужасен, и его не стоит выкладывать и советовать к использованию.

Что касается этой ошибки, то она показывает, что ты код ни разу не читал. Потому что иначе бы заметил, что эта строка выделяется твоим редактором кода как ошибка.
 

ARACOOL

Новичок
Он просто ужасен, и его не стоит выкладывать и советовать к использованию.
А можно по подробней в чем вы видите ужас?

Что касается этой ошибки, то она показывает, что ты код ни разу не читал. Потому что иначе бы заметил, что эта строка выделяется твоим редактором кода как ошибка.
Вся проблема в том что я вносил правки через github, поторопился и не заметил опечатки.
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Вся проблема в том что я вносил правки через github, поторопился и не заметил опечатки.
Вся проблема в том, что между внесением правок и commit'ом должен быть ещё пункт "запустить тесты". Чисто на уровне рефлексов.
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
И кстати, а в чём прикол 666-й убогой обёртки вокруг curl'а, для нормального использования которой всё равно придётся заучивать волшебные слова, начинающиеся с CURLOPT_?
 

AmdY

Пью пиво
Команда форума
Ай, злые вы, у парня просто маркетинговая беда с наименованием и позиционированием, как можно делать префик "d"
Вот пример идеальной библиотеки
PHP:
use iHttp;
$iMulti = new iHttp();
$iResponse_array = $iMulti->iMulti(array(
    new iHttp('http://website1.com'),

    new iHttp('http://website2.com', array(
        I_CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows NT 5.1; rv:5.0.1) Gecko/20100101 Firefox/5.0.1',
        I_CURLOPT_TIMEOUT => 5,
    ))
));
 
Сверху