2009年12月28日月曜日

CakePHPで知っとくと良いBasics

basicsを読むべし

CakePHPのcake/basics.phpは一度目を通しておいた方がいい。というのも知ってればよく使うから。

関数一覧

そのうち網羅したいね。そのうちね。

関数名 説明
関数名 説明
a($mixed[,$mixed...]) (可変長引数)渡された引数を1つの配列に入れて返す。例: a('a', 'b', 'c') => ['a','b', 'c']
aa($mixed[,$mixed...]) (可変長引数)で渡した引数をキーと値に変換。例: a('a', 'b', 'c', 'd') => ['a' => 'b', 'c' => 'd']
h($string[, $charset]) htmlspecialchars($string,ENT_QUOTES, $charset)のエイリアス。$charsetを指定しないとUTF-8がセットされる。これはビューでも多用するけど、CakePHPコアでも使われいる。ヘルパーとか見てみると、こんなところでhしてる!!と言いたくなる場所がある。2回もやってるところがあるのはおそらく仕様で(&が&になったり)、そういう場合はヘルパのオプションの引数のところでescape => falseをすると意図した通りに動くと思う。

aとaaを使った例

んー、aがarray関数のエイリアスだと思って、お!便利かも!と思ってまとめようと思ったら違ったので、やる気なくなりました。どうですか? aをarray関数にしちゃった方が分かりやすいと思います。

// 普通の書き方
$r = $this->User->find('first', array('conditions' => array('User.name' => 'hoge'));
//basics.phpのを使う場合
$r = $this->User->find('first', aa('conditions', aa('User.name', 'hoge'));

// もしもaがarray関数だったら
$r = $this->User->find('first', a('conditions' => a('User.name' => 'hoge'));
// もしもPHPがJSON記法?をサポートしていたら(個人的趣味)
$r = $this->User->find('first', {'conditions': {'User.name': 'hoge'}});

aaは=>(ダブルアロー演算子?)を打つのがめんどいなーと思ってる人には朗報かもしれないけど、引数が多くなれば読みにくくなるし、直感的に連想配列とは分かりづらい。=>の入力が面倒ならスニペットとかキーバインドで代替してしまえば簡単に克服できる。aとかaaとかせずに、aをarrayのエイリアスにした方がいいと思うんだけどなぁ。

2009年12月21日月曜日

Warning: Module 'xdebug' already loaded in Unknown on line 0

On Leopard(Mac OS X)

Macに最初っから入ってるPHPは微妙ということでportでPHPを入れ直したんですが、その際に+xdebugもしたんだけど、古かったので新しいのを入れ直したら、Warning: Module 'xdebug' already loaded in Unknown on line 0という警告が出るようになった。

最初は無視してたけど、だんだん目障りになってきたので、どうもphp.iniがあやしいと思って調べてみたら、php.iniがたくさんあったw

php --ini

xdebug.iniというファイルが前のxdebug.soを読み込んでいたのでこいつをセミコロンでコメントアウトしたら出なくなりました。