当前位置: 首页 > 面试题库 >

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

璩无尘
2023-03-14
问题内容

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

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

有什么方法可以获取在Profile类中定义的CONST的列表吗?据我所知,最接近的option(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')

问题答案:

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

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


 类似资料:
  • 问题内容: 我知道您可以使用字符串连接彼此创建全局常量: 将打印’foobar’。 但是,尝试使用类常量执行相同操作时遇到错误。 foo2的定义没有问题,但是声明const bar会出错 解析错误:语法错误,意外的“。”,期望为“,”或“;” 我也尝试过使用sprintf()之类的函数,但它比字符串连接器’。’更不喜欢左括号。 那么,除了像foo2这样的琐碎的设置情况之外,还有什么方法可以彼此创建

  • 问题内容: 我可以使用Markdown在段落上定义类名吗?如果是这样,怎么办? 问题答案: Dupe:如何在Markdown中设置HTML类属性? 本机?不是,但… 不,Markdown的语法不能。您可以通过Markdown Extra 设置ID值。 如果愿意,可以使用常规HTML,并添加属性以继续在HTML元素内进行markdown转换。但这需要Markdown Extra。 可能的解决方案:(

  • 我有这样一个类,它从application.properties获取配置,以创建连接到数据库的驱动程序(im使用jdbc连接到我的数据库): 我还有一个名为JdbcDao的抽象类来创建连接到数据库所必需的所有工具: 然后,我有了那个jdbc抽象类的具体表示: 但是当我做新的JdbcUserDao()时,我有一个NPE,因为应用程序上下文没有被注入,这会在尝试获取自定义bean时导致一个空指针。 堆

  • 我需要在一个应用程序中为同一个API使用springdocs定义两个不同的OpenApi定义:一个用于内部开发人员,一个用于外部开发人员。外部定义将包括内部定义中的一些操作,但不是所有操作。 我已经考虑过使用GroupedOpenApi创建这两个定义,但这需要我将应该从外部定义中排除的endpoint移动到单独的RestController中,并移动到排除的包中,该包不会包含在外部开发人员的定义中

  • 问题内容: 如何获得在Python中定义方法的类? 我想要以下示例打印“ ”: 问题答案:

  • 问题内容: 加载脚本后,我立即发出Ajax请求以获取一些翻译。自从我在页面底部加载脚本以来,这应该总是在文档准备好之后返回,但是我仍然好奇是否有可能在文档准备就绪状态下获得Deferred Object 。 这样,可以在执行其他任何操作之前确保文档都准备就绪并且Ajax调用成功返回,例如: 问题答案: 您可以使用data()将延迟的对象与文档相关联,然后在处理程序中将它解决()。这样,您应该可以将