When trying to implement an observer to catch events 'cataloginventory_stock_item_save_before', I realized that the method _beforeSave()in Mage_CatalogInventory_Model_Stock_Itemoverrides the value Mage_Core_Model_Abstractwithout calling its parent, thereby preventing the sending of ordinary events 'model_save_before'and $this->_eventPrefix.'_save_before'...
In Mage_Core_Model_Abstract:
protected function _beforeSave()
{
Mage::dispatchEvent('model_save_before', array('object'=>$this));
Mage::dispatchEvent($this->_eventPrefix.'_save_before', $this->_getEventData());
return $this;
}
In Mage_CatalogInventory_Model_Stock_Item:
protected function _beforeSave()
{
return $this;
}
Although I am new to Magento, it looks strange to me, especially when you look at many other Magento classes that extend Mage_Core_Model_Abstract, override the method _beforeSave(), but call parent::_beforeSave()(differently, as seen in the following examples).
For example, in Mage_Catalog_Model_Product:
protected function _beforeSave()
{
parent::_beforeSave();
}
In Mage_Catalog_Model_Product_Compare_Item:
protected function _beforeSave()
{
parent::_beforeSave();
return $this;
}
Or in Mage_Catalog_Model_Abstract:
protected function _beforeSave()
{
return parent::_beforeSave();
}
Etc.
Mage_CatalogInventory_Model_Stock_Item _afterSave(), :
Mage_CatalogInventory_Model_Stock_Item:
protected function _afterSave()
{
parent::_afterSave();
return $this;
}
( Magento):
, parent::_beforeSave() Mage_CatalogInventory_Model_Stock_Item?
?
, , 'cataloginventory_stock_item_save_before', - Mage_CatalogInventory_Model_Stock_Item core local parent::_beforeSave(), Mage::dispatchEvent('cataloginventory_stock_item_save_before', ...).
?
( ) Mage_Core_Model_Abstract, , Mage_CatalogInventory_Model_Stock_Item , , _beforeSave() ( , _afterSave ..): Mage_XmlConnect_Model_Application``and Mage_Dataflow_Model_Batch`.
, ...
: , ?