tags:

views:

180

answers:

2

This is how I wanted to do it which would work in PHP 5.3.0+

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

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

But I'm restricted to using PHP 5.2.6. Can anyone think of a simple way to simulate this behaviour without instantiating the class?

A: 

If you absolutly need to access a constant like that, you can do this:

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

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

But, if i were you, I'd try not to use eval.

Juan
+3  A: 

You can accomplish this without using eval in pre-5.3 code. Just use the constant() function:

<?php

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

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

?>
AdamTheHutt