2006年09月28日
Ethnaの0.2.0と2.1.2におけるaction_cliの違い

0.2.0ベースで作成したプロジェクトで、2.1.2で動くように修正をかけている場合において、action_cli周りの仕様が少々異なるので注意が必要。
まず、0.2.0で作ったプロジェクトのコントローラーには、action_cliのディレクトリの指定がないので、追記が必要。
appid/app/Hogeprojyect_Controller.php
のディレクトリをいろいろ指定しているところで、
'action_cli' => 'app/action_cli',
そんでもって、action_cli用のエントリポイントを作成
appid/bin/hoge.php
この部分は、以前と変らないけれど、通常のエントリポイントがmainなのをCLIの場合はmain_CLIにする。
第二引数に実行するアクションを指定する。
<?php
chdir(dirname(__FILE__));
include_once('../app/Hogeproject_Controller.php');
ini_set('max_execution_time', 0);
ini_set('mbstring.language', 'Japanese');
ini_set('mbstring.encoding_translation', 1);
ini_set('mbstring.http_input', 'auto');
ini_set('mbstring.http_output', 'EUC-JP');
ini_set('mbstring.internal_encoding', 'EUC-JP');
ini_set('mbstring.detect_order', 'auto');
ini_set('mbstring.substitute_character', 'none');
Hogeproject_Controller::main_CLI('Hogeproject_Controller', 'hoge');
?>
みたいな感じ。
あとは、アクションをaction_cliに保存。←これが変更された部分
呼び出すアクションがHogeなら、
appid/app/action_cli/hoge.php
にアクションを作成
※この部分は、CVSのログを読んだら書いてあった
- ethnaコマンドにadd-action-cliを追加
- [breaking B.C.] main_CLIのアクション定義ディレクトリをaction_cliに変更
-- すいません、後方互換性なくしてます
-- main_CLIで実行するアクションはaction_cliディレクトリ以下に移してくださいです
-- controllerのdirectoryプロパティに'bin'要素を追加
あとは、クラス名の命名でちょっとはまって、Ethnaのソースを読んだ。
結果以下のような形にする必要があることが判明。
Hogeproject_Cli_Form_Hoge
Hogeproject_Cli_Action_Hoge
CLIでActionFormを使う場面が想像できないけれど、とりあえずEthnaのソースに書いてあった。
これで、2.1.2でも問題なく動くようになった。
※skelディレクトリにファイルが存在していると実行時にエラーが出た。←とりあえず削除
投稿者 田中@グリニッジ : 2006年09月28日 15:45
トラックバック
このエントリーのトラックバックURL:
http://blog.tanaka-cs.com/mt/mt-tb.cgi/102
