承接 linslin/yii2-curl 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

linslin/yii2-curl

最新稳定版本:1.5.0

Composer 安装命令:

composer require linslin/yii2-curl

包简介

Easy and nice cURL extension with RESTful support for Yii2

README 文档

README

Latest Stable Version Latest Master Build Test Coverage Total Downloads License

Easy working cURL extension for Yii2, including RESTful support:

  • POST
  • GET
  • HEAD
  • PUT
  • PATCH
  • DELETE
  • OPTIONS

Requirements

  • Yii2
  • PHP >=7.2.0 || 8.0.1
  • ext-curl, ext-json, and php-curl installed

Installation

The preferred way to install this extension is through composer.

composer require --prefer-dist linslin/yii2-curl "*"

Usage

Once the extension is installed, simply use it in your code. The following example shows you how to handling a simple GET Request.

use linslin\yii2\curl;
$curl = new curl\Curl();

//get http://example.com/
$response = $curl->get('http://example.com/');

if ($curl->errorCode === null) {
   echo $response;
} else {
     // List of curl error codes here https://curl.haxx.se/libcurl/c/libcurl-errors.html
    switch ($curl->errorCode) {
    
        case 6:
            //host unknown example
            break;
    }
} 
// GET request with GET params
// http://example.com/?key=value&scondKey=secondValue
$curl = new curl\Curl();
$response = $curl->setGetParams([
        'key' => 'value',
        'secondKey' => 'secondValue'
     ])
     ->get('http://example.com/');
// POST URL form-urlencoded 
$curl = new curl\Curl();
$response = $curl->setPostParams([
        'key' => 'value',
        'secondKey' => 'secondValue'
     ])
     ->post('http://example.com/');
// POST RAW JSON
$curl = new curl\Curl();
$response = $curl->setRawPostData(
     json_encode[
        'key' => 'value',
        'secondKey' => 'secondValue'
     ])
     ->post('http://example.com/');
// POST RAW JSON and auto decode JSON respawn by setting raw = true. 
// This is usefull if you expect an JSON response and want to autoparse it. 
$curl = new curl\Curl();
$response = $curl->setRawPostData(
     json_encode[
        'key' => 'value',
        'secondKey' => 'secondValue'
     ])
     ->post('http://example.com/', true);
     
// JSON decoded response by parsing raw = true in to ->post().
var_dump($response);
// POST RAW XML
$curl = new curl\Curl();
$response = $curl->setRawPostData('<?xml version="1.0" encoding="UTF-8"?><someNode>Test</someNode>')
     ->post('http://example.com/');
// POST with special headers
$curl = new curl\Curl();
$response = $curl->setPostParams([
        'key' => 'value',
        'secondKey' => 'secondValue'
     ])
     ->setHeaders([
        'Custom-Header' => 'user-b'
     ])
     ->post('http://example.com/');
// POST JSON with body string & special headers
$curl = new curl\Curl();

$params = [
    'key' => 'value',
    'secondKey' => 'secondValue'
];

$response = $curl->setRequestBody(json_encode($params))
     ->setHeaders([
        'Content-Type' => 'application/json',
        'Content-Length' => strlen(json_encode($params))
     ])
     ->post('http://example.com/');
// Avanced POST request with curl options & error handling
$curl = new curl\Curl();

$params = [
    'key' => 'value',
    'secondKey' => 'secondValue'
];

$response = $curl->setRequestBody(json_encode($params))
     ->setOption(CURLOPT_ENCODING, 'gzip')
     ->post('http://example.com/');
     
// List of status codes here http://en.wikipedia.org/wiki/List_of_HTTP_status_codes
switch ($curl->responseCode) {

    case 'timeout':
        //timeout error logic here
        break;
        
    case 200:
        //success logic here
        break;

    case 404:
        //404 Error logic here
        break;
}

//list response headers
var_dump($curl->responseHeaders);

Testing

  • Run codeception tests with vendor/bin/codecept run in repository root dir. Run codeception with clover report XDEBUG_MODE=coverage vendor/bin/codecept run --coverage-xml ./../../build/logs/clover.xml. On windows run vendor\bin\codecept.bat run. On windows with clover report run vendor\bin\codecept.bat run --coverage-xml ./../../build/logs/clover.xml.

Changelog

Release 1.5.0 - Changelog
  • Added PHP 8 support.
  • Updated phiremock to v2.
  • Removed not needed dependencies from the composer package file (#88).
  • Fixed CURLFile object serialization for profiling (#87).
Release 1.4.0 - Changelog
Release 1.3.0 - Changelog
  • Fixed HTTP-Method parsing on PATCH request.
  • Updated DocBlocks + code refactoring.
  • Removed deprecated PHP Version support. Minimum PHP Version is now 7.1.3. Please use version "linslin/yii2-curl 1.2.1" - https://github.com/linslin/Yii2-Curl/releases/tag/1.2.1 if you need PHP 5.4+ support.
Release 1.2.2 - Changelog
  • Added some new cURL examples into readme.md.
Release 1.2.1 - Changelog
  • Added setRawPostData([mixed]) [this] which allows you to post any data format.
Release 1.2.0 - Changelog
  • Added unsetHeader([string header]) [this] helper which allows you to unset one specific header.
  • Added setHeader([string header, string value]) [this] helper which allows you to set one specific header.
  • Added getRequestHeaders() [array] helper which returns all request headers as an array.
  • Added getRequestHeader([string headerKey]) [string|null] helper which returns a specific request header as an string.
  • Added new test cases for getRequestHeaders() and getRequestHeader().
  • Readme adjustments.
Release 1.1.3 - Changelog
  • Fixed issue with patch request.
  • Fully added functionalTests for 100% coverage.
Release 1.1.2 - Changelog
Release 1.1.1 - Changelog
  • Fixed wrong parameter parsing into _httpRequest() (thanks to yemexx1)
  • Added JSON decode functions tests (thanks to yemexx1)
Release 1.1.0 - Changelog
  • Added setHeaders() [array] helper.
  • Added setPostParams() [array] helper.
  • Added setGetParams() [array] helper.
  • Added setRequestBody() [string] helper.
  • Added getUrl() helper.
  • Added API attribute errorText [string|null] - holds a string describing the given error code - #49.
  • Added functionTests to ensure stability.
  • Allow PHP class goodness - #52.
  • Fixed header explode - #51.
Release 1.0.11 - Changelog
  • Added API attribute responseHeaders [array|null] which returns an array of all response headers.
  • Changed _defaultOptions[CURLOPT_HEADER] to true.
  • Profile debugging is only active if constant YII_DEBUG is true.
Release 1.0.10 - Changelog
  • Fixed PHP notice #39.
Release 1.0.9 - Changelog
Release 1.0.8 - Changelog
  • Added API method setOptions([array]) which allows to setup multiple options at once.
  • Fixed Issue #30.
Release 1.0.7 - Changelog
  • Fixed getInfo([, int $opt = 0 ]) exception were cURL wasn't initialized before calling getInfo($opt).
Release 1.0.6 - Changelog
Release 1.0.5 - Changelog
  • Made body callback not depending on HTTP-Status codes anymore. You can retrieve body data on any HTTP-Status now.
  • Fixed Issue #19 where override default settings break options.
  • Added timeout response handling. $curl->responseCode = 'timeout'
Release 1.0.4 - Changelog
  • CURLOPT_RETURNTRANSFER is now set to true on default - #18
  • Readme.md adjustments.
Release 1.0.3 - Changelog
  • Fixed override of user options. #7
  • Nice formatted PHP-examples.
  • Moved parent::init(); behavior into unitTest Controller.
Release 1.0.2 - Changelog
  • Added custom params support
  • Added custom status code support
  • Added POST-Param support and a readme example
  • Removed "body" support at request functions. Please use "CURLOPT_POSTFIELDS" to setup a body now.
  • Readme modifications
Release 1.0.1 - Changelog
  • Removed widget support
  • Edited some spellings + added more examples into readme.md
Release 1.0 - Changelog
  • Official stable release

Thanks to

Mariano Custiel (@mcustiel)

... and all other contributors.

统计信息

  • 总下载量: 1.42M
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 181
  • 点击次数: 2
  • 依赖项目数: 38
  • 推荐数: 0

GitHub 信息

  • Stars: 175
  • Watchers: 13
  • Forks: 90
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-01-04

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固