cakephp1.2 バッチ(Shell)からControllerのメソッドを呼びたい
Shell側は以下のようになる
<?php App::import('Core', 'Controller'); App::import('Controller', 'Users'); // UsersController class SampleShell extends Shell { function initialize() { $this->Users = new UsersController(); } function main() { $this->Users->func(); } }
通常ShellからControllerのメソッドを呼ぶような事はしないんだけど、今回はprotectedなメソッドを持つclass(classAとする)をshellから呼びたかったんだけど、shellはShellを継承しているため(classA)を継承できなくて、同じメソッドをコピーなんてしたくないしとはいえ根底を変えるような面倒なこともしたくないし仕方なくclassAを継承していたControllerを経由してclassAのprotectedなメソッドを呼び出すようにした。
本当だったら継承先以外からアクセスがある時点でprotectedをpublicに変更すべきなんだけど色々と面倒なのでこのように対応したという訳。
【※注意】通常Controllerのpublicなメソッドはアクションとしてブラウザからもアクセスできるため公開してない管理者用の画面とかに限定すること。
死にたい。
低予算で始められるおすすめのFX口座はこちら。
http://s2fx.com/ranking/856.html