11

これが私がやりたかった方法で、PHP5.3.0以降で機能します。

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

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

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

4

2 に答える 2

10

evalこれは、5.3 より前のコードで使用しなくても実現できます。関数を使用するだけconstantです:

<?php

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

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

?>
于 2008-08-21T10:48:23.407 に答える
-1

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

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

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

しかし、もし私があなたなら、evalを使わないようにします。

于 2008-08-07T23:21:44.877 に答える