2017-10-01 3 views
0

これを行うには、私はオンラインでの方法やPHPのドキュメントを傷つけることはありません。変数がマジック定数であるかどうかを確認するには?

変数がMagic Constant__FILE__または__DIR__)の場合、フレンドリーで軽い方法でチェックしますか? is_callable()に似ていますか?

$varと照合してif/else条件を実行したいと考えています。

小さな例です。

function test($var) { 

    if ($var == 'string_value') { 

     // Do this... 

    } 

    elseif (is_magic_constant($var)) { 

     // Do this... 

    } 

    else { 

     // Do this... 

    } 

} 

test('string_value'); 
test(__FILE__); 
+0

それの目的は何ですか?私はそれの使い方をあまりよく理解していません。なぜそれが魔法の定数であるかを知る必要がありますか?しかし、私が知る限り、それを確認する機能はありません。 – Qirel

+0

これは意味をなさない – Akintunde007

答えて

0

あなたがtest(__FILE__);を呼び出す場合は、あなたのtest()機能は、完全なファイルパスの文字列を受け取るように、__FILE__はすぐに展開されています。

test('__FILE__');に電話をかけても文字列が受信されますが、その文字列は"__FILE__"になります。defined($var);を介してそれを実行して既知の定数であるかどうかを確認できます。

それがのマジックであるかどうかを確認する方法はありません。したがって、あなたはreserved constants、インストールされたPHP拡張モジュールによって定義された定数、またはアプリケーション内で自分でdefine()という定数から区別することはできません。あなたが確認できるのは、の文字列$varの中に定義された定数の名前と一致するかどうかだけです。

関連する問題