PHP访问成员变量使用常量

时间:2013-05-10 23:28:11

标签: php

这是一些可能过度编码的代码的简化示例,但我想使用类常量访问类成员变量,并且想知道是否有比使用$ foo-> __ get下面更简单的语法? / p>

class Foo
{
    const BAR = 'bar';

    private $props = array( self::BAR => 'wee' );

    public function __get($name)
    {
        return $this->props[$name];
    }
}

$foo = new Foo();
echo $foo->__get(Foo::BAR);

2 个答案:

答案 0 :(得分:4)

这也有效:

$foo->{Foo::BAR};

或实施ArrayAccess,然后您可以:

$foo[Foo::BAR]

但为什么不以$foo->bar的身份访问它?你打算经常改变这个常数还是我错过了什么?

答案 1 :(得分:1)

我认为代码看起来不错,但您可以使用构造函数初始化props数组:

class Foo
{
    const BAR = 'bar';

    private $props;

    public function __construct() {
        $this->props = array( self::BAR => 'wee' );
    }

    public function __get($name)
    {
        return $this->props[$name];
    }
}