CakePHP には Shell があります。バックグラウンドで定期処理させたい場合などは、この Shell で処理を作って cron などで実行するとスマートです。
今回はその Shell から引数を受け取る方法です。引数を受け取りたい状況として、サイトに登録されている記事一覧などを管理者用に HTML ファイルとして出力させたいような場面で、200件表示といった件数を指定する際に便利です。
CakePHP の Shell で引数を入れる
まず Shell の使い方のおさらいですが、引数が無い場合は以下のような書き方になります。
1 | php [cake.php ファイルの場所] [クラス名] [アクション名] -app [appディレクトリの場所] |
そして引数を入れる場合はアクション名の後に入れます。
1 | php [cake.php ファイルの場所] [クラス名] [アクション名] [引数] -app [appディレクトリの場所] |
パスに置き換えると以下のような感じです。
1 | php -c /etc/php.ini /var/www/vhosts/example.com/cakephp/cake/console/cake.php foo bar 100 -app /var/www/vhosts/example.com/cakephp/app |
CakePHP の Shell で引数を受け取る
$this->args に配列で変数が入ってきます。100と入れておけば受け取って変数に格納、存在しなければデフォルトの1を変数に格納するように書いておくと良いでしょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 | <?php class FooShell extends Shell { public function bar() { if(isset($this->args[0])) { $var = $this->args[0]; } else { $var = 1; } echo $var; } } |
以下のサイトが参考になりました。
コメント