- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Тренды маркетинга в 2024 году: мобильные продажи, углубленная аналитика и ИИ
Экспертная оценка Адмитад
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Есть две функции работы с Курлом. Взяты из боевых скриптов. В обеих идут проверки инициализации. Функции разные, но суть одинаковая - нужно инициировать Курл. Автор у них один. Какой вариант лучше с точки зрения синтаксиса, удобства чтения, поддержки, отлова ошибок и почему?
function my_download($url,$post){
$ret = false;
if( function_exists('curl_init') ){
if( $curl = curl_init() ){
if( !curl_setopt($curl,CURLOPT_URL,$url) ) return $ret;
if( !curl_setopt($curl,CURLOPT_RETURNTRANSFER,true) ) return $ret;
if( !curl_setopt($curl,CURLOPT_CONNECTTIMEOUT,30) ) return $ret;
if( !curl_setopt($curl,CURLOPT_USERAGENT,'yandex-positions (http://www.samborsky.com/yandex-positions/)') ) return $ret;
if( !curl_setopt($curl,CURLOPT_HEADER,false) ) return $ret;
if( !curl_setopt($curl,CURLOPT_POST,true) ) return $ret;
if( !curl_setopt($curl,CURLOPT_POSTFIELDS,$post) ) return $ret;
if( !curl_setopt($curl,CURLOPT_ENCODING,"gzip,deflate") ) return $ret;
$ret = curl_exec($curl);
curl_close($curl);
}
}
}
function get_download($url){
$ret = false;
if( $curl = curl_init() ){
if( curl_setopt($curl,CURLOPT_URL,$url) ){
if( curl_setopt($curl,CURLOPT_RETURNTRANSFER,true) ){
if( curl_setopt($curl,CURLOPT_CONNECTTIMEOUT,60) ){
if( curl_setopt($curl,CURLOPT_HEADER,false) ){
if( curl_setopt($curl,CURLOPT_ENCODING,"gzip,deflate") ){
if( curl_setopt($curl,CURLOPT_FOLLOWLOCATION,true) ){
$ret = curl_exec($curl);
}
}
}
}
}
}
curl_close($curl);
}
return $ret;
}
Ого! С точки зрения исполнения, оба варианта идентичны. В обоих случаях, при возврате false одним из выражений, дальнейшее выполнение алгоритма будет прекращено. В обоих случаях, при возвратах true, будет выполнено одинаковое количество сравнений. Мне больше нравится второй вариант (ну люблю я пирамидки). Сам ни за что бы не стал делать такую штуку. Проверил бы $curl = curl_init() и выполнил все curl_setopt(...).
Первый. Не нужно скобки считать.
А для отлова ошибок можно всё через set_error_handler перенаправить куда надо. так даже удобнее будет.
Мне больше нравится первый вариант, ибо куча вложенностей во втором - имхо, то не здраво.
Оба - говнокод:) dkameleon прав.
С точки зрения исполнения, оба варианта идентичны.
Строго говоря, это не так. Второй код более корректно отрабатывает ошибку инициализации. Но интересен именно синтаксис. Дейкстра предпочёл бы второй вариант. Я лично предпочитаю первый - в экран лучше вмещается. Но хотел бы услышать мнения гуру программирования.
Параноидальные проверки на установку параметров- лишние.
Выглядит- первый вариант
п.с.
если установить CURLOPT_HEADER и запихнуть туда массив то код короче становится и наглядней
И вообще проверки ни к чему:
http://ru.php.net/manual/en/function.curl-exec.php Читаем:
Параноидальные проверки на установку параметров- лишние.
Не лишние. Именно эти проверки отличают профи от школьника.
Не лишние. Именно эти проверки отличают профи от школьника.
Как раз наоборот:) См мой пост из мануала. Если что то не получится curl_exec итак вернет ложь.:) RTFM вообщем.
Апокалипсис, дело говорит.