トップページ > 2. マニュアル > 2.1. チュートリアル > チュートリアル(2) calc :簡単な計算機を作る/その1

チュートリアル(2) calc :簡単な計算機を作る/その1

 「チュートリアル(1)」は「Hello, World!」と表示されるだけで、プログラムらしくありませんでした。そこで前回のプログラムを少し変更して簡単な計算を行うプログラムを作成してみます。

プロシージャとは

 初めにプログラムに計算をさせるためのプログラムを配置する場所を作成します。「チュートリアル(1)」で使用したプログラムは以下の場所に配置されています。

 プロジェクト名、アプリケーション名についてはindex.phpで設定したものになります。CharcoalPHPは3階層の構造を取っていて、「フレームワーク」「プロジェクト」「アプリケーション」の3つの領域に分かれています。フレームワーク階層の下に複数のプロジェクトを、1プロジェクトの下に複数のアプリケーションを配置することができます。

 Hello,Worldサンプルのファイル・ディレクトリ階層構造の中で「モジュール」という言葉が出てきました。これはCharcoalPHPの主要なプログラムの設置場所である「タスク」を配置する場所であると同時に、複数のタスクをまとめた実行単位である「プロシージャ」を配置する場所になります。すなわち、モジュールディレクトリの下には1つのプロシージャと複数のタスクが配置されることになります。
(厳密にはイベント等も配置されますが、ここでは気にしないでください)

 index.phpに「CHARCOAL_DEFAULT_PROCPATH」という定数が定義されており、その内容は「@:hello」となっています。これは、フレームワークに対しプロシージャが指定されなかった場合、「@:hello」というプロシージャが呼び出されたものと見なすことを意味します。このように「@」で始まるプロシージャ表記のことを「プロシージャ・パス」といいます。

 ちなみに、ブラウザのURL欄に「http://localhost/?proc=@:hello」と打ってみてください。「Hello, World!」と表示されませんでしたか?このように、?proc=(プロシージャ・パス)と指定することで、フレームワークにどのプロシージャを実行すればいいか指示することができます。

 「@:hello」のhelloはディレクトリパスを表しています。その起点となるのが上記の階層構造の中では「modules」というディレクトリになります。このmodulesディレクトリはアプリケーションごとにも持っていますが、フレームワーク、プロジェクト直下にも配置することができます。

タスクとは

 タスクとはCharcoalPHPで最も重要な要素です。タスクはプログラムロジックを記述する場所で、簡単なプログラムであればすべてのソースコードはこのタスク内で完結します。前項で示したように、タスクは1つのプロシージャ内に格納されており、クライアントからのリクエストによってプロシージャが起動することで間接的に実行されます。
(厳密にはリクエストをフレームワークがイベントに変換し、そのイベントに呼応する形でタスクが起動されます)

プロシージャ、タスク、イベントの包含関係を図にしたものが下の図です。
 


プロシージャの構造(structure of procesure)

プロシージャの構造(structure of procesure)


Pocket

Comments are closed.