概念不细说了,这边记录用Magento单例模式:例如Mage::app(),Mage::getSingleton('catalog/product')
magento工厂模式:一般在xml配置。
magento观察者模式:事件监听,event。如果找到改事件呢?比如Mage::getSingleton('catalog/product')->load(1),会执行哪些事件呢?
在mage.php文件里面
public static function dispatchEvent($name, array $data = array())
{
Varien_Profiler::start('DISPATCH EVENT:'.$name);
Mage::log($name,null,'event.log',true);
$result = self::app()->dispatchEvent($name, $data);
Varien_Profiler::stop('DISPATCH EVENT:'.$name);
return $result;
}
然后就可以在event.log查看改事件
print_r(array_keys($observer->getEvent()->toArray())); 来获取事件名
magento层层调用对象,如何查看当前对象呢?比如:$category=Mage::getModel('catalog/category');
var_dump(get_class($category)); 即可
查看collection中的sql$collection=Mage::getModel('catalog/category')->getCollection();
echo $collection->getSelect();exit();
后台页面,前台页面 开启路径提示 就可以看到block。