(cakephp)コンソール / シェルの利用
1. コンソールとは
Cakephpのコンソールとは、ブラウザのようなGUIではなく、
コマンドラインやシェルといったCUIを使って実行するアプリケーションを作るしくみを指す。
Cakephpでは、コンソールから実装可能なアプリケーションをシェル(Shell)、シェルの間で共通の処理をタスク(Task)と呼ぶ。
🌟Cakephpが用意しているシェル
- acl (ACL(Access Control LIst)を管理する。ACLでは指定したURLの操作の許可・拒否を設定できる) - api (APIドキュメントを表示できる。たとえば「Console/cake api helper HtmlHelper」のように実行する) - bake (すでに存在するテーブルや、テンプレートからアプリケーションの足場(scaffold)を作ることができる)
2. シェルを自作する
アプリケーションが利用するシェルは、app/Console/Commandディレクトリの下にPHPファイルを作成する。
命名規則 → 「コマンド名+shell.php」
<?php // app/Console/Command/CategoryShell.php class CategoryShell extends AppShell { }
😄カテゴリを一覧表示する処理を作成
CategoryShellクラスにindexというメソッドを追加する。
public $uses = array('Category'); public function index() { $this -> out("id/tname"); foreach ($this -> Category -> find('all') as $category) { $this -> out($category['Category']['id'] . "\t" .$category['Category']['name']); } $ Console/Cake category index id name 1 コンピューター 2 生活 3 グルメ
😄カテゴリーの追加処理を作成
public function add() { $this -> Category -> create(); $this -> Category -> save(array('name' => $this->args[0])); $this -> out('登録しました'); } $ Console/Cake category add 'はじめてのシェル'
😄カテゴリの削除処理を作成
public function delete() { $category = $this->Category->findById($this->args[0]); $this -> out($category['Category']['id'] ."\t" . $category['Category']['name']); if(strlower($this->in('本当に削除していいですか?',array('y', 'n'), 'n') == 'n') { $this->out('終了します'); return; } $this->Category->delete($this->args[0]); $this->out('削除しました'); } $ Console/Cake category delete 4