PHP開発・デバッグ用の便利なログ出力関数を作ってみた

presented by 役に立つかもしれないBlog

php_debug_function.jpg

PHP開発者用に役に立つログ出力関数を作ってみました。 画面上に出力したり、ログファイル上に出力したり、FireBug上に出力できたりします。

デバッグが不便なPHP

PHPの開発におけるデバッグは、対象がサーバーのため、クライアントサイドの開発よりも面倒になってしまうものですよね。

そこで、PHPの開発・デバッグ作業で値を状況に合わせていろいろなところにテスト出力できると便利です。 たとえば以下のような出力先とかですね。

値をテスト出力できたらいいな~と思う出力先

これらに値を自由に出力できるユーティリティ関数「printarray」を作ってみました。 普段の開発でもよく使っているので、みなさんのお役に立てば幸いです。

使用前準備

ログファイル上に出力したい場合はprintarray関数を使う前にログファイルのパスを定義しておきます。

また、PEAR::Logライブラリも前もって読み込んでおきます。 Pear::Logのインストール方法についてはこちらを参照してください。

define('MY_LOG', '/path/to/log.txt');
require_once('Log.php');

printarray関数

使いかた

/**
 * 開発用 配列・オブジェクト出力関数
 * 2番目の引数に"log"を指定するとPEAR::logで生成したシステムログファイルに書き込まれます。
 * また、"firebug"を指定すると、FireBug上のコンソールに出力されます。
 * 
 * @param array $ar 出力したい値(配列、オブジェクトなど)
 * @param string $output 出力先(オプション)
 */
function printarray() {
	$ar = func_get_arg(0);
	if (func_num_args()==1) {
		if (!headers_sent()) header('Content-Type: text/html; charset="utf-8"');
		print("<pre>");
		print_r($ar);
		print("</pre>");
	} else {
		if (func_get_arg(1) == "log") {
			if (gettype($logger) != 'object') $logger = &Log::singleton('file', MY_LOG);
			$logger->log(print_r($ar,true), PEAR_LOG_DEBUG);
		} else if (func_get_arg(1) == "firebug") {
			if (gettype($flogger) != 'object') $flogger = &Log::singleton('firebug', '', 'PHP', array('buffering' => true), PEAR_LOG_DEBUG);
			$flogger->log(print_r($ar,true), PEAR_LOG_DEBUG);
		}
	}
}
    このエントリーをはてなブックマークに追加

このページに関連のある記事はこちら

コメントフォーム