我可以在PHP类上定义CONST吗?

2022-08-30 06:42:51

我在某些类上定义了几个CONST,并希望获得它们的列表。例如:

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

有没有办法获取在类上定义的CONST列表?据我所知,最接近的选项()不会解决问题。Profileget_defined_constants()

我真正需要的是常量名称的列表 - 如下所示:

array('LABEL_FIRST_NAME',
    'LABEL_LAST_NAME',
    'LABEL_COMPANY_NAME')

艺术

array('Profile::LABEL_FIRST_NAME', 
    'Profile::LABEL_LAST_NAME',
    'Profile::LABEL_COMPANY_NAME')

甚至:

array('Profile::LABEL_FIRST_NAME'=>'First Name', 
    'Profile::LABEL_LAST_NAME'=>'Last Name',
    'Profile::LABEL_COMPANY_NAME'=>'Company')

答案 1

为此,您可以使用反射。请注意,如果您经常这样做,则可能需要查看缓存结果。

<?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());

输出:

Array
(
    'LABEL_FIRST_NAME' => 'First Name',
    'LABEL_LAST_NAME' => 'Last Name',
    'LABEL_COMPANY_NAME' => 'Company'
)

答案 2

 $reflector = new ReflectionClass('Status');
 var_dump($reflector->getConstants());

推荐