トップページ > 1. ドキュメント > 1.2. CharcoalPHPの基本 > 1.2.1. 基本知識 > 動作フロー概要

動作フロー概要

CharcoalPHPは以下のように動作します。

一般的なWebアプリケーションをCharcoalPHPで作成する場合

ブラウザからのHTTPリクエストを受信して、HTTPレスポンスを返す一般的なWebアプリケーションの場合、CharcoalPHPは以下のような順番でリクエストを処理します。

  1. 設定ファイルであらかじめ定義されたリクエストオブジェクトを生成
  2. Webサーバが受け取ったHTTPリクエストの内容を1)で作成したリクエストオブジェクトのプロパティにセット
  3. 2)のリクエストオブジェクトのプロパティからプロシージャパスを取得
  4. プロシージャパス上の設定ファイルから、初期イベントを生成
  5. プロシージャパス上の設定ファイルから、初期タスクを生成
  6. プロシージャパス上の設定ファイルから、タスクマネージャを生成
  7. タスクマネージャに5)のタスクをすべて登録
  8. タスクマネージャのprocessEventsメソッドを呼び出し、登録されたタスクで初期イベントを処理(タスクのprocessEventsメソッドが順番に呼び出される)
  9. タスクマネージャが持つイベントキュー上のイベントがすべて無くなるまでタスクの処理を続行(イベントループ処理といいます)
  10. タスクマネージャが持つイベントキュー上のイベントがすべて無くなるか、イベントループの処理回数上限に達すれば終了

フロー9)においてHTTPレスポンスヘッダ、メッセージボディを出力することでブラウザにWebページを表示させることができます。CharcoalPHPでは簡単にHTTPレスポンスヘッダ、メッセージボディを出力できるようCharcoal_Responseクラスが用意されているほか、テンプレートエンジンSmartyを簡単に処理できるCharcoal_SmartyRendererTaskクラスがプリセットされています。その他のテンプレートエンジンやPHPをテンプレートエンジンとして使う場合も独自のRendererTaskを用意することで簡単に対応できます。

AJAXアプリケーションをCharcoalPHPで作成する場合

CharcoalPHPでは上記RendererTaskでXMLやJSONを出力することでAJAXのサーバ側ロジックを簡単に実装することができます。XML・JSONを出力するためのユーティリティクラスCharcoal_XmlUtil、Charcoal_JsonUtilも用意されています。

コンソールアプリケーションをCharcoalPHPで作成する場合

CharcoalPHPでコンソールアプリケーションを作成する場合、処理の流れは基本的に一般的なWebアプリケーションの場合と同様ですが、一般的なWebアプリケーションの場合と異なるのは「CHARCOAL_RUNMODE」という定数を定義する際に「shell」を指定します。

一般的なWebアプリケーションの場合「CHARCOAL_RUNMODE」定数の値は「http」となり、Charcoal_HttpRequestのインスタンスが生成されますが、コンソールアプリケーションの場合は「CHARCOAL_RUNMODE」が「shell」となり、1)で生成されるオブジェクトはCharcoal_ShellRequestのインスタンスとなります。Charcoal_ShellRequestクラスはコマンドラインを処理してその内容をパラメータとして保持します。

コンソールアプリケーションで出力がある場合、結果は標準出力に出力されます。

Pocket

Comments are closed.