/** * 2015-12-07 * Конечно, хотелось бы задействовать стандартные методы * @see \Magento\Framework\Model\AbstractModel::beforeSave() и * @see \Magento\Framework\Model\AbstractModel::afterSave() * или же * @see \Magento\Framework\Model\ResourceModel\Db\AbstractDb::_beforeSave() и * @see \Magento\Framework\Model\ResourceModel\Db\AbstractDb::_afterSave() * или же * @see \Magento\Framework\Model\ResourceModel\Db\AbstractDb::_serializeFields() и * @see \Magento\Framework\Model\ResourceModel\Db\AbstractDb::unserializeFields() * однако меня смутило, что в случае исключительной ситуации * модель может остаться в несогласованном состоянии: * https://mage2.pro/t/283 * https://mage2.pro/t/284 * Поэтому разработал свои аналогичные методы. * * @override * @see \Magento\Framework\App\Config\Value::save() * @return $this * @throws \Exception */ public function save() { try { $this->dfSaveBefore(); parent::save(); } catch (\Exception $e) { df_log($e); throw df_le($e); } finally { $this->dfSaveAfter(); } return $this; }
/** * 2016-03-17 * @param callable $function * @return mixed * @throws LE */ function df_leh(callable $function) { /** @var mixed $result */ try { $result = $function(); } catch (E $e) { throw df_le($e); } return $result; }