gCurl - классы для работы с cURL

grigori

( ͡° ͜ʖ ͡°)
Команда форума
gCurl - классы для работы с cURL

Я подготовил (закомментировал, написал примеры) и выложил (на PHPClasses и у себя на сайте) пакет gCurl. Это нескольких классов, которые я использую в относительно сложный приложениях, работающих с HTTP - например, веб-прокси.
Положить тут ссылку, или cURL "вне закона" как "технология двойного назначения"?
 

fixxxer

К.О.
Партнер клуба
в использовании curl с точки зрения удобства есть одна большая проблема - дебильный setopt. если твой класс это исправляет - думаю многим будет интересно.

-~{}~ 08.01.08 05:51:

кстати заглянул в ман - однако появилось [m]curl_setopt_array[/m]
 

Develar

Новичок
>> в использовании curl с точки зрения удобства есть одна большая проблема
удобнее использовать "обертку" над ним - pecl_http, чем напрямую.

>> Положить тут ссылку
на то он и топор
 

Alexandre

PHPПенсионер
кстати заглянул в ман - однако появилось curl_setopt_array
да, ценное дополнение...
Положить тут ссылку, или cURL "вне закона" как "технология двойного назначения"?
думаю, а что выложить нужно.
По этическим причинам не обсуждается "как своровать" то или иное...
а обсуждение "как сделать удобнее, чтоб можно было пользоваться тем-то и тем-то" ни когда не возбранялось.
 

Фанат

oncle terrible
Команда форума
Alexandre
как "сделать удобнее воровство" как раз и не обсуждается.
причем даже скорее не воровство, а спам.
и работа с прокси здесь как раз очень, очень в тему.
мне кажется, что принцип "хочешь сделать из пхп браузер? сделай хоть раз в жизни что-то самостоятельно" вполне оправданный и нейтральный.

grigori
В принципе, полные придурки новости не читают, а остальным отсутствие ссылки не помешает. другое дело - сам смотри, чего оно больше может принести, вреда или пользы.
 

phprus

Moderator
Команда форума
Фaнaт
другое дело - сам смотри, чего оно больше может принести, вреда или пользы.
Топором можно построить дом, но можно и убить человека. Виноват ли топор в том, как будут его применять?
Сам по себе gCurl никакого вреда принести не может. Вред или пользу может принести только использование этого кода в различных целях, а это зависит от других людей, но никак не от gCurl'а.

как "сделать удобнее воровство" как раз и не обсуждается.
Помоему Alexandre сказал то-же самое.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
fixxxer согласен, параметры curl_setopt помнить невозможно, каждый раз пару минут трачу чтобы найти нужный.
Но цель класса не в том, чтобы упростить настройку curl, наверное этим займусь в следующей версии.
Пока что я пришел к набору параметров, которые всегда использую, их в классее выставляю "по умолчанию".

Задачи классов:
- подготовка данных для Cookie, GET и POST перед запросом (удобного аплоада файлов пока не делал)
- выставление обычных параметров curl_setopt, доступ к $ch для особых нужд
- обработка хедеров ответа, в т.ч. разбитых на несколько строк
- выделение значений часто используемых хедеров (Content-type, Content-length, status-code, status-class, last-modified, location, отделение charset от content-type, etc)
- Парсинг cookies ответа, представление параметров каждой cookie в виде массива, представление expires в unixtimestamp
- OOP-style, бросание Exception для корректной обработки, отсутствие глобальных переменных и констант, все в контекстах классов.
- комментарии в стиле Zend Studio с type hints.

Но основная задача - создание понятного интерфейса для хендлеров.
Это очень мощный механизм для обработки данных "на лету" по чанкам, что дает возможность обрабатывать ответы любой длины, но пока я разобрался, как их использовать ...

В этом пакете я создал абстрактный класс, расширяя который можно написать хендлеры для заголовков, cookies и тела ответа. Хендлеры заголовков и cookie вызываются до начала обработки body, т.е. хендлер для body можно назначить в зависимости от значения заголовка.
Например, в зависимости от content-type, я обрабатываю text/*, а для application/* хендлер не назначаю.

Ссылка:
gCurl на PHPClasses
 

Alexandre

PHPПенсионер
Помоему Alexandre сказал то-же самое
именно это я и имел ввиду.

grigori, хороший класс, жаль что он встретился поздно, буквально летом все тоже-самое, только с меньшим функционалом пришлось писать самому (в основном это была обработка кук...).
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
прости :) классу года два - лень было довести до ума, прокомментировать и примеры написать, а без них стыдно выкладывать все-таки
спасибо за высокую оценку!
 

fixxxer

К.О.
Партнер клуба
ну там все небось на зендовские core классы завязано, таскать половину ZF из-за одного класса?
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
phpdev2007
большое спасибо за ссылку, действительно классно zf реализует http-клиента на сокетах

Но среди адаптеров нет cURL.
Скорее всего, пиши я его сейчас, я бы скорее написал адаптер для курла, чем весь свой класс, но 2 года назад ZF просто не было. В результате у всех нас есть выбор - использовать ZF или нет, что само по себе хорошо.

Так что выпендреж насчет тайны немного неуместен.
 

phpdev2007

Новичок
fixxxer
нет нечего не завязано, grigori - вы не любите котов? вы просто не умеете их готовить :)
 

Фанат

oncle terrible
Команда форума
phpdev2007
а можно твою реплику поразвернутее? что не любит grigori, и что он не умеет готовить. Дело в том, что юмора и аллегорию я не понял.
 

WP

^_^
Имхо не стоит устраивать охоту на ведьм. curl это лишь клиент, а цели которые преследуются программистом это его личное дело.
 

AmdY

Пью пиво
Команда форума
phpdev2007, те не прав, нуна тянуть ури и лодер
grigori у меня проблемы со скоростью загрузки твоего сайта, а с phpclasses тянуть не хочется, мот таки ссылочку.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
AmdY, на phpclasses я для всех файлов установил возможность взять без логина,
прямая ссылка http://studio.grik.net/prog/gCurl.tar.bz2
проблемы со скоростью, думаю, связаны не с моим сайтом

а вообще, очень интересно, почему именно не хочется с phpclasses - расскажи? :)

phpdev2007 просто не прочел тему, не смотрел класс и курл ему в принципе не нужен :)
 

AmdY

Пью пиво
Команда форума
когда я последний раз туда с винды лазал, фаервол гразно ругался
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
не знаю, у меня, вроде, все нормально,
а Manuel Lemos (ведущий phpclasses) мне показался хорошим человеком и программистом, я с ним немного переписывался
пошли ему описание - он очень следит за сайтом, как я заметил
 

fStrange

Новичок
п.с.
кстати неплохо бы добавить в класс возможность отправки формы multipart
 
Сверху