2010年12月03日

PHP : グローバル変数の一覧表示(2) / 標準的なスーパーグローバルも表示して関数化

その場でちょっといろいろ見たい時に使えるかもしれません
// *********************************************************
// デバッグ用変数表示関数
// ※ 通常は引数を省略して使用します
// ※ 必要無い場合は、引数に -1 以外をセットします
// ※ $debug_test が 'Y' 以外の場合は常に実行されません
// *********************************************************
function debug_test($type = -1) {

	global $debug_test;

	if ( $debug_test != 'Y' ) {
		return;
	}

	if ( $type === -1 ) {
		// デバッグ用連想配列表示
		print "<hr>";
		print "<pre>";
	
		print "[\$_GET]\n";
		print_r( $_GET );
		print "\n";
	
		print "[\$_POST]\n";
		print_r( $_POST );
		print "\n";
	
		print "[\$_SESSION]\n";
		print_r( $_SESSION );
		print "\n";
	
		print "[グローバル変数]\n";
		// デバッグ用 スーパーグローバル以外のグローバル変数表示
		foreach( $GLOBALS as $Key => $Value  ) {
			if ( strstr( $Key, "_" ) === false ) {
				if ( $Key != 'Key' && $Key != 'Value' && $Key != 'GLOBALS' ) {
					if ( is_array( $Value ) ) {
						print "$Key =>\n";
						print_r($Value);
					}
					else {
						print "$Key => $Value\n";
					}
				}
			}
		}
	
		print "</pre>";
	}

}



posted by at 2010-12-03 23:02 | 関数 | このブログの読者になる | 更新情報をチェックする

2010年07月15日

デバッグ利用 : file_put_contents ( string $filename , mixed $data );

オンラインマニュアル

PHP: file_put_contents - Manual
PHP: print_r - Manual
PHP: implode - Manual

ファイルに簡単に書き込みできるので、デバッグ用のログとして重宝します。特に、アプリが Content-Type の内容として 画像や PDF 等テキスト以外の結果をブラウザに返している時に有効です。

デバッグする内容をファイル名で独立させて、1回の呼び出しで複数のファイルを作成してもいいですし、初回のみ通常書き出しして、2回目以降を FILE_APPEND を使って一般的な LOG として出力してもいいと思います

一つのファイルに出力するのは、全体を見渡す必要がある場合に利用しますが、データ毎に改行が必要ですし、内容によってはセパレータを設定しないとわかり難くなります。ピンポイントのデバッグであれば、単独ファイルのほうが優れている場合もあります
<?

file_put_contents("log01.txt", "開始" );

file_put_contents("log02.txt", "処理中" );

file_put_contents("log03.txt", "終了" );

?>
OK


<?

file_put_contents("log.txt", "開始\n" );

file_put_contents("log.txt", "処理中\n", FILE_APPEND );

file_put_contents("log.txt", "終了\n", FILE_APPEND );

?>
OK


配列の出力方法としては、以下の3つが考えられますが、一つ目は全ての内容が連結された結果となります。2番目は要素一つを一行に出力するテキストとなり、3番目は、print_r の結果をそのまま出力します
<?

file_put_contents("log01.txt", $_SERVER );

file_put_contents("log02.txt", implode("\n",$_SERVER) );

file_put_contents("log03.txt", print_r($_SERVER,true) );

?>
OK





posted by at 2010-07-15 10:22 | 関数 | このブログの読者になる | 更新情報をチェックする