You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP中如何通过变量调用类常量?报未声明静态属性错误

PHP动态访问类常量的问题解答

你当前的调用方式不可行,核心问题是混淆了类常量与静态属性的访问语法:

  • 类常量通过const声明,必须用类名::常量名的语法访问;
  • 你写的Reason::$variable是静态属性的访问写法,但你的Reason类中并未定义名为$variable的静态属性,因此触发“Access to undeclared static property”错误。

如果需要通过变量动态访问类常量,有两种正确实现方式:

方式一:使用constant()函数

use App\Model\Enum\Reason;

// 变量值需为目标常量的名称,比如要访问REASON常量
$variable = 'REASON';
echo constant(Reason::class . '::' . $variable);

方式二:借助反射类ReflectionClass

use App\Model\Enum\Reason;
use ReflectionClass;

$variable = 'REASON';
$reflection = new ReflectionClass(Reason::class);
echo $reflection->getConstant($variable);

注意:你代码中$variable = 'variable'的取值是'variable',但Reason类里不存在名为VARIABLE的常量,所以即使改用正确方式,也会找不到对应常量。需要将$variable的值改为实际要访问的常量名,比如'REASON'、'ALL'或'TYPE'。

内容的提问来源于stack exchange,提问作者Zegert

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 19:01:13