ここは以前の ethna.jp サイトを表示したものです。ここにあるドキュメントはバージョン2.6以降更新されません。
最新のドキュメントは 現在のethna.jp を閲覧してください。現ドキュメントが整備されるまでは、ここを閲覧してください。
Ethna > ドキュメント > 開発マニュアル > ethna-document-dev_guide-app > 複数のエントリポイントを作成する

複数のエントリポイントを作成する

アプリケーション構築手順(1)での例では、エントリポイントは常に1つでしたが、実際のアプリケーションでは様々な事情で、複数のエントリポイントを利用したい場合も出てくるかと思います。

ここでは/index.phpと/admin/index.phpの2つのエントリポイントを作成する例を挙げます。

方法は単純で、単純にエントリポイントを2つ置くだけです。具体的にはまず/index.phpとして以下のようなスクリプトを作成します。

<?php
include_once('/tmp/sample/app/Sample_Controller.php');
Sample_Controller::main('Sample_Controller', 'index');
?>

次に/admin/index.phpに以下のようなスクリプトを作成します。

<?php
include_once('/tmp/sample/app/Sample_Controller.php');
Sample_Controller::main('Sample_Controller', 'admin_index');
?>

以上で完了です。この上なく簡単です。

ただし、この状態では各エントリポイントは実行するアクションを制限していません。ですので、どちらのエントリポイントでも同じアクションを実行することが出来てしまいます。つまり

/index.php?action_login=true

/admin/index.php?action_login=true

も同じアクションと見なされる、ということです。これはあまりカッコよくない上にセキュリティ上問題となる可能性もあります。

ですのでEthnaでは各エントリポイント毎に実行可能なアクションを制限することも可能です。詳細は以下をご参照ください。

see also: エントリポイント毎に実行可能なアクションを制限する

[参考] Ethna_Controller::main()メソッド

なお、Ethna_Controller::main($class_name, $action_name = "", $fallback_action_name = "")メソッドは最低1つ、最大で3つの引数をとります。

$class_name
実行するコントローラのクラス名を指定します*1
$action_name(省略可)
クライアントからアクション名の指定がなかった場合に実行するアクション名を指定します(デフォルトアクション)
また、ここにアクション名の配列を指定すると、そこに指定されたアクション名以外は未定義として扱われます(実行するアクションを制限することが出来ます)
$fallback_action_name(省略可)
クライアントから指定されたアクション名が未定義であった場合に実行されるアクション名を指定します。

*1 なんだかちょっとエレガントではない