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 __isset($name){ $extraData = $this->jsonExtraData(); return isset($extraData[$name]); } public function __unset($name){ $extra = $this->jsonExtraData(); unset($extra[$name]); $this->setJsonExtraData($extra); } public function __get($name) { return $this->getData($name); } public function __set($name, $value) { $extra = $this->jsonExtraData(); $extra[$name] = $value; $this->setJsonExtraData($extra); return $this; } }