- 更新日: 2016年1月28日
- PHP & CakePHP
CakePHPでシェル/コマンドラインからタスク実行
スポンサーリンク
CakePHP 3でシェル(コマンドライン)により実行するタスクを作成する方法です。Ruby/Rails でいう Rake タスクのようなものを作りたかった。src/Shell/***Shell.php というファイルを作成して処理を実装する。
— 環境 —
PHP 5.5.19
CakePHP 3.1.1
【お知らせ】 英単語を画像イメージで楽に暗記できる辞書サイトを作りました。英語学習中の方は、ぜひご利用ください!
スポンサーリンク
HelloShell タスクの例
以下 Hello World 的な例。
src/Shell/HelloShell.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<?php namespace App\Shell; use Cake\Console\Shell; class HelloShell extends Shell { public function main() { $this->out('Hello, World'); } public function hiThere($name = 'Anonymous') { $this->out('Hi there, ' . $name); } } |
実装したメソッドを bin/cake コマンドで呼び出すことができます。
デフォルトでは main() アクションが呼ばれる。
1 2 3 4 |
$ bin/cake hello Hello, World |
hiThere() を呼び出す。
1 2 3 4 |
$ bin/cake hello hiThere Hi there, Anonymous |
hiThere() に引数を渡して呼び出す。
1 2 3 4 |
$ bin/cake hello hiThere CakePHP Hi there, CakePHP |
シェル中でモデルを使う
モデルを利用するには、initialize() で $this->loadModel() を使ってモデルをロードします。以下は登録ユーザーのEメールを出力するシェルのタスク。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<?php namespace App\Shell; use Cake\Console\Shell; class HelloShell extends Shell { public function initialize() { parent::initialize(); $this->loadModel('Users'); } public function showUserEmails() { $query = $this->Users->find(); foreach ($query as $user) { var_dump($user->email); } } // ... |
1 2 3 4 5 |
$ bin/cake hello showUserEmails string(17) "admin@example.com" string(18) "normal@example.com" |
上記の出力のように、Eメール一覧を表示できました。CakePHP 3のシェルタスクは、作成が簡単でなかなか良い感じです。
スポンサーリンク
私は Ruby on Rails の前は、PHP & CakePHP を使っていました(今も使いますけど)。PHP についてはオライリーの本を中心に軽く10冊以上は読み込みました。
>> 次の記事 : CakePHPでカラム追加のマイグレーション
<< 前の記事 : CakePHPのbakeコマンドでディレクトリにコントローラー・ビューを生成
- PHP & CakePHP の関連記事
- PHP+MySQLでNo such file or directoryエラー
- bin/cakeコマンドでintlエラーが出る場合の対処(CakePHP)
- CakePHPアプリケーションをCapistranoでデプロイ
- Integrity constraint violation:Column ‘created’ in order clause is ambiguousエラー/CakePHP
- CakePHPでDB関連テーブルのレコード・データを取得
- CakePHPでカラム属性に別名/エイリアスを付ける仮想フィールド
- CakePHPで日付選択フォームのカスタマイズ
- CakePHP3で現在のコントローラー名・アクション名を取得
- PHPインストールでconfigure: error: freetype.h not foundエラー
- CakePHPでログイン後に元のページにリダイレクトさせる
Leave Your Message!