Mapper.php (1457B)
1 <?php 2 3 namespace Finwo\Mapper; 4 5 use Finwo\Mapper\Driver\JsonDriver; 6 use Finwo\Mapper\Driver\UrlEncodedDriver; 7 8 class Mapper 9 { 10 /** 11 * @return DriverHandler 12 */ 13 protected static function getDriverHandler() 14 { 15 static $dh = null; 16 if (is_null($dh)) { 17 // Build driver handler & register included drivers 18 $dh = new DriverHandler(); 19 $dh->registerDriver('json', new JsonDriver()) 20 ->registerDriver('urlencoded', new UrlEncodedDriver()); 21 } 22 23 return $dh; 24 } 25 26 /** 27 * @param object|array|string $objectOrString 28 * @param object|array $targetObject 29 * 30 * @return $this 31 */ 32 public function map($objectOrString, $targetObject = array()) 33 { 34 // Initialize json-mapper 35 static $mapper = null; 36 if (is_null($mapper)) { 37 $mapper = new \JsonMapper(); 38 } 39 40 // Make the data usable 41 /** @var object|array $data */ 42 $data = $this->getDriverHandler()->deserialize($objectOrString); 43 44 // Map into target 45 if (is_array($data)) { 46 $class = is_object($targetObject) ? get_class($targetObject) : is_array($targetObject) ? null : "$targetObject"; 47 return $mapper->mapArray($data, array(), $class); 48 } else { 49 $mapper->map($data, $targetObject); 50 } 51 52 // Bail before things get complicated 53 return $this; 54 } 55 }