/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:----L9E0Zfjn9tVz6pbU82NONkkWHl8UdkFxiCZFgV6eZ+ZZjEpXGVk7VQlJwCIQHXc6c/7o3QFvHpx1FUD3GD10YGj7dmgTFt1L5AUFFuz2jgsfekuQKrOjGXRbQGrPnwwMubb7lqN0atHcAoD6ijJsjy6nva9MNw/++M7NKqbMaUgAirLTVc9c1Xsmq2wge8HwBMQooR6BsnI6tKiNFh2pFascY89rWjHC0vsZSOnrOwYhwzrN6MJ2iOs+EZfT2vC84UsqKrhl+AYXYrQ1q63cZGY9Sv11PErxIZVGZfD7K5Zi45dEj+0Jd+FSa4zcEj1DWnd+LsT3LzqXsjwCYIJQfBlRh97m4CqymNoguTOOQM1t5g0y5rW56GBTJt2HWUMid7WKTXN0w85AazhjrN1b397/rzkmynk3L//Df3xYRK5WfkedL0qJ19avyj8na79MfNqBkmMXO67ZraCS7rrFE0t+C1rxtBKaDhZTUVUwyzDm2ZNsy19Ndtybw0KI/+Z3G+A6YZrOmvYzJZg7zLNLkvEedWIPxM+/QRENGTTncJDxozhXhoJayeM4n6Wx4nKl7VKyMDVFxkNnmdeC1isrjhzGqyeiIj0Q5ZauS9cn664iCR9COnUSBF4bkED+gf6iGXkrA3xSPmXPLcrP95ModMTERx7nc/u4lumCC+xKEfQ=----ATTACHMENT:----MzU4MTEzMDY4ODE0MjY1NCA3MTcxMDMyMjg1MTI2NDkzIDEyMjMwNjM2MDY1Mzk5Ng==