Вопрос

Вот как я хотел это сделать, чтобы оно работало в 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