ennacx / php-simple-curl
PHP - Simple cURL wrapper library.
v1.0.2
2025-01-15 05:37 UTC
Requires
- php: ^8.2
- ext-curl: *
- ext-openssl: *
Requires (Dev)
- phpunit/phpunit: ^11.4
This package is auto-updated.
Last update: 2025-06-17 03:53:54 UTC
README
概要
cURLを極力シンプルだけど幅広く対応したい、PHP専用のライブラリ。
cURLって設定項目多すぎてわかんない。もっとシンプルに出来ないものか。
PHP8になっても curl_init();
やら curl_close();
やらでいちいち手続きしたり、 CURLOPT_XXXX
ってなんぞ…ってのが すごく 多いのしんどい。
って常々思ってたので作りました。
特長
- シンプルさを追求
- メソッドチェーンで設定追加できる
- 設定メソッドは最後に呼び出した内容で上書きする
動作要件
- PHP 8.2 以上
- PHPモジュール
curl
,openssl
- composer 2.0 以上
インストール
composer require ennacx/php-simple-curl
使い方
めっちゃシンプルに
<?php // まず初期化をします。 $lib = new \Ennacx\SimpleCurl\SimpleCurlLib('https://www.php.net/'); // exec()メソッドでcurlの実行をします。 /** @var \Ennacx\SimpleCurl\Entity\ResponseEntity $result */ $result = $lib->exec(); // エンティティーには各cURLの実行結果を扱いやすくまとめています。 echo $result->result; // (bool)
レスポンスデータが欲しい場合
<?php $lib = new \Ennacx\SimpleCurl\SimpleCurlLib('https://www.php.net/', returnTransfer: true); /** @var \Ennacx\SimpleCurl\Entity\ResponseEntity $result */ $result = $lib->exec(); echo $result->result; // (bool) echo $result->responseHeader; // (string) レスポンスヘッダー echo $result->responseBody; // (string) レスポンスボディー
POSTやPUTもお手軽に
<?php $postData = ['foo' => 1, 'bar' => 'enjoy PHP', 'baz' => null]; $lib = new \Ennacx\SimpleCurl\SimpleCurlLib('https://www.php.net/', method: CurlMethod::POST); /** @var \Ennacx\SimpleCurl\Entity\ResponseEntity $result */ $result = $lib ->setPostFields($postData, jsonFlags: JSON_UNESCAPED_SLASHES) ->exec(); echo $result->result; // (bool)
他にもプロキシだったりCookieだったり認証だったり最低限必要と思われるものは用意。
レスポンス内容も分かりやすく
$lib = new \Ennacx\SimpleCurl\SimpleCurlLib('https://www.php.net/'); /** @var \Ennacx\SimpleCurl\Entity\ResponseEntity $result */ $result = $lib->exec(); // HTTPステータスコード $statusCode = $result->http_code; $statusCode = $result->http_status_code; // ダウンロードサイズ $contentLength = $result->content_length; $contentLength = $result->download_content_length;
その他 curl_getinfo()
で取得可能はパラメーターは網羅済。
ダイナミックプロパティ形式でアクセスすれば取得出来ます。
並列処理も対応
<?php // 並列処理したいcURL対象を列挙します。 // MultiCurlLib使用時は内部でreturnTransferを有効にするため、わざわざ指定する必要はありません。 $sLib1 = new \Ennacx\SimpleCurl\SimpleCurlLib('https://www.php.net/'); $sLib2 = new \Ennacx\SimpleCurl\SimpleCurlLib('https://github.com/'); $sLib3 = new \Ennacx\SimpleCurl\SimpleCurlLib('https://packagist.org/'); // MultiCurlLibに適用し exec() メソッドで実行します。 $mLib = new \Ennacx\SimpleCurl\MultiCurlLib($sLib1, $sLib2, $sLib3); /** @var array<string, \Ennacx\SimpleCurl\Entity\ResponseEntity> $multiResult */ $multiResult = $mLib->exec(); // それぞれのIDから各結果を取得出来ます。 $s1Result = $multiResult[$sLib1->getId()]; echo $s1Result->result; // (bool) $sLib1のcurl実行結果 echo $s1Result->responseHeader; // (string) $sLib1のレスポンスヘッダー echo $s1Result->responseBody; // (string) $sLib1のレスポンスボディー