* @license http://www.apache.org/licenses/LICENSE-2.0 * @link http://phpsx.org */ class Mapper { /** * Method which can map all fields of a record to an arbitrary class by * calling the fitting setter methods if available * * @param \PSX\Record\RecordInterface $source * @param mixed $destination * @param array $rules * @return void */ public static function map(RecordInterface $source, $destination, array $rules) { if (!is_object($destination)) { throw new InvalidArgumentException('Destination must be an object'); } $data = $source->getProperties(); foreach ($data as $key => $value) { // convert to camelcase if underscore is in name if (strpos($key, '_') !== false) { $key = implode('', array_map('ucfirst', explode('_', $key))); } $method = null; if (isset($rules[$key])) { if (is_string($rules[$key])) { $method = 'set' . ucfirst($rules[$key]); } elseif ($rules[$key] instanceof Rule) { $method = 'set' . ucfirst($rules[$key]->getName()); $value = $rules[$key]->getValue($value, $data); } } else { $method = 'set' . ucfirst($key); } if (is_callable(array($destination, $method))) { $destination->$method($value); } } } } __halt_compiler();----SIGNATURE:----YgUBhAi3wu5p2C4eOKwrHrRksF52qF7YzgGueMlVtg4Q3jwkpZEQtwKkEfDnJnYYXS7GXDHFn0O1EmJDsMZIHe8UleqHjTU1ydojXbYnv3AM72FHcXt3d8zBHIzMpCjHQouKSf8ZFWYWR/KWSlygX6j9gpSmg3B7/zcl7DP3so0G/jKSCiSnn0xDT1yQnqyOq4SPoj5Qp5i48hlXGhhbNzJY3ghIuVbDDhOUwbK9G75nN6Nn7gKPso3RUvfz8a0N47//xTcO8v0aAHOiXvdpvA/HaR/Y7Qb4Oriz+3Dk1ZWjR2P3cnr07HEDsvmA87FilSDc6H/IOBmfGTIh7yNg/qTxb/5fE2OL6jORG7/29jxCR1ShGkhv31ybiqSxBxTRs/ix8fpxLK0vNRA2BIWea0pF+Tol6OtMvNYNycMqo6zpKXgYmNrm/7kuzCocmRB5I8hwADWo95JTyTSDnzgoWusGeUV76DuJhgT/o8WFUkftiXMczhzVHT2ZRGjAaz+Hzjb0CA796Qu0FPTiNr9qgPxLcGDBjTQUlUV6VfNslLJWu39yCTQHG/V8o9VLyQgSTCTE00XIYDyhMh3gnphBjhiQCrJesCXBoiXW6SWlpIrrsdj+5E24LvC44vYFcBJuaMvcmLNWWQ3xgYk0EoGRjGrYvnhqYNKdaKLLowet4D0=----ATTACHMENT:----MzA4NzE2NzAxODIyNDMyNyA1MDAwODY3NjIyMzc2MDk1IDQ0MzA5NDU0NDcyMDAxNjM=