Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; WP_MatchesMapRegex has a deprecated constructor in /home/araki/blog.ceed.jp/wp-includes/class-wp.php on line 635

Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; Translation_Entry has a deprecated constructor in /home/araki/blog.ceed.jp/wp-includes/pomo/entry.php on line 14

Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; POMO_Reader has a deprecated constructor in /home/araki/blog.ceed.jp/wp-includes/pomo/streams.php on line 12

Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; POMO_FileReader has a deprecated constructor in /home/araki/blog.ceed.jp/wp-includes/pomo/streams.php on line 106

Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; POMO_StringReader has a deprecated constructor in /home/araki/blog.ceed.jp/wp-includes/pomo/streams.php on line 150

Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; POMO_CachedFileReader has a deprecated constructor in /home/araki/blog.ceed.jp/wp-includes/pomo/streams.php on line 189

Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; POMO_CachedIntFileReader has a deprecated constructor in /home/araki/blog.ceed.jp/wp-includes/pomo/streams.php on line 204

Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; WP_Widget_Factory has a deprecated constructor in /home/araki/blog.ceed.jp/wp-includes/widgets.php on line 405

Deprecated: Function get_magic_quotes_gpc() is deprecated in /home/araki/blog.ceed.jp/wp-includes/load.php on line 545

Deprecated: Function create_function() is deprecated in /home/araki/blog.ceed.jp/wp-includes/pomo/translations.php on line 171
CakePHPでコンソールアプリを作る | CEED
Deprecated: Function get_magic_quotes_gpc() is deprecated in /home/araki/blog.ceed.jp/wp-includes/formatting.php on line 3466

Deprecated: Function get_magic_quotes_gpc() is deprecated in /home/araki/blog.ceed.jp/wp-includes/formatting.php on line 3466

Deprecated: Function get_magic_quotes_gpc() is deprecated in /home/araki/blog.ceed.jp/wp-includes/formatting.php on line 3466

CakePHPでコンソールアプリを作る

PHPでコマンドランの簡単な処理を作ることになったので、せっかくなのでCakePHPのShellを使ってみました。
ブログなどでの取り上げも少ないようなのでちょっと覚書的に書いておこうと思います。
使い方は非常に簡単で、/app/vendors/shells/ に、test.php のような名前でファイルを作ります。
このファイルの中身は、Shellクラスをオーバーライドしたものとします。
例えばこんな感じです。
[php]
‘コンストラクト’,
‘initialize’ => ‘初期化処理’,
‘startup’ => ‘開始処理’,
‘main’ => ‘基本処理’,
‘choise’ => ‘選択してください’,
‘suspend’ => ‘中止されました’,
‘openFile’ => ‘ファイルを開いて表示します。パスを入力してください。:’
);

function initialize(){
mb_convert_variables(‘SJIS’, ‘UTF-8′, $this->_str);
$this->out($this->_str['initialize']);
}
function startup(){
$this->out($this->_str['startup']);
}
function main(){
if($this->in($this->_str['choise'], array(‘y’,’q’), ‘y’) == ‘q’){
$this->error(‘line:’.__LINE__.’ on ‘.__FILE__, $this->_str['suspend']);
}else{
$this->hr(1);
$this->out($this->_str['main']);
$this->hr(1);
$input = $this->in($this->_str['openFile']);
echo file_get_contents($input);
}
}
}
?>
[/php]
コマンドラインからのアクセスには、
[code]
cake シェルのクラス名 メソッド名 引数1 引数2,,,,
[/code]
のようになります。メソッド名を省略すると、mainメソッドが呼ばれます。
一番最初の cake は /cake/console/ 配下にあるコマンドなので、あらかじめ /cake/console を環境変数に入れておいた方が使いやすいでしょう。
その上で、APPのディレクトリに移動して上記のようにコマンドをたたきます。
また、別の方法として
[code]
cake -app APPへのパス シェルのクラス名 メソッド名 引数1 引数2,,,,
[/code]
のように明示的に指定すると、どこからでもアクセスできます。

Shellクラスにはコンポーネントと同様に、startup, initialize 等のコールバックメソッドが用意されていますので、初期化処理や定型処理を書いておくのもいいかもしれません。
また、コントローラと同様に、$uses メンバ変数で使用するモデルを指定できるので、コントローラで行う処理と同じ感覚でモデルのデータにアクセスできます。

Windowsのコマンドラインから使用する場合、文字コードがSJISになるので、今回は上記のように、メンバ変数に使用するメッセージ文言を定義しましたが、CakePHPのLocale機能を使って、
[php]
$this->in(__get(‘openFile’));
[/php]
のようにするとより綺麗かも知れません。


Deprecated: Function get_magic_quotes_gpc() is deprecated in /home/araki/blog.ceed.jp/wp-includes/formatting.php on line 3466

Deprecated: Function get_magic_quotes_gpc() is deprecated in /home/araki/blog.ceed.jp/wp-includes/formatting.php on line 3466

Deprecated: Function get_magic_quotes_gpc() is deprecated in /home/araki/blog.ceed.jp/wp-includes/formatting.php on line 3466

Leave a Comment
Deprecated: Function get_magic_quotes_gpc() is deprecated in /home/araki/blog.ceed.jp/wp-includes/formatting.php on line 3466

NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

getting health insurance in new york buy clomid online UK major health insurance companies buy levitra uk online what are wells fargo hours buy finasteride affordable health insurance for children accutane no prescription medical center of trinity viagra online uten resept midwestern university wellness center dapoxetine top individual health insurance companies viagra ireland