Доступ к атрибуту CONST серии классов - PullRequest
8 голосов
/ 08 августа 2008

Вот как я хотел это сделать, что будет работать в 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. Кто-нибудь может придумать простой способ симулировать это поведение без создания экземпляра класса?

Ответы [ 2 ]

10 голосов
/ 21 августа 2008

Вы можете сделать это без использования eval в коде до 5.3. Просто используйте функцию constant:

<?php

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

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

?>
0 голосов
/ 08 августа 2008

Если вам абсолютно необходим доступ к такой константе, вы можете сделать это:

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

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

Но на вашем месте я бы старался не использовать eval.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...