コマンドを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);
}