MastodonOAuthPHP の HttpRequest.php は、Mastodon 用というか、API 呼び出しに特化しているので、そのまま使うには少し改造が必要です。ですが、GET 呼び出しはとりあえずそのまま使えるので、仕様としての概要をだいたいは知る事ができます。 get_and_save.php
<?php session_cache_limiter('nocache'); session_start(); header( "Content-Type: text/html; charset=utf-8" ); // ********************************************** // クラス定義の読み込み // ********************************************** require_once("HttpRequest.php"); // ********************************************** // 【クラスの参照】 // HttpRequest の別名を MastodonHttp として使用 // ********************************************** use \theCodingCompany\HttpRequest as MastodonHttp; $path = "0502/std.html"; // ********************************************** // ペース URL を設定をしたインスタンスの取得 // ********************************************** $http = MastodonHttp::Instance("http://localhost"); // ********************************************** // static メソッドの実行 // ********************************************** $result = $http::Get($path); file_put_contents('get_and_save.txt', $result ); ?> 保存しました
クラスの参照 まず、HttpRequest クラスは名前空間が theCodingCompany で定義されているので、require_once で読み込んだ後、use \theCodingCompany\HttpRequest as MastodonHttp; で、MastodonHttp という名前で使えるようにします。 ※ 別名を定義する必要は無いのですが、use \theCodingCompany\HttpRequest は参照するのに必要です。 コンストラクタが protected 使い勝手の理由だと思いますが、new でインスタンスを作らずに instance メソッドを実装してインスタンスを作成するようになっています。内部メソッドは全て static なので、インスタンス化しなくても呼べるはずですが、API 用の $base_url と $base_path を保存した上で インスタンス化して使用しています。 ※ インスタンス化されたクラスオブジェクトから static なメソッドにはアクセスできます static 仕様にした本当の理由は解りませんが、get_called_class を使用して呼び出し元からの インスタンス作成で必ず再利用できるようになっているようです。( instance メソッド を何度読んでも一度しか作成されないので、結果的には static メソッドのクラスを使うのと同じようになっています ) コンストラクタと instance メソッド
// コンストラクタ protected function __construct($base_url = "", $base_path = "/") { self::$base_path = $base_path; self::$base_url = $base_url; } // インスタンス作成用メソッド public static function Instance($base_url = "", $base_path = "/"){ $cls = get_called_class(); if(!isset(self::$instance[$cls])){ self::$instance[$cls] = new HttpRequest($base_url, $base_path); } return self::$instance[$cls]; }
結果的に $http::Get($path); は、$http がインスタンスで、インスタンスから static メソッドを呼び出しています。 Post メソッドは API に特化
public static function Post($path = "", $parameters = array(), $headers = array()){ //Sen the request and return response $post_data = json_encode($parameters); return self::http_request( "POST", self::$base_url.self::$base_path.$path, $headers, $post_data ); }
データ部分が JSON フォーマットに固定されています。このままでは一般用では使用できないのですが、private メソッドの http_request が結果的に一般仕様なので、これを public に変更すると使えるはずです。 http_request を public にして使用 public で、URL は直接指定なので、インスタンス作成する必要もありません。
<?php session_cache_limiter('nocache'); session_start(); header( "Content-Type: text/html; charset=utf-8" ); // ********************************************** // クラス定義の読み込み // ********************************************** require_once("HttpRequest.php"); // ********************************************** // 【クラスの参照】 // HttpRequest の別名を MastodonHttp として使用 // ********************************************** use \theCodingCompany\HttpRequest as MastodonHttp; // ********************************************** // POST // ********************************************** MastodonHttp::http_request("POST","http://localhost/0502/post_and_save.php", array(), array( "text" => "投稿データ" ) ); ?> 投稿しました
|
【PHP + 通信の最新記事】
- PHP の cURL でファイルアップロード
- PHP : WEB でもコマンドラインでも HTTP でファイルをダウンロードする 『fget.php』
- PHP : cURL : Google Photo API の albums.list メソッドを使用して アルバム一覧データを取得する
- PHP + cURL で Google Photo API の アクセストークンを取得する
- PHP : cURL で FTP + SSL ダウンロード
- PHP の imap 関数で( Windows ローカル )、Yahoo メールのメールをさくらインターネットのメールへコピーする
- PHP の imap 関数( Windows のローカル )で、さくらインターネットのメールボックスの情報を取得する
- PHP : IMAP 関数 でまずメールのヘッダ部分を整理してログに出力する / ※ JSON 出力を追加
- ファイルを一つアップロード : FORM の target を IFRAME にして、PHP に JavaScript を書き出させて元のページにメッセージを表示させる
- Windows PHP(Pear)で、Gmail(SSL/465)を使ってメールを送る
- Pear の Net_POP3 で、SSL(995) を使って簡単にメール受信
- PHP をコマンドプロンプトから実行して、WEB 上のデータを取得するいくつかの方法
- FormData を使用して $.ajax で送信すると、ファイルのアップロードとメール送信(ファイル添付)を一度に行えます
- ファイルのアップロードからそれを添付してメールを送るテンプレート(スケルトン)
- fake sendmail for windows を使って、PHP でごく普通に( mb_send_mail で )メール送信 : Gmail なので ssl(465)
- PHP : MastodonOAuthPHP の HttpRequest.php の http_request を public に書き換えて、ファイルアップロード
- PHP : mb_send_mail を使用した自家用メール送信 API
- PHP で Windows標準のオブジェクト(CDO.Message)とGMail を使ってメール送信
- PHP : http 経由でファイルのサイズを取得する file_size 関数と ファイルサイズを付加した get_imagesize 関数
- 連想配列のキー部分がプロパティと一致したらセットする( メール送信用クラス )