CakePHPでシェル/コマンドラインからタスク実行

スポンサーリンク

CakePHP 3でシェル(コマンドライン)により実行するタスクを作成する方法です。Ruby/Rails でいう Rake タスクのようなものを作りたかった。src/Shell/***Shell.php というファイルを作成して処理を実装する。

— 環境 —
PHP 5.5.19
CakePHP 3.1.1

【お知らせ】 英単語を画像イメージで楽に暗記できる辞書サイトを作りました。英語学習中の方は、ぜひご利用ください!
画像付き英語辞書 Imagict | 英単語をイメージで暗記
【開発記録】
英単語を画像イメージで暗記できる英語辞書サービスを作って公開しました
スポンサーリンク

HelloShell タスクの例

以下 Hello World 的な例。

src/Shell/HelloShell.php

実装したメソッドを bin/cake コマンドで呼び出すことができます。

デフォルトでは main() アクションが呼ばれる。

hiThere() を呼び出す。

hiThere() に引数を渡して呼び出す。

シェル中でモデルを使う

モデルを利用するには、initialize() で $this->loadModel() を使ってモデルをロードします。以下は登録ユーザーのEメールを出力するシェルのタスク。

上記の出力のように、Eメール一覧を表示できました。CakePHP 3のシェルタスクは、作成が簡単でなかなか良い感じです。

スポンサーリンク
私は Ruby on Rails の前は、PHP & CakePHP を使っていました(今も使いますけど)。PHP についてはオライリーの本を中心に軽く10冊以上は読み込みました。
 
スポンサーリンク

Leave Your Message!