Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/127.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何回溯调试magento对象_Php_Magento_Xdebug - Fatal编程技术网

Php 如何回溯调试magento对象

Php 如何回溯调试magento对象,php,magento,xdebug,Php,Magento,Xdebug,他们让我在一个用Magento实现的大型网站上完成一些任务。 我将Netbeans与Xdebug结合使用进行调试(顺便说一句,我使用的是lubuntu oneiric),我发现自己对所有任务都很在行。 我碰巧遇到了一个关于类重新声明的任务,在找到要更改的正确文件时,我浪费了很多时间。 只是为了学习如何正确操作: 任务是更改meta关键字,从类似 <meta name="keywords" content="<?php echo htmlspecialchars($this->

他们让我在一个用Magento实现的大型网站上完成一些任务。
我将Netbeans与Xdebug结合使用进行调试(顺便说一句,我使用的是lubuntu oneiric),我发现自己对所有任务都很在行。
我碰巧遇到了一个关于类重新声明的任务,在找到要更改的正确文件时,我浪费了很多时间。

只是为了学习如何正确操作:
任务是更改meta关键字,从类似

<meta name="keywords" content="<?php echo htmlspecialchars($this->getKeywords()) ?>" />
现在,我找不到一种简单的方法来完成这两种情况下的调试:(
特别是我的情况是,
$this->\u数据['keywords']
在我必须更正的页面上不是空的。

那么,我怎样才能轻松地知道这个对象是如何创建的,尤其是谁填充了
\u数据['keywords']

我花了很长时间自己找到了正确的文件

我不太擅长调试,所以也许我可以用带有xdebug的netbeans来完成,但我无法理解

谢谢

打开终端并

grep 'setKeywords(' app/code/ -rsn 
这将显示设置或使用此变量的位置

grep-ri“关键字”*| grep-v缓存

'-r'表示递归
'-i'表示不区分大小写
“*”表示任何文件名

“|grep-v cache”意味着删除缓存目录中的所有引用

您可以临时创建以下方法:

public function setKeywords($s) {

    echo sprintf('<pre>%s</pre>', print_r(debug_backtrace(), true));
    exit;
}
公共函数集合关键字($s){
echo sprintf('%s',print_r(debug_backtrace(),true));
出口
}

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

出色地使用了横向思维。
public function setKeywords($s) {

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