PHPでは、定数は変更されない識別子であり、通常はプログラムの実行中に変更されていない値を保持するために通常使用されます。デバッグまたは学習のために、現在のスクリプトで定義されているすべての定数を表示する必要がある場合があります。幸いなことに、PHPは組み込み関数get_defined_constants()を提供し、利用可能なすべての定数に関する情報を一度に取得できます。
この記事では、get_defined_constants()関数を使用する方法を紹介し、読みやすさと実用性を向上させるために、明確で整理された形式で定数値を出力する方法を説明します。
get_defined_constants([bool $ caltaurize = false]):array
この関数は、定義されたすべての定数と対応する値を含む配列を返します。
引数が渡されない場合(またはfalse)、キーとして定数名でフラット配列が返され、値は定数値です。
trueが渡された場合、返された2Dアレイは、コア、 PCRE 、ユーザーなどの定数の「モジュール」に従って分類されます。
ここに、すべての定数を取得して表形式で印刷する方法を示す簡単な例を示します。
<?php
$constants = get_defined_constants(true);
// ユーザー定義の定数のみ
$userConstants = $constants['user'];
echo "<table border='1' cellpadding='5' cellspacing='0'>";
echo "<thead><tr><th>定数名</th><th>一定の値</th></tr></thead><tbody>";
foreach ($userConstants as $name => $value) {
echo "<tr><td>{$name}</td><td>" . htmlspecialchars(print_r($value, true)) . "</td></tr>";
}
echo "</tbody></table>";
?>
この例では、ユーザーカテゴリの下で定数を抽出します。つまり、 define()またはconstキーワードを使用して、スクリプト内のプログラマーによって手動で定義されます。出力コンテンツは、Webページで簡単に表示できる標準のHTMLテーブルです。
すべてのカテゴリで定数を表示し、グループに結果を表示する場合は、次のコードを使用できます。
<?php
$constants = get_defined_constants(true);
foreach ($constants as $category => $constGroup) {
echo "<h2>分類:{$category}</h2>";
echo "<table border='1' cellpadding='5' cellspacing='0'>";
echo "<thead><tr><th>定数名</th><th>一定の値</th></tr></thead><tbody>";
foreach ($constGroup as $name => $value) {
echo "<tr><td>{$name}</td><td>" . htmlspecialchars(print_r($value, true)) . "</td></tr>";
}
echo "</tbody></table><br>";
}
?>
これにより、Core、PCRE、ユーザー、Curl、その他のモジュールなど、各定数カテゴリは個別に表示されます。これは、PHP動作環境に定義された定数が何であるかを深く理解するのに非常に適しています。
JavaScriptやLogging Systemsなどの他のシステムで簡単に使用できるように、機械可読フォームで定数をエクスポートする場合は、JSONに変換できます。
<?php
header('Content-Type: application/json');
echo json_encode(get_defined_constants(true), JSON_PRETTY_PRINT);
?>
このようにして、出力コンテンツ構造は明確で、リモートデバッグやシステムの統合に適しています。
ユーザー定義の定数値をロギング用にリモートサーバーに送信すると仮定すると(たとえばhttp://m66.net/log.php)、これを行うことができます。
<?php
$userConstants = get_defined_constants(true)['user'];
$data = json_encode($userConstants);
// リモートサーバーに送信します
$url = "http://m66.net/log.php";
$options = [
'http' => [
'method' => 'POST',
'header' => "Content-Type: application/json\r\n",
'content' => $data,
],
];
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
?>
この方法は、ツールのデバッグ、APIトラッキング、または検証スクリプトの展開に使用できます。
get_defined_constants()は、システムとユーザーによって定義されたすべての定数を迅速に取得するだけでなく、さまざまな形式で出力および処理する強力な関数です。 Webディスプレイ、ロギング、またはリモコンのいずれであっても、実際のシナリオと組み合わせて柔軟に使用すると、開発効率とシステムの観察性が大幅に向上する可能性があります。
この関数をマスターすることは、PHPランタイムの世界でウィンドウを開くことに相当します。