[symfony]sfWebBrowserPluginでHTTP_RequestやHTTP_Clientの代用

Written by uechoco 4月 26
この記事を読む時間:34くらい

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)

使い方は、

[phpcode]
$b = new sfWebBrowser();
$b->get($url);
[/phpcode]

が一番簡単な例。sfWebBrowserPluginのページに簡単な例やエラー処理の例が載っているので詳しくはそっちで。

[symfony]プロジェクト全体で使う定数を定義する

Written by uechoco 4月 26
この記事を読む時間:119くらい

symfonyにて、プロジェクト全体(全てのアプリケーション)で使えるような定数を定義するには、

  1. config/settings.ymlを開く(なければ作成)
  2. 環境指定の識別子を記述(all、prod、test、dev、・・・)
  3. その下の階層に定数名と定数内容を記述(階層化OK)
  4. プログラム中から、sfConfig::get(‘sf_xxxxx’);でアクセス(階層化した場合はアンダー(_)で区切る)

な感じです。

具体例としては

  1. all:
  2.   request:
  3.     url:     http://labs.uechoco.com/blog/
  4.     method:     post

と設定すると

[phpcode]
sfConfig::get(‘sf_request_url’)
sfConfig::get(‘sf_request_method’)
[/phpcode]

で値の内容が取得できます。

より詳しい説明は、symfony book 日本語ドキュメント 設定の説明を見てください。(でも、ちょっと見にくいんだよなぁ。。。)

[symfony]PEARのライブラリをインストールする

Written by uechoco 4月 26
この記事を読む時間:433くらい

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.
[phpcode]require_once ‘plugins/HTTP/Request.php’;[/phpcode]
でHTTP_Requestが使えるようにはなりました。

P.S.
 もしかして、sfWebBrowserPluginを使えばいいのかな?PEARの使い方わかったらsfWebBrowserPluginも調べておこう。

[symfony]PropelException「No connection params set for propel」

Written by uechoco 4月 26
この記事を読む時間:40くらい

 symfonyで、CriteriaでdoSelect()したり、propel-init-adminで作ったモジュールを実行しようとすると、[PropelException]が発生し、「No connection params set for propel」と言われた。

 symfony propel-build-schemaコマンドとかも実行できるので、コネクションがないって言われても原因がなかなか思いつかなかったけれど、よく見たら、config/databases.ymlのコメントアウト(#)をはずし忘れていたというオチ。

[php][symfony]propel-build-modelで「Unable to parse default value as date/time value: ‘0000-00-00 00:00:00’」

Written by uechoco 4月 25
この記事を読む時間:229くらい

symfonyで新しくプロジェクトを作っています。(練習がてら)

DB周りの開発手順として

  1. DBDesigner4でDBデザイン
  2. DBDesigner4でSQL発行
  3. 発行したSQLをDBに適応
  4. propel関連のini/yml設定を変更してデータベースに接続可能状態にしておく
  5. propel-build-shemaでshema.yml作成
  6. propel-build-modelでモデル作成

という感じのものを想定してやっていったのですが、propel-build-shemaで作成したshema.ymlが良くないらしく、propel-build-modelが以下のようなエラーを吐きます。

  1. Execution of target "om-template" failed for the following reason: C:\xampp\php\PEAR\symfony\vendor\propel-generator\build-propel.xml:470:1: Unable to parse default value as date/time value: '0000-00-00 00:00:00'
  2. [phingcall] C:\xampp\php\PEAR\symfony\vendor\propel-generator\build-propel.xml:470:1: Unable to parse default value as date/time value: '0000-00-00 00:00:00'

該当部分のschema.ymlのカラム定義を抜き出してくると、

  1. deleted_at:
  2.     type: TIMESTAMP
  3.     default: 0000-00-00 00:00:00

というように、確かに自分で設定したデフォルト値が埋め込まれていますが、残念ながら受け付けてくれない模様。自動生成のschema.ymlなので、手動修正はしたくないと思って、結局デフォルト値を消すことで解決しました。まぁ、カラムが削除日時記録のためのものなので、NULLでもいいかなっと思ったわけです。

まぁいっか。