CakePHPでInflectorクラス

文字列を複数形にしたり、キャメルケースにしたり、アンダースコア区切りにしたり、便利な文字列操作が出来るクラス。
id:ym1173さんの記事でまとめられてるので、使い方はそちらを参照。
http://d.hatena.ne.jp/ym1173/20090917/1253155625


今回このクラスを調べたのは、モデル名を小文字&アンダースコア区切りに変換したかったから。
例えば、「HogeFooBar」→「hoge_foo_bar」みたいな感じ。

CakePHPだと「Inflector::underscore」を使います。

echo Inflector::underscore('HogeFooBar'); //hoge_foo_bar

せっかくなので、自分でも変換メソッドを書いた。

$str_model = 'HogeFooBar';
$str_unsco = underscore($str_model);
if (!$str_unsco) echo 'なにか間違ってるよ!';
echo $str_unsco; //hoge_foo_bar

function underscore($str) {
   if (!$str) return false;
   $_str = $str;
   $ret  = preg_replace('/[A-Z]/', '_$0', $_str);
   $ret  = strtolower($ret);
   $ret  = substr($ret, 1, strlen($ret));
   return $ret;
}

なんか無理やり??