他们在用Magento实现的一个巨大网站上给了我一些任务
我使用带有Xdebug的Netbeans进行调试(我在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来做,但我搞不清楚。
感谢
打开终端和
grep 'setKeywords(' app/code/ -rsn
这将显示设置或使用此变量的位置
grep -ri "Keywords" * | grep -v cache
'-r'表示递归
'-i'表示不区分大小写
"*"表示任何文件名
"|grep-v缓存"意味着去掉缓存目录中的任何引用
您可以临时创建方法:
public function setKeywords($s) {
echo sprintf('<pre>%s</pre>', print_r(debug_backtrace(), true));
exit;
}
将此代码添加到具有getKeywords()的同一个类中,这样当有人通过此函数添加数据时,您将看到回溯并了解它是如何发生的