以常量命名的变量变量

时间:2013-01-25 17:08:23

标签: php constants variable-variables

我有以下课程:

class ClassFoo {

const MY_CONSTANT = "bar";

function __construct() {

    $my_object = new stdClass;

    // This does not work
    $my_object->$ClassFoo::MY_CONSTANT = "foo";

    }

}

我正在尝试创建对象$my_object的变量,使其名称等于我定义的常量(ClassFoo::MY_CONSTANT)。 以下不起作用:

$my_object->$ClassFoo::MY_CONSTANT = "foo";

这也不是:

$my_object->$constant("ClassFoo::MY_CONSTANT") = "foo";

必须有一个简单的解决方案,但我似乎无法找到它!

2 个答案:

答案 0 :(得分:2)

<?php 
class ClassFoo {
    const MY_CONSTANT = "bar";

    function __construct() {
        $this->{ClassFoo::MY_CONSTANT} = "foo";
    }
}

$a = new ClassFoo();
var_dump($a);

答案 1 :(得分:-1)

您可以在变量中使用常量并将该变量用作属性名称:

$propertyName = ClassFoo::MY_CONSTANT;
$this->$propertyName = 'foo';