Pear は PHP で利用できる便利なライブラリです。今回は Services_Twitter というものを CakePHP で利用しようとしたところで、ちょぴーり躓いたので、メモしておきます。
今回は簡単に Twitter API を操作できる PEAR パッケージ Services_Twitter を導入することを仮定して話を進めていきます。
Services_Twitter をダウンロードする
こちらから Services_Twitter をダウンロードできます。
Windows でダウンロードすると Services_Twitter-0.4.0.tgz.tar というアーカイブファイルになってしまいまして、解凍しても中身空で、なんか解凍できなかったので Linux を起動してそこから作業をするという荒業に出ました。
PAER を配置する
/app/vendors にファイルを置きます。今回の場合ですと Services ディレクトリをそのままここにコピーしてこれば良いですね。
inclide_path.php を作成する
/app/vendors に inclide_path.php を作成します。内容は以下になります。定数に PEAR_PATH と入っていますが、他の名称に変更してもらって構いませんです。
1 2 3 | <?php define('PEAR_PATH', dirname(__FILE__)); set_include_path(PEAR_PATH . "/"); |
dirname(__FILE__)) ですが、dirname() は親ディレクトリを求め、__FILE__ は現在のファイルのフルパスを表す定数文字列が入ります。以下が参考になりました。
tips – 汎用インクルード用ファイルでの include, require では dirname(__FILE__) を使う
この inclide_path.php は“vendorsにpear::soapを組み込んでSOAPを使いたい” フォーラム – CakePHP Users in Japan を参考に作りました。
PEAR を読み込む
先ほどの include_path.php がここで役に立ちます。
ファイルが一つなら直接 path を指定しても良かったのかもしれませんが、複数ファイルがあるなら断然 include_path を設定した方が楽ですねー。
2行目は適宜変更してください。第2引数と第3引数注目です。
1 2 | App::import('Vendor', 'include_path'); App::import('Vendor', 'Services', array('file'=>'Twitter.php')); |
Twitter でつぶやく
以下のようにコントローラー内に書けば動きます。
Services_Twitter のページに詳しい使い方がのっていますので、一度目を通したいところですね。
1 2 3 4 | $user = 'twitterのユーザ名'; $pass = 'twitterのパスワード'; $st =& new Services_Twitter($user, $pass); $st->setUpdate('テスト投稿'); |
string(xx) “HTTP/1.1 302 Found” で投稿できない
完璧なプログラムなのに、このエラーで投稿できない場合は、Twitter.php の 501行 の var_dump をコメントアウトすれば上手く動きます。
PHP::Services_Twitter のTwitter.phpでvar_dumpの消し忘れ? | 生涯一馬鹿で行こう!
bot を作るのに参考になるサイト
私自身 Web サービスを使うのに向いてなくて、どうせなら提供する側に回りたい今日この頃。bot を作ろうと思っていますので、参考になりそうなサイトを探して、以下が秀逸でした。
キャラクタ系Twitterbotをつくってみた初心者向けまとめ そのいち – ものおき@はてな
命名屋が出張する Twitter の bot @meimeibot を公開 | ウェブルさんのコメント
[...] の勉強や bot への憧れから作ってみました。 以下の記事が制作の過程のメモですねー。命名のロジック以外は、この記事そのままです。 CakePHP で PEAR (Services_Twitter) を使う方法 | ウェブル [...]