Moony

Moonyは、PHPで記述されたWebアプリケーションフレームワークです。 ちょっとしたWebサイトを作る際に、構築のベースにできるようなフレームワークを目指しています。

  1. 動作環境
  2. インストール
  3. ディレクトリ構成
  4. アプリケーション構築手順
  5. 動作概要
  6. CVSリポジトリ
  7. ライセンス
  8. 作っている人
  9. 変更履歴

開発日誌を書いています: Moony::log

動作環境

インストール

以下、インストールと動作確認の手順です。 ローカル環境(localhost)の /moony にインストールすると仮定して記述しています。

  1. 最新版のパッケージをダウンロード
  2. ダウンロードしたファイルを展開
  3. 展開したファイルをApacheのDocumentRoot直下の /moony に配置
  4. 以下のディレクトリに書き込み権限を付与
  5. Smartyをダウンロード、ライブラリを /moony/lib/smarty に配置
  6. http://localhost/moony/ にアクセス
  7. 「Welcome! -> Sample」と表示されることを確認
  8. 「Sample」に設定されたリンクを選択、http://localhost/sample.html にアクセス
  9. 「Welcome! This is...」と表示されることを確認

ディレクトリ構成

-+- [_codegen] -+- [skelton] --+- action.skl
 |              |              +- template.skl
 |              +- generate.php
 +- [app]--- ---+- [action] ---+- HomeAction.php
 |              |              +- SampleAction.php
 |              +- [template] -+- Home.tpl
 |              |              +- Sample.tpl
 |              +- [work]
 |              +- .htaccess
 +- [lib] ------+- [moony] ----+- [core] -+- Moony_Action.php
 |              |              |          +- Moony_Context.php
 |              |              |          +- Moony_Controller.php
 |              |              |          +- Moony_Request.php
 |              |              |          +- Moony_Session.php
 |              |              |          +- Moony_View.php
 |              |              +- [util] -+- Moony_ErrorHandler.php
 |              |              |          +- Moony_Logger.php
 |              |              +- Moony.php
 |              |              +- Moony_Config.php
 |              +- [smarty]
 |              +- .htaccess
 +- [log] -------- .htaccess
 +- .htaccess
 +- dispatcher.php

/_codegen はスケルトンの自動生成のためのディレクトリです。 /app/action、/app/template には初期状態でサンプルアプリケーションが格納されています。

アプリケーション構築手順

/test/archives/20051201.html というURLでアクセス可能なページを作るものとします。

  1. 以下のコマンドでスケルトンを自動生成します。
    cd /path/to/_codegen
    /path/to/php generate.php TestArchives
    
  2. 以下2つのファイルが生成されたことを確認します。
  3. TestArchivesActionクラスのexecuteメソッドに必要な処理を記述します。パラメータは以下の3つです。
  4. URLとして渡されたパラメータは$contextに格納されています。
    $date = $context->getUrl(2);   // $date = 20051201
  5. リクエストパラメータを取得するためには以下のように記述します。 パラメータのサニタイズはNullバイト文字列の除去以外行っていません。必要に応じて処理してください。
    $request = $context->getRequest();
    $name = $request->get('name');
    
  6. セッションを利用する場合は以下のように記述します。
    $session = $context->getSession();
    $session->set('foo', $foo);
    $foo = $session->get('foo');
    
  7. テンプレートに値を設定する場合は以下のように記述します。
    $view->assign('foo', $foo);
  8. 条件によって表示させるテンプレートを変更したい場合、例えば Error.tpl を表示する場合は以下のように記述します。 TestArchives.tplを表示させる場合はこの処理は必要ありません。Moony側であらかじめ設定されています。
    $view->setTemplate('Error.tpl');

動作概要

  1. /foo.htmlにアクセスがあった場合、mod_rewriteによって/dispatcher.php?/fooにリクエスト内容が書き換えられる。
  2. dispatcher.phpはMoony.phpをinclude、Moonyクラスのインスタンスを生成する。
  3. Moonyはクエリー文字列を解析、アクション名称を決定してMoony_Controllerのインスタンスを生成する。
  4. Moony_ControllerはMoony_ErrorHandlerのインスタンスを生成、registerメソッドを呼び出して、エラーハンドラの設定を行う。
  5. Moony_ControllerはMoony_Requestのインスタンスを生成、リクエストパラメータを格納する。
  6. Moony_ControllerはMoony_Sessionのインスタンスを生成、セッションを開始する。
  7. Moony_ControllerはMoony_Contextのインスタンスを生成、Moony_RequestとMoony_Sessionのインスタンスを格納する。
  8. Moony_ControllerはMoony_Viewのインスタンスを生成、デフォルトでアクション名称と同一のテンプレート名称を設定する。
  9. Moony_Controllerはアクション名称に従ってMoony_Actionのサブクラスをincludeしてインスタンス生成を試みる。
  10. アクションクラスのファイルが存在しない場合、Moony_Viewのdisplayメソッドを呼び出して処理を終了する。
  11. アクションクラスのインスタンス生成に成功した場合、アクションクラスのexecuteメソッドを呼び出す。 引数として、先ほど生成したMoony_Context、Moony_Viewのインスタンスを受け渡す。
  12. アクションクラスの処理を行う。
  13. Moony_ControllerはMoony_Viewのdisplayメソッドを呼び出して、処理を終了する。

CVSリポジトリ

CVSのリポジトリを公開しています。 匿名チェックアウトするには:

cvs -d:pserver:anonymous@cvs.sourceforge.jp:/cvsroot/moony login
cvs -z3 -d:pserver:anonymous@cvs.sourceforge.jp:/cvsroot/moony co Moony

ライセンス

MoonyはPHPライセンスに基づいて配布されています。

作っている人

Moonyは猫耳舎山岡広幸が個人的に作成しているアプリケーションです。

変更履歴

詳細に関してはパッケージに同梱されているCHANGELOGを参照してください。