php - PHP类常量和php函数常量给出警告

原文 标签 php constants class-constants

我有一个常数,想通过这样的函数返回:

public function getConst($const)
{
    $const = constant("Client::{$const}");
    return $const;
}


但这给我一个错误:

constant(): Couldn't find constant Client::QUERY_SELECT


但是,这确实有效:

public function getConst($const)
{
    return Client::QUERY_SELECT;
}


为什么不?

最佳答案

实际上,这很好用:http://3v4l.org/pkNXs

class Client {
    const QUERY_SELECT = 'foo';
}

$const = 'QUERY_SELECT';
echo constant("Client::{$const}");  // foo


失败的唯一原因是在命名空间中:

namespace Test;

class Client {
    const QUERY_SELECT = 'foo';
}

$const = 'QUERY_SELECT';
echo constant("Client::{$const}");  // cannot find Client::QUERY_SELECT


这是因为无法根据名称空间解析来解析字符串类名称。您必须使用完全限定的类名称:

echo constant("Test\Client::{$const}");


为了简单起见,您可以在此处使用__NAMESPACE__魔术常数。

相关文章:

javascript - 在现有会话中创建计算

php - 在PHP中获取动态选择的类常量的值

php - 在PHP中定义多个常量的代码样式

java - Java或Java库中是否存在用于语言代码的常量?

java - 是否可以将类名作为编译时常量而不用字符串文字硬编码?

c++ - 我可以从现在开始制作一个可变的const吗?

php - 在类常量PHP [duplicate]中组合位标志

php - 从数据库检索后修改HTML关闭标记

php - 将逗号分隔的字符串传递给codeigniter中的in子句

php - PDO“Uncaught exception'PDOException'..当其他未缓冲的查询处于活动状态时,无法执行查询。考虑使用PDOStatement :: fetchAll()。“