extraData; } /** * @param string $extraData * * @return $this */ public function setExtraData($extraData = null) { $this->extraData = $extraData; $this->_extraData_array = json_decode($this->extraData, true); return $this; } /** * @return array */ public function jsonExtraData() { if ($this->_extraData_array == null) { $this->_extraData_array = json_decode($this->extraData, true); } return $this->_extraData_array; } /** * @param mixed $extraData * * @return ExtraDataTrait */ public function setJsonExtraData($extraData) { return $this->setExtraData(json_encode($extraData)); } /** * @param string $key * * @return mixed */ public function getData($key) { $extraData = $this->jsonExtraData(); $value = null; if (isset($extraData[$key])) { $value = $extraData[$key]; } return $value; } public function __call($name, $arguments) { if (substr($name, 0, 3) == 'get') { return $this->__get(substr($name, 3)); } else if (substr($name, 0, 3) == 'set') { return $this->__set(substr($name, 3), $arguments); } else { return null; } } public function __get($name) { return $this->getData($name); } public function __set($name, $arguments) { $extra = $this->jsonExtraData(); $extra[$name] = $arguments[0]; $this->setJsonExtraData($extra); return $this; } }