1月のPHPテクニカルセミナーでPieceFrameworkを知り、勉強を始めています。
携帯用のページを作ろうとしていますが、文字コード変換に
「OutoputFilter」を使えばいいという内容をWebで見ましたが、
具体的にはどうしたらいいのでしょうか?
Webを探してもなかなかドキュメントが無くて困っています。
後、データベースアクセスクラスなどはどのように使うのが
いいのでしょうか?
(現在は、適当なフォルダにおき、直接includeしています・・・)
初歩的な事ですが、宜しくお願いします。
ご自身からレスが付くとは思いますが、携帯対応プラグインを関西勉強会メンバの関山さんが公開してくださっています。
http://d.hatena.ne.jp/rsky/20070218/1171770315
ドキュメントに関してはPHPプロマガジンに掲載されたものをブラッシュアップして、3月下旬か4月頭に公開するというお話を久保さんから伺いまし
た。
自作のクラスは私も適当なディレクトリにおいて読み込んでいます。
とりあえずは無手勝流で、Piece流を理解したら変えていけばいいやと思ってやっています。
久保です。PHP テクニカルセミナーにお越しくださり、ありがとうございます。
takapon wrote:
> 携帯用のページを作ろうとしていますが、文字コード変換に
> 「OutoputFilter」を使えばいいという内容をWebで見ましたが、
> 具体的にはどうしたらいいのでしょうか?
文字エンコーディング変換の基本は、PHP の出力バッファリング機構を使った
ものになります。ob_start() [1] を呼ぶことで、出力バッファリングを開始
することができますが、この関数に mb_output_handler() [2] を渡しておく
と、内部文字エンコーディング [3] から、HTTP 出力文字エンコーディング
[4] に変換されます。
この機構を Piece から使うには、出力フィルタである OutputBufferStack プ
ラグイン [5] の拡張ポイント filters に mb_output_handler() を設定しま
す。
- name: OutputBufferStack
point:
- name: filters
type: extension
value:
- mb_output_handler
内部文字エンコーディング、HTTP 出力文字エンコーディングは、Apache 設定
ファイルや関数によって設定可能です。関数によって設定する場合は、エント
リポイントや、エントリポイントからロードするファイルに呼び出しを書いて
くおといいでしょう。動的に HTTP 出力文字エンコーディングを決めるような
場合は、mb_http_output() の呼び出しを、イベントハンドラに書いても構い
ません。
また、単一のフィルタで文字エンコーディング変換以外のことも併せて行える
、関山さんの Interceptor_MobileOutputFilter プラグイン [6] もあります。
何らかの事情により、mb_output_handler() が使えない場合は、その他の手段
を使って、プラグインや関数を定義し、それを拡張ポイント filters に設定
することで対応できます。
詳細は、下記 URL を参照ください。
[1] http://www.php.net/manual/ja/function.ob-start.php
[2] http://www.php.net/manual/ja/function.mb-output-handler.php
[3] http://www.php.net/manual/ja/function.mb-internal-encoding.php
[4] http://www.php.net/manual/ja/function.mb-http-output.php
[5]
http://trac.piece-framework.com/piece-unity/wiki/%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%82%BA%E3%83%9E%E3%83%8B%E3%83%A5%E3%82%A2%E3%83%AB/%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/OutputBufferStack
[6] http://d.hatena.ne.jp/rsky/20070218/1171770315
> 後、データベースアクセスクラスなどはどのように使うのが
> いいのでしょうか?
> (現在は、適当なフォルダにおき、直接includeしています・・・)
それで何ら問題ありません。
ご自身のアプリケーション固有のクラスは、Piece 経由でアクセスする必要は
ありません。 (むしろ、アクセスするべきではありません。)
require/include やファクトリクラス等、適切な方法でロードしてください。
以上、よろしくお願いいたします。
--
KUBO Atsuhiro e-mail: itema...@yahoo.co.jp
開発者ご本人からレスを頂き、恐縮です。
> この機構を Piece から使うには、出力フィルタである OutputBufferStack プ
> ラグイン [5] の拡張ポイント filters に mb_output_handler() を設定しま
> す。
>
> - name: OutputBufferStack
> point:
> - name: filters
> type: extension
> value:
> - mb_output_handler
すばらしい。
この設定で、変換できました。
関山さんの、Interceptor_MobileOutputFilter プラグインも参考に勉強してみ
ます。
今まで、いわゆる俺々フレームワークを使って開発してきましたが、
限界を感じていまして、別のフレームワークを探していたところでした。
CakePHPがいいかな?と思っていましたが、DBのテーブル構成に制約があるため、
躊躇していました。
先回、PHP テクニカルセミナーで、Piece Framework の説明を聞いて、
「ステートフルなプログラミング」と「組み込みセキュリティ」が決め手となり、
今後、Piece Framework を使って行きたいと思っています。
3月になってしまいましたが(^^;)、Piece_IDEやPiece_ORMも期待しています。
宜しくお願いします。
---------------------------------------------------------------------
T.Utsumi E-Mail : tak...@pat.hi-ho.ne.jp
早速のレスありがとうございます。
> ご自身からレスが付くとは思いますが、携帯対応プラグインを関西勉強会メンバの関山さんが公開してくださっています。
> http://d.hatena.ne.jp/rsky/20070218/1171770315
ご紹介ありがとうございます。
こういった例があると勉強になります。
>
> ドキュメントに関してはPHPプロマガジンに掲載されたものをブラッシュアップして、3月下旬か4月頭に公開するというお話を久保さんから伺いまし
> た。
おお!、期待しています。
(ちなみに、PieceFrameworkの記事が読みたくて、先日初めてPHPプロマガジン
を購入しました。)
---------------------------------------------------------------------
T.Utsumi E-Mail : tak...@pat.hi-ho.ne.jp