V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zencoding
V2EX  ›  PHP

分享一个自用的 PHP-Curl 类 https://github.com/wenpeng/PHP-Curl/

  •  
  •   zencoding · 2016 年 1 月 4 日 · 5051 次点击
    这是一个创建于 3666 天前的主题,其中的信息可能已经有所发展或是发生改变。

    关于

    PHP-Curl 是一个轻量级的网络操作类,实现 GET 、 POST 、 UPLOAD 、 DOWNLOAD 常用操作,支持链式写法

    需求

    对低版本做了向下支持,但建议使用 PHP 5.3 +

    示例

    GET:
    $this->curl->get(目标网址);
    
    POST:
    $this->curl->post(变量名, 变量值)->post(多维数组)->submit(目标网址);
    
    DOWNLOAD:
    $this->curl->download(文件地址)->save(保存路径);
    
    UPLOAD:
    $this->curl->post(多维数组)->upload($_FILE 字段, 本地路径, 文件类型, 原始名称)->submit(目标网址);
    
    配置

    参考:http://php.net/manual/en/function.curl-setopt.php
    php
    $this->curl->set('CURLOPT_选项', 值)->post(多维数组)->submit(目标网址);

    自动重试
    // 出错自动重试 3 次(默认不启用)
    $this->curl->retry(3)->post(多维数组)->submit(目标网址);
    
    19 条回复    2016-01-23 08:34:30 +08:00
    BOYPT
        1
    BOYPT  
       2016 年 1 月 4 日
    一般 composer require php-curl-class/php-curl-class
    不再折腾其他封装
    fising
        2
    fising  
       2016 年 1 月 4 日
    不应该是 $curl->get(目标网址); 吗,为何是 $this->curl->get(目标网址);
    hahasong
        3
    hahasong  
       2016 年 1 月 4 日 via Android
    简单的事情搞复杂了,原生的封装一个函数搞定
    yangqi
        4
    yangqi  
       2016 年 1 月 4 日
    新收发问,这个解决了什么问题? 有什么好处?为什么要封装啊
    lmfx89
        5
    lmfx89  
       2016 年 1 月 4 日
    @hahasong 但每次去复制函数很麻烦吧,写成类库其他项目或者人想用之类引用就可以了。 谢谢 LZ 分享。
    zencoding
        6
    zencoding  
    OP
       2016 年 1 月 4 日
    @fising 实例化时 $curl = new Curl 也是 ok 的

    @yangqi 结构很简单,看源码就知道了
    Yien
        7
    Yien  
       2016 年 1 月 4 日 via iPhone
    谢谢
    anyforever
        8
    anyforever  
       2016 年 1 月 4 日
    干净整洁利落,已 star
    micookie
        9
    micookie  
       2016 年 1 月 4 日
    不错,学习了
    GG668v26Fd55CP5W
        10
    GG668v26Fd55CP5W  
       2016 年 1 月 4 日
    我都是用 composer 安装的 curl/curl ,主要是 cookie 操作不太方便,这个我试试怎么样
    mrgeneral
        11
    mrgeneral  
       2016 年 1 月 4 日
    简单的就自己写了,小项目就用 curl-class ,复杂点的就可以上 guzzle 了
    zencoding
        12
    zencoding  
    OP
       2016 年 1 月 4 日
    @mrgeneral 这个就是在处理一个小项目时封装的简单轮子
    wd0g
        13
    wd0g  
       2016 年 1 月 14 日
    可以自动设置更新 cookie 吗?
    如果可以的话就不错了
    我之前写的 CURL 支持自动更新 cookie 哦~~哈哈哈哈哈哈
    zencoding
        14
    zencoding  
    OP
       2016 年 1 月 14 日
    @wd0g

    当然可以实现,这里是一个小例子

    ```php

    $curl = new Curl;
    $cookie = '/tmp/test_cookie_file';
    $option = array(
    'CURLOPT_COOKIEJAR' => $cookie,
    'CURLOPT_COOKIEFILE' => $cookie
    );
    $curl->set($option)->get('http://www.baidu.com');

    ```
    wd0g
        15
    wd0g  
       2016 年 1 月 14 日
    @zencoding markdown 语法不能用~~~
    wd0g
        16
    wd0g  
       2016 年 1 月 14 日
    ```
    print xxoo
    ```
    ioven
        17
    ioven  
       2016 年 1 月 15 日
    和 requests 有什么不同吗
    sswowo
        18
    sswowo  
       2016 年 1 月 21 日
    楼主也喜欢塔叔
    zencoding
        19
    zencoding  
    OP
       2016 年 1 月 23 日 via Android
    @sswowo 嗯呢
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   1020 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 18:39 · PVG 02:39 · LAX 10:39 · JFK 13:39
    ♥ Do have faith in what you're doing.