php - PHP関数に渡された変数の名前を取得しますか?

php debugging

私はこれを一緒に投げて、いくつかのPHPスクリプトのデバッグに役立てました。ご覧のとおり、ずさんですが、もう少し改善します。

私のデバッグ関数には、変数名と変数値の2つの変数が渡されます。

変数を渡すだけで、手動で設定せずに変数の名前を取得できますか?

関数

<?php
function debug($varname, $var)
{
    echo '<br>' . $varname;

    // $var is a STRING
    if (is_string($var)) {
        echo ' (string) = ' . $var . '<br>';

    // $var is an ARRAY
    } elseif (is_array($var)) {
        echo ' (array) = <pre>';
        print_r($var);
        echo '</pre><br>';

    // $var is an INT
    } elseif (is_int($var)) {
        echo ' (int) = ' . $var . '<br>';

    // $var is an OBJECT
    } elseif (is_object($var)) {
        echo ' (object) = <pre>';
        var_dump($var);
        echo '</pre><br>';
    }
}


テスト

$testString = 'just a test!';
$testArray = array(
    'key1' => 'value1',
    'key2' => 'value2',
    'key3' => 'value3'
    );
$testInt = 1234567890;

$testObject = new stdClass;
$testObject->someVar1 = 'testing123';
$testObject->someVar2 = '321gnitset';

debug('$testString', $testString);
debug('$testArray', $testArray);
debug('$testInt', $testInt);
debug('$testObject', $testObject);
?>


結果...

$testString (string) = just a test!

$testArray (array) = 
Array
(
    [key1] => value1
    [key2] => value2
    [key3] => value3
)



$testInt (int) = 1234567890

$testObject (object) = 
object(stdClass)#1 (2) {
  ["someVar1"]=>
  string(10) "testing123"
  ["someVar2"]=>
  string(10) "321gnitset"
}
答え
名前を知りたい場合は、変数の名前の文字列定数を渡して、グローバル配列を使用してそれにアクセスするのはなぜですか(手続き型プログラムの場合)

function foo($var) {
    echo $var; //name of the variable
    echo $GLOBALS[$$var]; //value of the variale
}

$bar = 'a string';
foo('bar');
関連記事

php - PHPとinterbaseのヘルプ

php - ホストのphpプロセスを強制終了

php - あるクラスが別のクラスに依存しているテストファイルを再編成するためのオプション?

php - MySQLのフィールド/行がいつ正常に更新されたかを知るにはどうすればよいですか?

php - PHPでWHMのプラグインを作成することは可能ですか?

php - 動的に生成された画像をキャッシュする

php - Graph APIを使用して投稿の「タイプ」フィールドを取得する

php - アプリケーションまたはデータベースのタイムスタンプ列を更新しますか?

php - Regexを介してアンダースコアと共にUnicode文字を受け入れる

php - サーバーのパブリックフォルダーに送られるすべてのリクエストを処理する1つのPHPファイルを作成することは可能ですか?