symfonyでHTTPリクエストを投げるときは、sfWebBrowserPluginを使えそうです。PEAR::HTTP_RequestやHTTP_Clientの代わりですかね。GETとPOSTの送信ができて、本文が取得できるってのは確かです。
インストールはコマンド一発。
C:\xampp\workspace\Kyuko>symfony plugin-install http://plugins.symfony-project.com/sfWebBrowserPlugin
>> plugin installing plugin "http://plugi...project.com/sfWebBrowserPlugin"
>> pear downloading sfWebBrowserPlugin-1.0.1.tgz ...
>> pear Starting to download sfWebBrowserPlugin-1.0.1.tgz (11,366
>> pear bytes)
>> pear ..
>> pear ...done: 11,366 bytes
>> pear WARNING: channel "pear.symfony-project.com" has updated its
>> pear protocols, use "channel-update pear.symfony-project.com" to
>> pear update
>> pear install ok:
>> pear channel://pear.symfony-project.com/sfWebBrowserPlugin-1.0.1
C:\xampp\workspace\Kyuko>symfony plugin-list
Installed plugins:
sfWebBrowserPlugin 1.0.1-stable # pear.symfony-project.com (symfony)
symfony 1.0.11-stable # pear.symfony-project.com (symfony)
使い方は、
php:
-
$b = new sfWebBrowser();
-
$b->get($url);
が一番簡単な例。sfWebBrowserPluginのページに簡単な例やエラー処理の例が載っているので詳しくはそっちで。
symfonyにて、プロジェクト全体(全てのアプリケーション)で使えるような定数を定義するには、
- config/settings.ymlを開く(なければ作成)
- 環境指定の識別子を記述(all、prod、test、dev、・・・)
- その下の階層に定数名と定数内容を記述(階層化OK)
- プログラム中から、sfConfig::get('sf_xxxxx');でアクセス(階層化した場合はアンダー(_)で区切る)
な感じです。
具体例としては
CODE:
-
all:
-
request:
-
url: http://labs.uechoco.com/blog/
-
method: post
と設定すると
php:
-
sfConfig::get('sf_request_url')
-
sfConfig::get('sf_request_method')
で値の内容が取得できます。
より詳しい説明は、symfony book 日本語ドキュメント 設定の説明を見てください。(でも、ちょっと見にくいんだよなぁ。。。)
symfonyでHTTP_Requestのようなプラグインがあるのかどうかわからなくて、必死に探して時間を使うのも馬鹿らしいので、素直にPEAR::HTTP_Requestを使おうと思います。(そういうプラグイン知っている人が居たら教えてください!!)
で、symfonyにPEARをインストールできるんだろうか?って思ったわけなんですが、symfonyのプラグイン自体がPEARのパッケージっぽいらしいので、symfony plugin-installコマンドを使えばPEARのライブラリがインストールできそうです。
さっそくインストール。
C:\xampp\workspace\Kyuko>symfony plugin-install HTTP_Request
>> plugin installing plugin "HTTP_Request"
>> pear WARNING: channel "pear.php.net" has updated its protocols, use
>> pear "channel-update pear.php.net" to update
>> pear WARNING: "pear/Net_URL" is deprecated in favor of
>> pear "pear/Net_URL2"
>> pear downloading HTTP_Request-1.4.2.tgz ...
>> pear Starting to download HTTP_Request-1.4.2.tgz (16,398 bytes)
>> pear ..
>> pear ....done: 16,398 bytes
>> pear downloading Net_URL-1.0.15.tgz ...
>> pear Starting to download Net_URL-1.0.15.tgz (6,303 bytes)
>> pear ...done: 6,303 bytes
>> pear downloading Net_Socket-1.0.8.tgz ...
>> pear Starting to download Net_Socket-1.0.8.tgz (5,441 bytes)
>> pear ...done: 5,441 bytes
>> pear install ok: channel://pear.php.net/Net_URL-1.0.15
>> pear install ok: channel://pear.php.net/Net_Socket-1.0.8
>> pear install ok: channel://pear.php.net/HTTP_Request-1.4.2
インストールできたかの確認。
C:\xampp\workspace\Kyuko>symfony plugin-list
Installed plugins:
HTTP_Request 1.4.2-stable # pear.php.net (pear)
Net_Socket 1.0.8-stable # pear.php.net (pear)
Net_URL 1.0.15-stable # pear.php.net (pear)
symfony 1.0.11-stable # pear.symfony-project.com (symfony)
使い方は知らないので、また勉強してきます。
P.S.
php:
-
require_once 'plugins/HTTP/Request.php';
でHTTP_Requestが使えるようにはなりました。
P.S.
もしかして、sfWebBrowserPluginを使えばいいのかな?PEARの使い方わかったらsfWebBrowserPluginも調べておこう。
symfonyで、CriteriaでdoSelect()したり、propel-init-adminで作ったモジュールを実行しようとすると、[PropelException]が発生し、「No connection params set for propel」と言われた。
symfony propel-build-schemaコマンドとかも実行できるので、コネクションがないって言われても原因がなかなか思いつかなかったけれど、よく見たら、config/databases.ymlのコメントアウト(#)をはずし忘れていたというオチ。