新規ドキュメントはこちら(http://ozaki.kyoichi.jp/content/blogsection/4/26/)に掲載しております。
モジュールを作る
新規にモジュールを作成します。今回は、お決まりのHelloWorldモジュールを作成します。
[k-ozaki@free15 ~]$ cd ~/workspace/MyProject/webapp/modules/ [k-ozaki@free15 modules]$ mkdir HelloWorld [k-ozaki@free15 modules]$ cd HelloWorld [k-ozaki@free15 HelloWorld]$ mkdir actions config lib models templates validate views
モジュールの設定ファイルを作ります。モジュール別のconfigファイルの中で唯一必要なファイルになります。HelloWorld/config/module.iniを下記のような内容で作成しま
[module]
ENABLED = "On"
TITLE = "Hello World Module"
VERSION = "0.1"
NAME = "HelloWorld"
AUTHOR = "Kyoichi Ozaki (ozaki@kyoichi.jp)"
HOMEPAGE = "http://ozaki.kyoichi.jp/"
UPDATE_URL = ""
DESCRIPTION = "Hello World example module"
アクションを作成します。actionsディレクトリの中に、HelloWorldAction.class.phpというファイルを作成します。各アクションの命名規則は、”アクション名Action.class.php”となります。内容は下記のようになります
<?php
class HelloWorldAction extends Action
{
public function execute ()
{
return View::SUCCESS;
}
}
?>
ここで継承している親クラスのActionクラスでは、abstract functionはexecuteだけなので、とりあえず、executeを定義します。他は親クラスの動作を継承します。詳細については、MyProject/mojavi/actions/Action.class.phpを確認してください。今は、ただ単に、return View::SUCCESSを記述。つまり、ViewクラスのSUCCESS(成功)を返すようにします。
次には、Viewクラスを作る必要があります。viewsディレクトリの中に、HelloWorldSuccessView.class.phpを作ります。各ビューの命名規則は、"アクション名モード名View.class.php"です。モードは、ALERT、ERROR、INPUT、NONE、SUCCESS、RENDER_CLIENT、RENDER_NONE、RENDER_VARなどがあります。どれも目的に応じて使い分ける必要があります。どのようなときにどのモードを返せばいいかは後ほど説明します。詳細については、MyProject/mojavi/view/View.class.phpを確認してください。親クラスのPHPViewはViewを継承しており、”PHPファイル”をテンプレートファイルとして扱う場合のViewクラスです。定義する必要があるのはexcuteのみなので、こちらを実装します。内容は下記のようになります
<?php
class HelloWorldSuccessView extends PHPView
{
public function execute ()
{
$this->setTemplate('HelloWorldSuccess.php');
}
}
?>
必要最低限の設定をしています。このViewが呼ばれた場合に読み込むテンプレートファイルを設定するのみです。
最後に、実際の画面を作成します。HelloWorldSuccess.phpという名前で、テンプレートファイルを用意します。templatesディレクトリの中にHelloWorldSuccess.phpというファイルを作成します。内容は下記のようになります
<html>
<body>
Hello World!
</body>
</html>
これで終わりです。最後にブラウザから確認してみましょう。
http://localhost/MyProject/index.php?module=HelloWorld&action=HelloWorld
Hello World!と表示されればOKです。必要最低限の記述でモジュールとアクションの作成を行いましたが、あとはこれの応用になります。