CakePHP の Shell で引数を受け取る方法

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;
	}
}

以下のサイトが参考になりました。

コメント

コメントは受け付けていません。