如何在该类中定义的函数中访问类常量?
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());
但是如果我想访问该类中的所有常量列表呢?
答案 0 :(得分:1)
要获取类的所有已定义常量的列表,您需要使用Reflection:
答案 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,
}
这有一个额外的好处,即如果添加更多常量它将继续工作。没有理由假设所有类的常量都以任何方式相关,除非你通过将关系定义为数组来明确地这样做。