2

在我的应用程序日志文件夹中,我多次看到以下错误日志,为什么会出现这个日志,我想知道在什么情况下会出现这个日志。

WARNING deprecated  JRegistry::getValue() is deprecated. Use get instead

我了解,函数 getValue() 在 2.5.14 中被删除。

我想知道,这个错误日志是在什么情况下发生的。

4

2 回答 2

2

这很简单——当在代码中使用 JRegistry::getValue() 时添加了这个日志条目。例如考虑这部分代码:

$registry = new JRegistry;  
$value = $registry->getValue('myVal');

使用$registry->getValue('myVal');将添加这样的日志条目。开发人员应该改用这个:

$value = $registry->get('myVal');

希望你现在清楚了。

于 2013-09-11T14:30:41.620 回答
0

Joomla 日志提供警告,但不提供其来源(“违规”功能)。

该错误是由 JRegistry 类产生的,在:

libraries/joomla/registry/registry.php:583.

你可以做几件事之一,大多数是相当明显的:

  1. 在整个项目或其中的可疑部分中搜索“有罪”的表达式,例如‑>getValue(,可能使用正则表达式。这不是最优的,因为其他类也有getValue()方法。
  2. 如果由于执行的操作而导致错误出现在日志中,则可以在代码中设置断点,启动调试会话并轻松捕获使用它的函数。

  3. 更改产生错误的代码以包含调用函数。这可以帮助您确定罪魁祸首,但它涉及编辑核心文件,因此请谨慎使用并将其视为临时修复。一旦发现问题,您可以将文件恢复到其原始状态。执行以下操作:

    $caller = array_shift(debug_backtrace());
    $data = $caller['file'].':'$caller['line'];
    JLog::add('JRegistry::getValue() is deprecated. Use get instead. At: '.$data, JLog::WARNING, 'deprecated');
    

我确实想知道为什么 Joomla 似乎无法配置将堆栈跟踪添加到日志中。

于 2013-09-11T14:52:58.313 回答