/** * Tests \Magento\Framework\DataObject->unsetData() */ public function testUnsetData() { $data = ['key1' => 'value1', 'key2' => 'value2', 'key3' => 3, 'key4' => 4]; $this->_object->setData($data); $this->_object->unsetData('key1'); unset($data['key1']); $this->assertEquals($data, $this->_object->getData()); $this->_object->unsetData(['key2', 'key3']); unset($data['key2']); unset($data['key3']); $this->assertEquals($data, $this->_object->getData()); $this->_object->unsetData(); $this->assertEquals([], $this->_object->getData()); }
/** * Try to unserialize the attribute value * * @param \Magento\Framework\DataObject $object * @return $this */ protected function _unserialize(\Magento\Framework\DataObject $object) { $attrCode = $this->getAttribute()->getAttributeCode(); if ($object->getData($attrCode)) { try { $unserialized = unserialize($object->getData($attrCode)); $object->setData($attrCode, $unserialized); } catch (\Exception $e) { $object->unsetData($attrCode); } } return $this; }
/** * Serialize specified field in an object * * @param DataObject $object * @param string $field * @param mixed $defaultValue * @param bool $unsetEmpty * @return $this */ protected function _serializeField(DataObject $object, $field, $defaultValue = null, $unsetEmpty = false) { $value = $object->getData($field); if (empty($value) && $unsetEmpty) { $object->unsetData($field); } else { $object->setData($field, serialize($value ?: $defaultValue)); } return $this; }
/** * Serialize specified field in an object * * @param \Magento\Framework\DataObject $object * @param string $field * @param mixed $defaultValue * @param bool $unsetEmpty * @return $this */ protected function _serializeField(\Magento\Framework\DataObject $object, $field, $defaultValue = null, $unsetEmpty = false) { $value = $object->getData($field); if (empty($value)) { if ($unsetEmpty) { $object->unsetData($field); } else { if (is_object($defaultValue) || is_array($defaultValue)) { $defaultValue = serialize($defaultValue); } $object->setData($field, $defaultValue); } } elseif (is_array($value) || is_object($value)) { $object->setData($field, serialize($value)); } return $this; }