質問

これは、PHP 5.3.0以降で機能する、私がやりたかった方法です。

<?php
    class MyClass
    {
        const CONSTANT = 'Const var';        
    }

    $classname = 'MyClass';
    echo $classname::CONSTANT; // As of PHP 5.3.0
?>

ただし、使用できるのは PHP 5.2.6 に制限されています。クラスをインスタンス化せずにこの動作をシミュレートする簡単な方法を誰か考えられますか?

役に立ちましたか?

解決

を使用せずにこれを達成できます eval 5.3 より前のコード。ただ使用してください constant 関数:

<?php

class MyClass
{
    const CONSTANT = 'Const var';
}

$classname = 'MyClass';
echo constant("$classname::CONSTANT");

?>

他のヒント

そのような定数にどうしてもアクセスする必要がある場合は、次のようにすることができます。

<?php
class MyClass
{
        const CONSTANT = 'Const var';
}

$classname = 'MyClass';
echo eval( 'return '.$classname.'::CONSTANT;' );
?>

しかし、私があなただったら、eval は使用しないようにします。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top