访问自我类常量

时间:2015-04-07 08:00:43

标签: php class const constants

如何在该类中定义的函数中访问类常量?

class Test{

    const STATUS_ENABLED = 'Enabled';
    const STATUS_DISABLED = 'Disabled';

    public function someMethod(){
        //how can I access ALL the constants here let's say in a form of array
    }

}

我不是要访问每个常量,而是以数组的形式访问所有常量。我看到了类似的东西:

<?php
class Profile {
    const LABEL_FIRST_NAME = "First Name";
    const LABEL_LAST_NAME = "Last Name";
    const LABEL_COMPANY_NAME = "Company";
}


$refl = new ReflectionClass('Profile');
print_r($refl->getConstants());

但是如果我想访问该类中的所有常量列表呢?

2 个答案:

答案 0 :(得分:1)

要获取类的所有已定义常量的列表,您需要使用Reflection:

ReflectionClass对象有一个getConstants()方法

答案 1 :(得分:1)

如果要将所有常量收集为数组,可以使用Reflection

$reflection = new ReflectionClass("classNameGoesHere");
$reflection->getConstants();

然而,这将非常缓慢,而且大多没有意义。更好的想法是简单地声明另一个数组中的所有常量,然后使用它们:

class Test{

    const STATUS_ENABLED = 'Enabled';
    const STATUS_DISABLED = 'Disabled';

    $states = array(
      self::STATUS_ENABLED,
      self::STATUS_DISABLED,

}

这有一个额外的好处,即如果添加更多常量它将继续工作。没有理由假设所有类的常量都以任何方式相关,除非你通过将关系定义为数组来明确地这样做。