通过名称vs数字调用PHP常量

时间:2018-12-17 21:44:27

标签: php

我需要打印常量名称而不是数字:

configurations {
    localDatabase
}

dependencies {
    compile "org.springframework.boot:spring-boot-starter-web"
    compile "org.springframework.boot:spring-boot-starter-jdbc"

    // compile "..." // Dependency for the real, non-in memory, database

    localDatabase 'com.h2database:h2'
}

task bootRunLocal(type: BootRun, group: ApplicationPlugin.APPLICATION_GROUP, dependsOn: classes) {
    main = 'test.BootApplication'
    classpath = sourceSets.main.runtimeClasspath + configurations.localDatabase

    systemProperty "spring.profiles.active", "local-db-h2"
}

我有一个函数:>>> s = '\ud800' >>> s.encode('UTF-8') Traceback (most recent call last): File "<stdin>", line 1, in <module> UnicodeEncodeError: 'utf-8' codec can't encode character '\ud800' in position 0: surrogates not allowed 在这种情况下,它返回一个数字0或1。

如何使用PHP将const UNKNOWN或PERSON转换为文本,而无需执行以下操作:

class Type
{

    const UNKNOWN = 0;
    const PERSON = 1;
}

但要致电:

entity->getType()

1 个答案:

答案 0 :(得分:2)

实际上,您的问题没有真正的解决方案。一个简单的例子,为什么这在PHP中无法使用:

const VAR1 = 1;
const VAR2 = 1;

这是类常量的总有效用法,但是由于值1有多种用途,因此没有1到任何名称的映射。

也许可以使用反射api返回具有匹配值的第一个常量,但是不建议在生产环境中执行此操作,因为这样做的速度不是很快(而且正如我之前所说,如果您以后可以更改代码)

如果要提高const值的可读性,则应考虑使用字符串作为常量而不是数字的值。