コマンドをCakePHPで作成する
最終更新日時:2010-07-26 18:39:05
CakePHP
CakePHP
概要
Web ベースではなく、コマンドラインで実行する PHP スクリプトにも CakePHP を使うことができます。
使用方法
以下、簡単なサンプルです。
<?php class InsertUserShell extends Shell { var $uses = array('User'); function startup() {} function main() { $stdin = fopen("php://stdin", "r"); if ($stdin) { while( ! feof($stdin)) { if ($line = trim(fgets($stdin, 1024))) { $lines = explode(',', $line); $insert_data = array("username" => $lines[0], "password" => $lines[1]); $this->User->create(); $this->User->save($insert_data); } } fclose($stdin); } } } ?>
startup()をオーバーライドすることにより、デフォルトで表示される Welcome to CakePHP・・・のスタートアップ表示が無くなります。
作成した PHP コードは、vendors/shells 以下に保存します。
実行方法
/project/cakephp 以下に CakePHP をインストールし、vendors/shells/insert_user.php という名前で作成した場合には、以下のようにして実行することが出来ます。
% /project/cakephp/cake/console/cake -app /project/cakephp/app insert_user args1 args2 ...
使用方法で紹介したような標準入力からデータを読み込むようなプログラムの場合には、もちろんパイプ等で渡すことが可能です。
% cat user.csv | /project/cakephp/cake/console/cake -app /project/cakephp/app insert_user
コンポーネントを使うには
Shellとして使う場合には、普通に以下のような方法ではコンポーネントは使えないようです。
var $components = array('Auth');
代わりに、以下のようにすると使うことが出来ます。
App::import('Component', 'Auth'); function startup() { $this->Auth = new AuthComponent($this); }