首页 > 解决方案 > 在 PHP 中使用动态变量名调用静态变量

问题描述

我正在尝试实现一个日志库,该库将从应用程序运行的环境中获取当前调试级别:

23    $level = $_SERVER['DEBUG_LEVEL'];
24    $handler = new StreamHandler('/var/log/php/php.log', Logger::${$level});

当我这样做时,代码失败并出现错误:

A valid variable name starts with a letter or underscore,followed by any number of letters, numbers, or underscores at line 24.

我将如何以这种方式使用特定Logger::级别?

更新:

我尝试过拥有$level = "INFO"并更改${$level}$$level. 这些变化都没有帮助。

但是,将第 24 行替换为$handler = new StreamHandler('/var/log/php/php.log', Logger::INFO);并且代码按预期编译和运行。

变量本身在这里声明

PHP Version => 5.6.99-hhvm

标签: phphacklang

解决方案


所以答案是使用一个函数进行持续查找:

$handler = new StreamHandler('/var/log/php/php.log', constant("Monolog\Logger::" . $level));


推荐阅读