如何回溯调试magento对象

时间:2012-01-27 10:54:41

标签: php magento xdebug

他们在Magento实现的大型网站上给了我一些任务 我使用Netbeans和Xdebug进行调试(我正在使用lubuntu oneiric btw),我发现自己完成了所有任务。 我碰巧遇到了关于课堂重新申报的任务,我在寻找合适的档案时失去了很多时间。

只是为了学习如何正确地做到这一点:
任务是从类似

的代码开始更改元关键字
<meta name="keywords" content="<?php echo htmlspecialchars($this->getKeywords()) ?>" />

使用Netbeans调试器,我可以轻松打开包含getKeywords()的文件,其中包含:

public function getKeywords()
{
    if (empty($this->_data['keywords'])) {
        $this->_data['keywords'] = Mage::getStoreConfig('design/head/default_keywords');
    }
    return $this->_data['keywords'];
}

现在我找不到一种简单的方法来继续调试两种情况:(
特别是我的情况是$this->_data['keywords']在我必须纠正的页面上不是空的。

那么如何才能轻松了解这个对象是如何创建的,特别是谁填充_data['keywords']? 我花了很长时间才找到合适的文件。

我在调试方面不是那么专业,所以也许我可以用netbeans w / xdebug来做,但我无法弄明白。

由于

3 个答案:

答案 0 :(得分:2)

打开终端并

grep 'setKeywords(' app/code/ -rsn 

这将显示设置或使用此变量的位置

答案 1 :(得分:0)

grep -ri "Keywords" * | grep -v cache

' - r'表示递归
' - i'表示不区分大小写 '*'表示任何文件名
'| grep -v cache'表示删除对缓存目录的任何引用

答案 2 :(得分:0)

您可以暂时创建方法:

public function setKeywords($s) {

    echo sprintf('<pre>%s</pre>', print_r(debug_backtrace(), true));
    exit;
}

将此代码添加到具有getKeywords()的同一个类中,以便当有人通过此函数添加数据时,您将看到回溯并找出它是如何发生的