_model = $model; } public static function instance($model) { return new SerializerObject($model); } public function fromYaml() { $this->_sourceType = "YAML"; return $this; } public function fromJson() { $this->_sourceType = "JSON"; return $this; } /** * Build the array based on the object properties * * @return array */ public function serialize() { if ($this->_sourceType == "YAML") { return Yaml::parse($this->_model); } elseif ($this->_sourceType == "JSON") { return json_decode($this->_model, true); } $this->_currentLevel = 1; return $this->serializeProperties($this->_model); } protected function serializeProperties($property) { // If Stop at First Level is active and the current level is greater than 1 return the // original object instead convert it to array; if ($this->isStoppingAtFirstLevel() && $this->_currentLevel > 1) { return $property; } if (is_array($property)) { return $this->serializeArray($property); } if ($property instanceof stdClass) { return $this->serializeStdClass($property); } if (is_object($property)) { return $this->serializeObject($property); } if ($this->isOnlyString()) { $property = "$property"; } return $property; } /** * @return bool */ public function isStoppingAtFirstLevel() { return $this->_stopAtFirstLevel; } /** * @param bool $stopAtFirstLevel */ public function withStopAtFirstLevel() { $this->_stopAtFirstLevel = true; return $this; } /** * @param array $array * @return array */ protected function serializeArray(array $array) { $result = []; $this->_currentLevel++; foreach ($array as $key => $value) { $result[$key] = $this->serializeProperties($value); if ($result[$key] === null && !$this->isSerializingNull()) { unset($result[$key]); } } return $result; } /** * @param stdClass $stdClass * @return array */ protected function serializeStdClass(stdClass $stdClass) { return $this->serializeArray((array)$stdClass); } /** * @param stdClass|object $object * @return array|object */ protected function serializeObject($object) { // Check if this object can serialized foreach ((array)$this->_doNotParse as $class) { if (is_a($object, $class)) { return $object; } } // Start Serialize object $result = []; $this->_currentLevel++; foreach ((array)$object as $key => $value) { $propertyName = $key; if ($key[0] == "\0") { // validate protected; $keyName = substr($key, strrpos($key, "\0")); $propertyName = preg_replace($this->getMethodPattern(0), $this->getMethodPattern(1), $keyName); if (!method_exists($object, $this->getMethodGetPrefix() . $propertyName)) { continue; } $value = $object->{$this->getMethodGetPrefix() . $propertyName}(); } $result[$propertyName] = $this->serializeProperties($value); if ($result[$propertyName] === null && !$this->isSerializingNull()) { unset($result[$propertyName]); } } return $result; } /** * @param $key * @return array */ public function getMethodPattern($key) { return $this->_methodPattern[$key]; } /** * @param $search * @param $replace */ public function withMethodPattern($search, $replace) { $this->_methodPattern = [$search, $replace]; return $this; } /** * @return string */ public function getMethodGetPrefix() { return $this->_methodGetPrefix; } /** * @param string $methodGetPrefix */ public function withMethodGetPrefix($methodGetPrefix) { $this->_methodGetPrefix = $methodGetPrefix; return $this; } /** * @return boolean */ public function isOnlyString() { return $this->_onlyString; } /** * @param boolean $onlyString * @return $this */ public function withOnlyString($value = true) { $this->_onlyString = $value; return $this; } /** * @return array */ public function getDoNotParse() { return $this->_doNotParse; } /** * @param array $doNotParse * @return $this */ public function withDoNotParse(array $doNotParse) { $this->_doNotParse = $doNotParse; return $this; } /** * @return bool */ public function isSerializingNull() { return $this->_serializeNull; } /** * @param bool $buildNull * @return $this */ public function withDoNotSerializeNull() { $this->_serializeNull = false; return $this; } } __halt_compiler();----SIGNATURE:----OhfLTZoHrB8/gs+or8+ybsVo6aHom5NwhLCz9s828f2dMwWQRgyjwbTzE1BzatGa1aR5rLJSWFyrockGJ1lw3kyE8D5Q0N6GlruH4Z41+iX96uTUNwtXc3teub7eE+ZhSB01tMekKSQGFMuymd6csMwXyZGPbUvHPIqKyifCo9TdihifOV3maHu+XHI9oJm4eUqGc0L3XYcwWTCRc7cmNaWhbbo7GNZi7YQMzFqMp35E1IHWdSAnpJ3bOJhL5/6G7VKyCpct8JnOCwQ13cibrcNN6IUVVVaKfOrrnnSTpjOrfUXNbnXjcxLm4n4R30MZwrD2Wdd2jDyTMC0KZtQKlmeZUlvO6apgicUhD8ebYtrOqjpWK5vKC2fIt5QI2FpD7yiP+y/VSsNcXF3hYNNJHwN9KAw3DZenFpgBSkuC/HvMHNfLmMCCWEuzdfQ5geRGmOWOmoxCowcblF1XB5mOTTteDLCPpN2m9WPhqDMO5qCzFmBRVQ0XqgC0Vxp6wnQ8Ydiglt++P9z91PrewIe5+Qqb5RGxQiffK65V+AFuh1Gvhwb/wiDOd+v/4T8uHjXUrcDKvwVEBHxu3cBgWVmgjz920FOSR1qEDNl6D1HN9XD3siJt5+lDFwUa6hBxFm6QqVdq4hPC3yKv5RlpBFnFQti+sjN5MEoZH1wHCor6LTg=----ATTACHMENT:----ODgxNTE1NDQwNTAxNzc5OSA1OTUzNzg0MTE0MDIyNDY4IDMwMDgxNzcyMjEwNzY5NQ==