我在一些类上定义了几个常量,希望得到它们的列表.例如:

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

有没有办法得到Profile类中定义的常量列表?据我所知,最接近的选项(get_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')

推荐答案

你可以用Reflection来做这个.请注意,如果经常这样做,可能需要查看缓存结果.

<?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'
)

Php相关问答推荐

此行动未经授权.升级Laravel时

Laravel 11发送邮箱时奇怪的未定义数组键名称

如何使用PHP停止foreach循环中的重复项?

在WooCommerce管理订单页面中显示区域名称

为什么在我的PHP联系人脚本中开机自检后出现未定义变量错误?

将数组推送到数组时,数组推送()出现问题

如何在PHP中出现弃用警告时触发错误?

Laravel:如何展平多维Eager 加载的集合

是否使用联系人表单7 wpcf7_Feedback_Response输出答复中的html?

Laravel Carbon DiffForHumans选项(年,月,天)

更改WooCommerce checkout 中的错误消息以获得不可用的送货方式

Regex|PHP捕获json字符串中的每个非法双引号

PHP 8.2 弃用日志(log)存储在 Laravel 10.22.0 中的哪里?

wp_insert_post() 和 WordPress 中查询字符串的多个帖子

如何为自定义帖子类型的自定义角色提供功能

如何在 PHP 中对具有相同数组值的值求和

使用其ID查询和捕获与订单相关的其他详细信息的shopware 6方法

Laravel:ArgumentCountError: 函数 App\Mail 的参数太少

Symfony 自定义注销

我想更新表格中的结果并将它们发布到浏览器,但它不起作用