前の記事 ≪:MySQLから直接JSON形式にするためのクラス
次の記事 ≫:HTMLから登録フォームを自動生成するWeb Form Factory

あなたが知らなかったPHPのテクニック集

2006年07月11日-はてなブックマーク

スポンサード リンク
[PR] 英単語を忘却曲線アプリを使って超効率よく記憶する方法
Five Things You Didn't Know You Could Do with PHP
So, if you haven't caught all the new additions or discovered every useful function, start by checking out this list of the Five Things You Didn't Know You Could Do with PHP!

あなたが知らなかったPHPのテクニック集。
もう大体のことは分かっていたと思っていても知らないことって結構あるものですね。

1. switchの使い方
あまり知られていないPHPの構文について」で触れましたが、switchのcaseでは条件式が使えます。
次のように書けて、if で書くよりも可読性がグッと上がる感じでしょうか。

<?php
    switch (TRUE) {
        case (
$age 16):
            echo 
'You cannot drive.';
            break;
        case (
$age 18):
            echo 
'You cannot vote.';
            break;
        case (
$age 21):
            echo 
'You cannot drink.';
            break;
        case (
$age 65):
            echo 
'You should be retired.';
            break;
        default:
            echo 
'Work, work, work...';
            break;
    }
?>

2. print_rの結果を変数取得

古いマニュアルだと、print_r の引数って1個なんですが、最近のマニュアルを見ると、

bool print_r ( mixed expression [, bool return] )

となってます。第二引数にboolで true を指定すると、print_rの結果を変数に格納できます。

//  その使用例
$array = array(1, 2, 3);
$buff  = print_r($array, 1);
echo $buff; // $buff には print_r($array)の結果が入る

print_rの内容をファイルに書き出す」のような方法もありますが、print_rに関してはバッファリングする必要はなくなったんですね。

3. set_error_handlerを使いエラーを分かりやすくする

これはわりと多くの方が知っているのかもしれません。set_error_handlerでエラー時に独自の処理をする方法。
次のルーチンをプログラムにincludeすることで、X-Debugを入れなくとも、割りとリッチなエラー画面を表示できるようになるでしょう。

<?php
function my_handler ($number$message$file$line) {
    
// Match the formatting, CSS, etc., for your site's style!
    
echo '<pre>';
    echo 
'The following error occurred<br>allegedly on line ' $line ' of file ' $file '<br>' $message '';
    echo 
'The existing variables are:' print_r($GLOBALS1) . '';
    echo 
'</pre>';
}
set_error_handler('my_handler');
?>

※独自エラー画面の例


4. glob 関数で複数のファイルタイプを1回で検索

glob("*.jpg"); のようにglobを使っていた人も多いと思いますが、次のようにすることで、jpg, jpeg, gif のファイルが一回で配列に取得可能です。
$files = glob ("{*.jpg,*.jpeg,*.gif}",  GLOB_BRACE);

第一引数は、{} で囲って , で区切り、第二引数に GLOB_BRACE を渡すだけです。

----

といった感じで、既に知っている関数だから調べる必要はないや、と思っていても、改めてマニュアルを見るとより便利になっていたりするのでたまに見てみるのもよいですね。

関連の記事検索:PHP, チュートリアル, プログラミング
スポンサード リンク

By.KJ : 2006年07月11日 09:09 livedoor Readerで購読 Twitterに投稿

間違いの指摘をしていただける方はメール、あるいはTwitter/FBでお願いします(クリック)