有时,当寻找方便的事件来挂钩时,我会进行一些探索性编程......
-
Modify Mage::dispatchEvent
加上这个额外的行:
Mage::log($name.'('.implode(',', array_keys($data)).')');
-
标记一个我知道我无法更快捕捉到的起点:
Mage::log(__METHOD__.'::START');
-
标记一个我以后不想捕获的终点:
Mage::log(__METHOD__.'::STOP');
-
观察日志并逐步浏览网站(例如订单提交、正在调查的任何内容)
tailf var/log/system.log
这给了我一个充满无聊数据和正在传递的对象名称的屏幕。除了START
and STOP
我通常不会寻找任何足够具体的东西来 grep ,我必须依靠我的经验来识别可能的引导点。例如,在下订单时,我知道某处经常有“报价”,或者可以通过“付款”对象获取对订单的引用,反之亦然。
然后我必须记住删除我的标记(使用任何类型的版本控制时并不难)。
您使用什么方法来查找事件?不修改核心代码能做到吗?
如果我正在寻找一个特定的事件,通常我会在 Mage.php 中编辑dispatchEvent()并将其添加到顶部(我认为这些是日志的正确参数,不过从内存中编写):
Mage::log( $name, 1, 'events.txt' );
然后我将刷新页面,注释掉该行以防止文件在其中获取额外的事件,然后查看 events.txt 文件以查看为该页面加载触发的所有事件。
确实,这有点老套,但我发现它对于查找名称中包含变量的事件很有用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)