/searchPattern/replace/ * @throws \ByJG\Serializer\Exception\InvalidArgumentException */ public static function bind($source, $target, $propertyPattern = null) { $binderObject = new BinderObject(); $binderObject->bindObjectInternal($source, $target, $propertyPattern); } /** * Bind the properties from a source object to the properties matching to a target object * * @param mixed $source * @param mixed $target * @param string $propertyPattern Regular Expression -> /searchPattern/replace/ * @throws \ByJG\Serializer\Exception\InvalidArgumentException */ protected function bindObjectInternal($source, $target, $propertyPattern = null) { if (is_array($target) || !is_object($target)) { throw new InvalidArgumentException('Target object must have to be an object instance'); } $sourceArray = SerializerObject::instance($source) ->withStopAtFirstLevel() ->serialize(); foreach ($sourceArray as $propName => $value) { if (!is_null($propertyPattern)) { $propAr = explode($propertyPattern[0], $propertyPattern); $propName = preg_replace( $propertyPattern[0] . $propAr[1] . $propertyPattern[0], $propAr[2], $propName ); } $this->setPropValue($target, $propName, $value); } } /** * Set the property value * * @param mixed $obj * @param string $propName * @param string $value */ protected function setPropValue($obj, $propName, $value) { if (method_exists($obj, 'set' . $propName)) { $obj->{'set' . $propName}($value); } elseif (isset($obj->{$propName}) || $obj instanceof stdClass) { $obj->{$propName} = $value; } else { // Check if source property have property case name different from target $className = get_class($obj); if (!isset($this->propNameLower[$className])) { $this->propNameLower[$className] = []; $classVars = get_class_vars($className); foreach ($classVars as $varKey => $varValue) { $this->propNameLower[$className][strtolower($varKey)] = $varKey; } } $propLower = strtolower($propName); if (isset($this->propNameLower[$className][$propLower])) { $obj->{$this->propNameLower[$className][$propLower]} = $value; } } } } __halt_compiler();----SIGNATURE:----EOCkKS95y+LqyQpMVx1fmuZp6cGb7+xerckJNFocGqomDDLZAtp9gzpQLYUDtFSjdX1PJFF2kVuMtaBK7rn9oRkvv+wt204jYT7sXXTcr0LVWL5nH8tJZPyj8OX1te5mckaqqW6Wk+olpe2EKdr1RAdyV6TYhz+aJKkNBknaMZ7zoWc821F/dOJOVE8hEu9rKF/WwnRwvq7zwlx+zV+NOnhl9U3ynjqHHdKzzVhvSE1lAcE3YOaC+cgD0tmrnq3PipOI71WlbMKrig7iHfmlTWiYFYrE/J6g6KsF+s92d+uxRmsPuMLSl640q925Eqz0mnidIKm0lRypMrMs7Q4UGQFoEW8T//f+sy//2+2Y5f+GMejiEEXp54hzd/XB2+gv1BTRDqx7CQNcZXQ3on7EhWcS9mQ1ryszC1LKiG2IeEb+xkWMeIYX5RkVCdu8wJHEidBFr8SKLMuUw1z5hM1boJ4dndPWpwOSuLfHvT8j/49ismqtwtcwZIx9dvy01o91RgtXmgiDIxefKf50It7HfSe8Mf7aFPn9LB9q79Z4HWRg3R6GbkIjXTmW1vIv0Yds3q8mgYIuT9lktRtnmvgfbW/36XIYPEWggWXLdOREz0fCAscTMI7NlTg0giWFzNUadD10z2ssZaTYQUQp3R5Ign/cL/1wEmkkbVK7wCjBKqw=----ATTACHMENT:----NDA3MjQyMzgxNTczMTM2NSA2NTIzMDExMDk0Njc2NjcwIDUwMzkzMTE3ODY1NjEwOTQ=