あなたが知らなかったPHPのテクニック集
2006年07月11日-
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($GLOBALS, 1) . '';
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 を渡すだけです。
----
といった感じで、既に知っている関数だから調べる必要はないや、と思っていても、改めてマニュアルを見るとより便利になっていたりするのでたまに見てみるのもよいですね。
最新のブログ記事(新着順)
- くちばしフォント【商用可】
- 小説表紙などに使えそうな商用可なフォント「になロマン」
- 筆で書いたようなカナ書体「筆竹仮名B」
- 無料・商用利用可な丸文字ピクセルフォント「マルミーニャM」
- スペースコブラ風フォント
- Next.jsのVercelから商用利用可能なフリー汎用フォント「Geist Font 」
- 無料で使えるいい感じの日本語フォント「しっぽり太ゴシック」
- CSSのみで実装された500種類のローディングアニメーション「CSS Loaders」
- 画像ホバーで様々なエフェクトをかけられる「Izmir」
- CSSのbox-shadowをGUIで生成できる「CSS Box Shadows Generator」
- 過去のエントリ