0

私はこのコードを使用しています (注: HELLO_WORLD は決して定義されていません!):

function my_function($Foo) {
    //...
}

my_function(HELLO_WORLD);

HELLO_WORLD定義されるかもしれないし、されないかもしれません。HELLO_WORLDそれが渡されたかどうか、そしてそれが一定であると仮定して渡されたかどうかを知りたいです。の値は気にしませんHELLO_WORLD

このようなもの:

function my_function($Foo) {
    if (was_passed_as_constant($Foo)) {
        //Do something...
    }
}

パラメータが定数または単なる変数であると想定して渡されたかどうかを確認するにはどうすればよいですか?

それが素晴らしいプログラミングではないことはわかっていますが、それが私がやりたいことです。

4

3 に答える 3

0

次のようにできます。

function my_function($Foo) {
    if (defined($Foo)) {
        // Was passed as a constant
        // Do this to get the value:
        $value = constant($Foo);
    }
    else {
        // Was passed as a variable
        $value = $Foo;
    }
}

ただし、関数を呼び出すには文字列を引用符で囲む必要があります。

my_function("CONSTANT_NAME");

また、これは、定義された定数名と同じ値を持つ変数がない場合にのみ機能します。

define("FRUIT", "watermelon");
$object = "FRUIT";
my_function($object); // will execute the passed as a constant part
于 2013-08-13T05:03:16.177 に答える