Example #1
0
 public function testFromArray()
 {
     $arr = array('_type' => 'FakeObjectTest_Object', 'foo' => 'bar', 'hasOne' => array('_type' => 'FakeObjectTest_Object', 'hasOneProp' => 'baz'), 'hasMany' => array(array('_type' => 'FakeObjectTest_Object', 'hasManyProp' => 'baz')), 'bar' => 'baz');
     $obj = FakeObject::create_from_array($arr);
     $this->assertNotNull($obj);
     $this->assertInstanceOf('FakeObjectTest_Object', $obj);
     $this->assertInstanceOf('FakeObjectTest_Object', $obj->hasOne);
     $this->assertInstanceOf('FakeObjectTest_Object', $obj->hasMany[0]);
     $this->assertEquals($obj->bar, 'baz');
     $this->assertEquals('baz', $obj->hasOne->hasOneProp);
     $this->assertEquals('baz', $obj->hasMany[0]->hasManyProp);
 }
Example #2
0
 /**
  * Create nested object representation from array,
  * based on "_type" hints.
  *
  * @param Array
  * @return FakeObject
  */
 public static function create_from_array($array)
 {
     // array_walk_recursive doesn't recurse into arrays...
     foreach ($array as &$v) {
         // Convert "has one" relations
         if (is_array($v)) {
             $v = FakeObject::create_from_array($v);
         } elseif (is_array($v)) {
             foreach ($v as &$v1) {
                 if (is_array($v1)) {
                     $v1 = FakeObject::create_from_array($v1);
                 }
             }
         }
     }
     $class = isset($array['_type']) ? $array['_type'] : 'FakeObject';
     unset($array['_type']);
     return new $class($array);
 }
 /**
  * Updates an existing record. Merges with existing data.
  * Use {@link set()} to unset values.
  * 
  * @param  String     $type  
  * @param  String     $key    
  * @param  FakeObject $obj   
  */
 public function update($type, $key, FakeObject $obj)
 {
     $existing = $this->get($type, $key);
     $record = $existing ? array_merge($existing->toArray(), $obj->toArray()) : $obj->toArray();
     $data = $this->getData();
     if (!isset($data[$type])) {
         $data[$type] = array();
     }
     $data[$type][$key] = $record;
     $this->setData($data);
     //		$this->log(sprintf(
     //			'Update fake %s#%s: %s',
     //			$type,
     //			$key,
     //			json_encode($record)
     //		));
 }