◆ PHP の公式ページにあるドキュメントは古いバージョンのもの
◆ 2.x から API が変わったのでちゃんとインストールされていても動かない
  ◆ new \http\Client() でクライアント作ってリクエストを enqueue で追加していく感じ
◆ サンプル少なすぎてつらい

デフォルトで使えない

PHP で GET や POST の http リクエストを送りたかったので公式ドキュメントでみつけた HttpRequest を使ってみようとしました

$r = new HttpRequest();

Class 'HttpRequest' not found

クラスがないって言われました
調べてみたら 「PHP にはバンドルされていない」 ドキュメントに書いてました

pecl_http という拡張モジュールのインストールが必要のようです
pecl のパッケージのページが異常に重いです
http://pecl.php.net/package/pecl_http


fedora だと 「php-pecl-http」 というパッケージがリポジトリにあったので dnf からインストールできました
Windows は dll ファイルの提供がされてないそうです
最初から色々入ってる ext フォルダにもありませんでした

インストールしても使えない

とりあえず fedora だけ使えればいいやと思ってさっそく使おうとしたのですが

Class 'HttpRequest' not found


どうして!!
ちゃんとインストールはされてるのに

ググっても 拡張モジュールだからインストールしてね っていう回答ばっかりです

気長に探してると 1.x と 2.x では API が違うよってコメントを見つけました
最初は 使ってるのが 3.1 だったので関係ないでしょとスルーしてたのですが これでした

2.x になってから使い方が変わったので HttpRequest というクラスはありません
PHP の公式マニュアルに載ってるのは古い 1.x のもののようです

1.x のほうがいいかも

ドキュメントは一応あるのですが メソッドの引数と返り値はあるものの 基本の使い方が全然載ってないページです
https://mdref.m6w6.name/http

新しい方はユーザがあまりいないのかググってもほとんど情報がでてきません
ドキュメントのページのコメントですら使い方違いすぎるからサンプルを書いてというのが上位コメントになってますし

1.x だと PHP の公式ページに他と同じフォーマットでドキュメントがありますし 情報もいっぱいあります
2 が辛いから 1 にしたって書いてる人も見ました

でもとりあえず新しいし dnf でインストールできるから 3.1 を使いたいです
なのですが やりたいことをするためのサンプルがないのでちょっと使って 古いけど 1.x にしたほうがいいかなと思えてきました

github のリポジトリはあるので とりあえずテストケースをサンプル代わりにすることになりそうです
https://github.com/m6w6/ext-http



ところで PHP で POST する方法をググろうとしたら POST を受け取ることばかりで PHP からリクエストを送信する方法が全然見つからずつらいです
「php httprequest send post」 みたいにそれらしい単語で絞り込めば出てきますが 絞り込んでる分見つかる情報も限られてくるのですよね


続いた