HTTP_Clientで国際対応のページを日本語で取得する方法

Written by uechoco 7月 31
この記事を読む時間:215くらい

少し前の記事に、HTTP_Clientでクッキーを使う方法を書きましたが、結果を書いていませんでした。無事、クッキーを再現することができました。

さて、今回もHTTP_Clientですが、もう少し基本的な使い方で躓いたことを書いときます。

最近では国際化に対応したWebサイトも多くなり、ブラウザの言語設定をApache側で認識してページを振り分けたり、スクリプト内部で翻訳処理したりといったことをしてくれます。
そういった国際化対応ページにHTTP_Clientでアクセスした場合、(詳しく調べてはいませんが)デフォルトで英語のブラウザとして認識されて、アメリカーンな結果を返してくれます。われわれは日本人です。日本語で欲しいんです。

そんなときはパラメータやヘッダーを設定してやればいいわけです。HTTP_ClientはHTTP_RequestのラッパーなのでHTTP_Requestで使うパラメータやヘッダーを送ることができます。

  1. var $_http_client_default_param = array('timeout' => 10, 'allowRedirects' => true, 'maxRedirects' => 2);
  2. var $_http_client_default_header = array('Accept-Language' => 'ja-JP,ja;q=0.9,en;q=0.8');
  3. $client =& new HTTP_Client($this->_http_client_default_param, $this->_http_client_default_header);

今回大事なのは$_http_client_default_headerで設定したAccept-Languageヘッダーです。これはHTTPヘッダのHTTP_ACCEPT_LANGUAGEに対応します。書式や意味は他のサイトを参照してください。

他にもいろいろなオプションを設定することができますが、今回はここまで。

第26回PHP勉強会に参加してきました。

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

2回目のPHP勉強会でしたが、今回は人数がめっさ増えて30人近くの参加者がありました。会場はもちろん株式会社ノッキングオン Knockin’onさんです。

スライドをかなり写したので、若干詳しいけど概要だけかいつまんで載せておきます。

1.CakePHPのHelperを使う ( by yandoさん)

  • CakePHPの近況
    • 出版物やWebでの露出が増えた
      • idea*idea
      • gihyo
      • Web2.0バイブル
      • PHPでJavascriptかかないAjax
    • 実際に大手のサイトで使われてる!?
      • topic.nifty.com
    • Cake1.2で新機能が追加された
      • 新しいValidation機能
      • 組み込みのページング処理
      • キャッシュ機能強化
      • 一部クラスの統廃合(HtmlHelper と FormHelperなど)
  • Helperとは
    • Viewみたいなものだけど、使わなくてもうごくんだな?
  • Helper利用時の注意
    • コントローラで使用するHelperを設定する必要がある。
    • 何も設定しないと、HtmlHelperが設定済みだ
  • Ajaxhelper
    • prototypeとscriptaculousに依存
    • 「すくりぷたきゅらす」って読むんじゃね?
    • JSファイルの呼び出しはJavascriptHelperで
    • Ajaxでページ丸ごと非同期読み込みするんだったら、レイアウト変えてヘッダー・フッターはずそうか
    • findAll($this->data, …)はSQL Injectionされちゃうかもー
  • まとめ
    • Helperを活用して出力テンプレートを簡略に
    • Smartyなくても、Helperだけでいんじゃね?

2.Seasar.PHP (by yonekawa さん)

  • Go PHP5
    • PHP4は今年でサポート切れちゃうじゃん
    • だったらPHP5だけだけど、Seasar.PHPを使うなら今だよ!
  • S2Container.PHP5
    • DI(Dependency Injection) x AOP(Aspect Oriented Programming)なフレームワーク
    • オートバインディングで.diconファイルをちょっとでも簡略化
    • InterTypeでgetterやsetterを勝手に作らせちゃう
  • S2Dao.PHP5
    • S2PHPのメインプロダクトともいえる、ORマッパー
    • Entityクラス定義
    • Daoインターフェース定義
    • コンポーネント登録
    • 2 Way SQL
    • Return Type
      • List
      • Array
      • YAML
      • JSON
  • S2AnA.PHP5
    • 今はまだテスト段階かもー
  • S2Base.PHP5
    • 既存のフレームワークとの連携
      • with Zend Framework
      • with symfony
      • with PRADO
  • Coming Soon…
    • Application Contextで.diconファイルレスなDI & AOP
    • Class InjectionでinterfaceレスなDI & AOP

3.PEARライブラリをPHP6の名前空間化してみた ( by shimookaさん)

  • php6の新機能の名前空間
  • PEARの長いクラス名とおさらばできるか?
  • 既存のPEARライブラリを名前空間化するスクリプト
  • 実際にDB_fooやDB_barがDB::fooやDB::barに
  • ライブラリ側は楽だけど、使う側は結局、名前空間までしていしなきゃいけないんだよね
  • 名前空間の使いどころはどこだろう?

懇親会はもちろん、焼肉です。LINDさん幹事お疲れ様でした。

関連リンクなど
Event Entry::第26回PHP勉強会

第26回PHP勉強会参加できそう

Written by uechoco 7月 23
この記事を読む時間:37くらい

7/25(水)の夜に第26回PHP勉強会に参加できそうです。いつもいつも、RSS見るのが遅くて定員オーバーしてて、今回もそうだったのですが、人数が増えたので登録できました。

プライベートで忙しいのですが今回はyandoさんがCakePHPのAjax Helperなどを発表してくださるそうです。私がCakePHPを最初にかじったときにyandoさんのWebサイトを参考にしたので、今回の発表は楽しみです。

会場はおなじみ、株式会社ノッキングオンさんです。いつも会場提供ありがとうございます。