CLIを作る際に
ethna -add-action -g=cli test
又は
ethna -add-action –gateway=cli test
とやればコマンドラインからでも叩けるスクリプトが生成されるんだけど
そのままでは直接叩くファイルが生成されない
こういうの
php プロジェクトまでのパス/bin/test.php
というわけで、ethnaコマンドで同時にこのファイルも生成されるよう修正してみた
かなり荒いけど・・・
先ず、skelディレクトリにskel.bin.phpを作成して以下をコピペ
<?php /** * {$action_name}.php * * @author {$author} * @package * @version */ chdir(dirname(__FILE__)); include_once('{$dir_app}/{$project_id}_Controller.php'); ini_set('max_execution_time', 0); {$project_id}_Controller::main_CLI('{$project_id}_Controller', '{$action_name}'); ?>
次に
pearまでのパス\Ethna\class\Plugin\Generator.php
に下記を追加
@@ -108,6 +108,29 @@ return false; } + if(strpos($skel, "cli")){ + $resolved = $this->_resolveSkelfile('skel.bin.php'); + $template = file_get_contents($resolved); + foreach ($macro as $k => $v) { + switch($k){ + case 'project_id': + $v = ucfirst($v); + break; + case 'action_name': + $v = strtolower($v); + $filename = $v; + break; + } + $template = preg_replace("/{\\\$$k}/", $v, $template); + } + file_put_contents( + sprintf("%s/bin/%s.php", + $this->ctl->getBasedir(), + $filename), + $template + ); + } + printf("file generated [%s -> %s]\n", $skel, $entity); return true;
すると、CLIを指定した時に、app/action_cliの中だけでなくbinの中にもファイルが生成される
後はphpで叩くだけ!
CLI専用ジェネレータープラグインとして、ここだけ継承出来るようにしたら汎用性が高くなるかなー
呼び出しメソッド名の先頭がアンダーバーになってるのはEthnaのPHP5対応が行き渡ってないからだと思う・・・
Thanks for your ththugos. It’s helped me a lot.