LINUX.ORG.RU

Альтернатива PHP+Curl


1

1

Существует ли альтернатива PHP+Curl? PHP+Curl не устраивает ужасным интерфейсом, в частности сложностями при работе с cookies. Хотелось бы OOP интерфейс в котором можно было бы устанавливать/получать cookie через вызов метода а не с костылями типа создания временного файла (что к тому же не безопасно) и его парсинга / парсинга HTTP headers. Хотелось бы чего с API типа:


require_once "Http.php";

$o = new Http();
$o->post("http://domain.com/login", array('Username' => 'testuser', 'Password' => 'testpass'));
dbSave(serialize($o->cookies));

..............................

$c = new Http();
$c->cookies = unserialize(dbGetCookies());
$c->get("http://domain.com/messages");

Если не существует готового решения наверное буду писать свою реализацию HTTP клиента на PHP с использованием fsockopen и т.д. Надоело работать с идиотским интерфейсом курла.

ужасным интерфейсом, в частности сложностями при работе с cookies.

curl_setopt($ch, CURLOPT_COOKIEFILE, "cookies.txt");
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookies.txt");

Надоело работать с идиотским интерфейсом курла

У пользователей нет документации. А если бы и была, они её не стали читать.

i-rinat ★★★★★
()

python requests

anonymous
()

Существует ли альтернатива PHP+Curl? PHP+Curl не устраивает ужасным интерфейсом, в частности сложностями при работе с cookies

XXI век на дворе, зачем пользоваться низкоуровневым интерфейсом, когда есть composer? Например:
https://github.com/guzzle/guzzle

Примеры:
PHP - скачиваем страницу сперенаправлениями и куками (комментарий)
PHP - скачиваем страницу сперенаправлениями и куками (комментарий)

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

Сложноват этот guzzle кстати, не просто разобраться. Хотя возможно сказывается небольшой опыт с OOP. А вообще вещь хорошая, надо будет ознакомиться. API doc есть где то? Нашёл только туториал у них на сайте.

tux2015
() автор топика
Ответ на: комментарий от tux2015

API doc есть где то?

В теме выше уже дважды была ссылка :) — http://guzzle.readthedocs.org/en/latest/

Сложноват этот guzzle кстати, не просто разобраться. Хотя возможно сказывается небольшой опыт с OOP.

Видимо, второе. Использование его реально много проще, чем прямое дёргание curl.

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

По ссылке User Guide. API doc что то ненашёл что бы каждый метод в алфавитном порядке.

tux2015
() автор топика
Ответ на: комментарий от anonymous

http://docs.python-requests.org/en/latest/user/quickstart/
Cookies
If a response contains some Cookies, you can get quick access to them:

>>> url = 'http://example.com/some/cookie/setting/url'
>>> r = requests.get(url)

>>> r.cookies['example_cookie_name']
'example_cookie_value'
To send your own cookies to the server, you can use the cookies parameter:

>>> url = 'http://httpbin.org/cookies'
>>> cookies = dict(cookies_are='working')

>>> r = requests.get(url, cookies=cookies)
>>> r.text
'{"cookies": {"cookies_are": "working"}}'

menangen ★★★★★
()
Ответ на: комментарий от menangen

Гг. Это прекрасно. Здесь нет никакого ООП. Обычный процедурный интерфейс. Использующий простые структуры. ЧТД.

anonymous
()
Ответ на: комментарий от anonymous

Хотелось бы OOP интерфейс в котором можно было бы устанавливать/получать cookie через вызов метода

Это питон. Хочешь - создай класс и жми точку у класса/экземпляра. Все перечисленные в моем посте питон-конструкции являются объектами, как выглядит «интерфейс» к ним - это лишь ваше виденье. Через точку у них есть методы, которыми я и предлагаю пользоваться вместо быдло-пхп кодятины на CURL :-)

menangen ★★★★★
()
Ответ на: комментарий от menangen

В Python тоже есть интерфейс к курлу и он не особо сильно отличается от php-шного. Использование urllib не всегда приемлемо. Так что для Python тоже не плохо бы использовать прослойку типа guzzle вместо прямой работы с низкоуровневым интерфейсом курла. Кстати что есть наподобие guzzle для python, ruby?

Больше всего нравится OOP в ruby, например краткостью при работе с instance variables, не надо писать self.var или $this->var а просто @var. Это наглядно и удобно.

Что раздражает больше всего в PHP так это все эти костыльные названия функций типа mb_strlen вместо «string».length. В целом PHP язык некрасивый.

tux2015
() автор топика
Ответ на: комментарий от menangen

С тобой все понятно. Продолжай повторять мантру, что селектор члена это ооп.

anonymous
()

Python + requests

Deleted
()
16 января 2015 г.

Вот единственное что нарыл нормального в internet

http://www.phpclasses.org/package/576-PHP-GET-HEAD-POST-methods-with-a-lot-of...

Очень простой объект (всё в одном файле http.inc), не использует cURL (подойдёт любой php хостинг!), вроде работает с cookies.

Единственный момент, в фале http.inc три функции split замени на explode (split с PHP 5.3. не поддерживается).

SafeSoft
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.