php - 在 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
解决方案
所以答案是使用一个函数进行持续查找:
$handler = new StreamHandler('/var/log/php/php.log', constant("Monolog\Logger::" . $level));
推荐阅读
- python - MNIST 的 scikit-learn 线性回归内存溢出
- c# - C# WPF ScrollViewer 滚动将帧速率锁定在 30fps,UI 线程利用率非常低
- javascript - 如何在 react js 中创建新门户?
- c# - 如何查找 .net 的源文件 内置函数,如 WriteLine()
- javascript - 将函数传递给 Promise.then 会导致与传递嵌套函数不同的行为
- android - 如何从Android中的URL下载文件?
- node.js - 以快递方式从 POST 请求处理程序发送 WebSocket 消息
- javascript - Uncaught SyntaxError: missing ) 在参数列表之后,找不到错误的解决方案
- macos - 如何在介子中为 pango、harfbuzz、glib 等设置 MACOSX_DEPLOYMENT_TARGET
- elasticsearch - 仅从 ElasticSearch 获取最新记录