ぐらめぬ・ぜぷつぇんのはてダ(2007 to 2011)

2007年~2011年ごろまで はてなダイアリー に書いてた記事を引っ越してきました。

小ネタ。trigger_errorの簡易ラッパ、dlog()の覚え書き。

YakiBikiのfuncs.phpに入れたやつです。現場でバリバリPHPな人たちはとっくに類似実装を作ってると思いますが、自分としても思いの外便利に使えていますので、自分の為にメモ書き。

<?php
function dlog()
{
    $args = func_get_args();
    $backtrace = debug_backtrace();
    $laststack = array_shift($backtrace);
    $file = $laststack['file'];
    $line = $laststack['line'];

    $_els = array();
    foreach ($args as $a) {
        if (is_scalar($a)) {
            $_els[] = (string)$a;
        } else {
            $_els[] = var_export($a, true);
        }
    }
    $log = "[[ " . implode("\r\n", $_els) . " ]]($file : $line)";

    trigger_error($log, E_USER_NOTICE);
}
?>

debug_backtrace()使ってますので、PHP4.3以上になります。
ポイントとしては、

  • var_export()により、配列だろうがオブジェクトだろうが、気軽にPHPエラーログにダンプできます。
  • 可変引数にしてあるので好きなだけダンプしたい配列やオブジェクトを指定できます。

こんなところでしょうか。

ちなみに、自分は一時的な配列バッファや、explode()の結果を $_els という名前で良く受けます。YakiBikiのコード中もかなり頻出しているはずです。

<?php
...
$_els = explode(',', $csv_line);
foreach ($_els as $_el) { ... }

?>

こんな感じです。これの命名ですが、"elements"の短縮です。なんというか配列の要素ですよー、というのを表現したかっただけです。他に上手いのが(最初に思いついた当初は)思いつかなかった為、これにして、その後ずるずるとマイ・デフォルトになってます。
$_els が配列だとすると、それの各要素を一つずつ受ける時が、単数形の $_el というわけです。