Как сделан cURL?

HatoL

Профессор
Регистрация
5 Фев 2008
Сообщения
206
Реакции
36
Нет, вопрос не в реализации функций :D Заметьте, что cURL не является объектно-ориентированным приложением, следовательно все промежуточные данные в нем не запихнуты в классе. Те же опции (константы CURL_OPT_URL и прочее), ведь это хранится в каких-то переменных.

Дело в том, что это есть то же самое ООП, только без наследования. Неужели используются какие-то глобальные переменные? Как грамотно самому построить такое приложение? Например в случаях, когда я применяю ООП, но без наследования (то есть есть данные и методы для их обработки, плюс промежуточные данные и все).
 
Curl -- это внешняя библиотека (libcurl). Набор функций (Для просмотра ссылки Войди или Зарегистрируйся) в php предоставляет поддержку этой библиотеки в php.
Автору топика стоит немного подробней изучить парадигму "ООП" и понять для чего она требуется.
Сам curl написан на "Си" без применения ООП, который в сях не поддерживается.
 
  • Заблокирован
  • #3
По сути курл лишь упрошает составление запроса хедера, нового он ничего не несёт.
 
Curl -- это внешняя библиотека (libcurl). Набор функций (Для просмотра ссылки Войди или Зарегистрируйся) в php предоставляет поддержку этой библиотеки в php.
Автору топика стоит немного подробней изучить парадигму "ООП" и понять для чего она требуется.
Сам curl написан на "Си" без применения ООП, который в сях не поддерживается.
Да я все понимаю. Я просто интересуюсь, например если я буду делать скрипт с таким же интерфейсом (имею ввиду взаимодействие с программистом), то как следует хранить все промежуточные данные? Просто как глобальные переменные?
 
Да я все понимаю. Я просто интересуюсь, например если я буду делать скрипт с таким же интерфейсом (имею ввиду взаимодействие с программистом), то как следует хранить все промежуточные данные? Просто как глобальные переменные?
Нет, использовать глобальные переменные в функциях -- плохая практика. Если речь идет о функциональном программировании, просто возвращайте нужные данные
 
если я буду делать скрипт с таким же интерфейсом (имею ввиду взаимодействие с программистом), то как следует хранить все промежуточные данные? Просто как глобальные переменные?
Так вы собираетесь писать скрипт на php, т.е. обертку над сокетами для предоставления функционала как у cURL или будете делать отдельный подключаемый бинарный модуль?
 
Сложно понять что хочет автор на самом деле, вот тут подробно обьяснено что такое курл
Для просмотра ссылки Войди или Зарегистрируйся
имхо если хочется сделать что то похожее лучше сначало изучить.
 
все константы храняться в глобальной области видимости ( аналог пхп define( ...) )
первая ф-ция $ch = curl_init(); инициализирует сеанс курла
собстно этот самый $ch и указывает на какой-то участок памяти где и хранятся все необходимые данные ( временные и постоянные )

дальше при вызове курловских ф-ций первым аргументом передаем этот самый $ch

curl_setopt($ch, ...)
curl_exec($ch);
curl_close($ch);

собсно по нему курл и понимает "с какого места продолжить работу"

т.е. курсл-библиотека таким образом не засоряет глобальную область
елинственное что туда попадает это сами ф-ции и константы
ну и потом еще этот самый $ch который програмист уже сам как-бы создает

собсно и все
 
все константы храняться в глобальной области видимости ( аналог пхп define( ...) )
первая ф-ция $ch = curl_init(); инициализирует сеанс курла
собстно этот самый $ch и указывает на какой-то участок памяти где и хранятся все необходимые данные ( временные и постоянные )

дальше при вызове курловских ф-ций первым аргументом передаем этот самый $ch

curl_setopt($ch, ...)
curl_exec($ch);
curl_close($ch);

собсно по нему курл и понимает "с какого места продолжить работу"

т.е. курсл-библиотека таким образом не засоряет глобальную область
елинственное что туда попадает это сами ф-ции и константы
ну и потом еще этот самый $ch который програмист уже сам как-бы создает

собсно и все

Хммм, а вот про $ch я честно говоря забыл.

P. S. а вот можно ли создать тоже тип переменной Resource? Или только создать какую-то левую переменную и всегда передавать ее по ссылке в функции?
 
тип переменной Resource создать явно можно, но почему-то мне кажется что лишь через си-модуль/библиотеку ( хотя точно сказать не могу.. не сталкивался с этим)
но я так предполагаю, что вы будите подобную реализацию делать на чистом пхп, а в таком случае имхо нет никакой разницы какой тип будет у переменной $ch ... - это лишь "хранилище данных"
это например может быть и object и array - наверно как самые "вместительные" (данных много разных можно затолкать в них) типы пхп
 
Назад
Сверху