Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何获取常量的名称?_Php_Constants - Fatal编程技术网

Php 如何获取常量的名称?

Php 如何获取常量的名称?,php,constants,Php,Constants,我能在没有大量案例陈述的情况下得到它吗?看一看 比如(顺便说一句,这很难看,效率也很低): 看一看 比如(顺便说一句,这很难看,效率也很低): 您可以使用[Reflection][1]进行此操作 假设你有下面的班级 class Foo { const STUFF = 1, MORE_STUFF = 3, ... LAST_STUFF = 45; function get_name($id = self::ST

我能在没有大量案例陈述的情况下得到它吗?

看一看

比如(顺便说一句,这很难看,效率也很低):

看一看

比如(顺便说一句,这很难看,效率也很低):


您可以使用
[Reflection][1]
进行此操作

假设你有下面的班级

class Foo {
    const

      STUFF      = 1,
      MORE_STUFF = 3,
      ...
      LAST_STUFF = 45;     

    function get_name($id = self::STUFF)
    {
         $rc = new ReflectionClass ('Foo');
         $consts = $oClass->getConstants ();

         foreach ($consts as $name => $value) {
             if ($value === $id) {
                 return $name;
             }
         }
         return NULL;
    }
}

您可以使用
[Reflection][1]
进行此操作

假设你有下面的班级

class Foo {
    const

      STUFF      = 1,
      MORE_STUFF = 3,
      ...
      LAST_STUFF = 45;     

    function get_name($id = self::STUFF)
    {
         $rc = new ReflectionClass ('Foo');
         $consts = $oClass->getConstants ();

         foreach ($consts as $name => $value) {
             if ($value === $id) {
                 return $name;
             }
         }
         return NULL;
    }
}
PHP:

  • 使用类名中的ReflectionClass
  • 使用getConstants()方法
  • 现在可以扫描getConstants()结果并验证结果值以获取目标名称
  • ========================================

    C#

    你的答案是Jon Skeet写的

    或者使用枚举(将枚举名称转换为字符串很容易:)

    PHP:

  • 使用类名中的ReflectionClass
  • 使用getConstants()方法
  • 现在可以扫描getConstants()结果并验证结果值以获取目标名称
  • ========================================

    C#

    你的答案是Jon Skeet写的

    或者使用枚举(将枚举名称转换为字符串很容易:)


    你必须详细说明;目前它没有多大意义。你打算怎么得到这个名字?从
    $id
    的值开始?为什么需要常量的名称?你打算用这个名字做什么?函数签名意味着你需要传递常数的值,但是函数体只有在传递常数的名字时才正常工作。当您在没有参数的情况下调用该函数时,基本上是在问“是否定义了
    self::1
    defined?”,这肯定不是您想要的。是的,获取常量的尝试很糟糕:(无论如何,我仍然希望获取名称…(并检查其是否已定义)我不确定您是否检查了stackoverflow.And.-1以避免读取这些值。您必须详细说明;目前它没有多大意义。您计划如何获取名称?从
    $id
    的值中?为什么需要常量的名称?您将如何处理该名称?函数签名意味着您需要传递常量的值,但函数体只有在传递常量的名称时才能正常工作。当您在没有参数的情况下调用该函数时,基本上是在问“是否定义了
    self::1
    defined?”,这肯定不是您想要的。是的,获取常量的尝试很糟糕:(无论如何,我仍然想获取名称.)。。(并检查其是否已定义)我不确定你是否检查了stackoverflow.And.-1,因为你没有阅读这些内容。你给出的链接指向的是一个关于C语言的问题,而不是PHP语言。你的答案看起来不像是有效的PHP代码。你给出的链接指向的是一个关于C语言的问题,而不是PHP语言。你的答案看起来不像是有效的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());
    
    public enum Ram{a,b,c}
    Ram MyEnume = Ram.a;
    MyEnume.ToString()