'foo', 'b' => 'bar', 'c' => new _PropertyAccessTestHelperPublicVar(), 'd' => new _PropertyAccessTestHelperStaticProperties(), 'e' => new _PropertyAccessTestHelperDynamicProperties(), ); $testobj = new _PropertyAccessTestHelperPublicVar(); TPropertyAccess::set($testobj, 'a', $thingamajig); $tmp = TPropertyAccess::get($testobj, 'a'); self::assertTrue(is_array($tmp)); self::assertEquals($thingamajig, $tmp); self::assertEquals('foo', TPropertyAccess::get($testobj, 'a.a')); self::assertEquals('bar', TPropertyAccess::get($testobj, 'a.b')); self::assertTrue(TPropertyAccess::get($testobj, 'a.c') instanceof _PropertyAccessTestHelperPublicVar); self::assertTrue(TPropertyAccess::get($testobj, 'a.d') instanceof _PropertyAccessTestHelperStaticProperties); self::assertTrue(TPropertyAccess::get($testobj, 'a.e') instanceof _PropertyAccessTestHelperDynamicProperties); TPropertyAccess::set($testobj, 'a.c.a', 10); TPropertyAccess::set($testobj, 'a.d.a', 10); TPropertyAccess::set($testobj, 'a.e.a', 10); self::assertEquals(10, TPropertyAccess::get($testobj, 'a.c.a')); self::assertEquals(10, TPropertyAccess::get($testobj, 'a.d.a')); self::assertEquals(10, TPropertyAccess::get($testobj, 'a.e.a')); TPropertyAccess::set($testobj, 'a.c.c', 30); TPropertyAccess::set($testobj, 'a.d.c', 30); TPropertyAccess::set($testobj, 'a.e.c', 30); self::assertEquals(30, TPropertyAccess::get($testobj, 'a.c.c')); self::assertEquals(30, TPropertyAccess::get($testobj, 'a.d.c')); self::assertNull(TPropertyAccess::get($testobj, 'a.e.c')); self::assertNull(TPropertyAccess::get($testobj, 'a.e.C')); self::setExpectedException('TInvalidPropertyException'); TPropertyAccess::get($testobj, 'a.c.C'); self::setExpectedException('TInvalidPropertyException'); TPropertyAccess::get($testobj, 'a.d.C'); } } class _PropertyAccessTestHelperPublicVar { public $a = 1; public $b = 2; } class _PropertyAccessTestHelperStaticProperties { private $_a = 1; private $_b = 2; public function getA() { return $this -> _a; } public function setA($value) { $this -> _a = $value; } public function getB() { return $this -> _b; } public function setB($value) { $this -> _b = $value; } } class _PropertyAccessTestHelperDynamicProperties { private $_a = 1; private $_b = 2; public function __set($name, $value) { switch(strToLower($name)) { case 'a': $this -> _a = $value; break; case 'b': $this -> _b = $value; break; } } public function __get($name) { switch(strToLower($name)) { case 'a': return $this -> _a; break; case 'b': return $this -> _b; break; default: return null; break; } } } ?>