joomla 2.5.14 JRegistry :: getValue()已弃用

时间:2013-09-11 08:43:09

标签: joomla joomla2.5

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

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

据我所知,函数getValue()在2.5.14中已经过了。

我想知道,在哪种情况下会出现此错误日志。

2 个答案:

答案 0 :(得分:2)

这很简单 - 在代码中使用JRegistry :: getValue()时会添加此日志条目。例如,考虑这部分代码:

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

使用$registry->getValue('myVal');将添加此类日志条目。开发人员应该使用它:

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

希望现在对你很清楚。

答案 1 :(得分: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');
    
  4. 我确实想知道为什么Joomla似乎没有能力配置将堆栈跟踪添加到日志中。