* @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:----qA8TZ0JOx6v4QAal5mK7URbqlu1SjeThIlhN/ZmvsmuqYQhytNfvMd0OoW9fj6GWGJFvYPebQuM4mUJzo0WrjhixhvWvQcA1lIKQcGSIIY6uJ+5vF+fmY2X6yGJuqFtf+/l5XAi8FHXhDEVSWQGtFOaEsoQuflwX6Ez0Nn897htN/rDggmeuteKuXkzXrqCZBLhG8G8VRcZjsEqnQagGI/nmDdpf9psVHPh2uTY7BUxrFV0eDvO6c/8S2op7q5Nfj/LOiZU+mqW2U9SDVemLXFe/KYj/8F7LiinA2m6FSC5QxseSPa9mH5VN2NocwMKXS9GgLQ/ByUpb3O3VX7mDxX0l8pitmQSd9y1Euq0aWep1Pd3fuZAsHXp/eqvug7DepjdLaKHqE7Mi1WOD+/1vwph9+I6+STco6M0NFDx/ZSrrivVUBfaneae+IE38iyuENAmowf1NRfFPbr+MCb30RPqjVh+CdZuvs9xScZJLC5ryhKa3Mwn0vI6rvdDDmt9eGrpsMMcqGYwEJSpUtJZIw144gPQ7SDnXpiRJjWr4neV5IG37iZjomIuAm2FK6tz+Sp3vUhuKxGOHe52AzTlQE34brOCYqsvFBto6nEx8PfD4TGUX4fQ8hkIISY13M/Ubl1e/7KlzaPquXSDyOkU3WWtxIZgNRmhPvvbKI69dQwE=----ATTACHMENT:----MjQwNDY3MzQ3MTE0OTM0MSAxNzI4NTE5MzE3NjgzMzY5IDMyNDQ5MzU2MzM4NDE5ODc=