public function replaceDynamicParameter($sql, $parameter) { foreach ($this->_mappings as $property) { $value = TPropertyAccess::get($parameter, $property); $sql = preg_replace('/' . TSimpleDynamicParser::DYNAMIC_TOKEN . '/', str_replace('$', '\\$', $value), $sql, 1); } return $sql; }
function testArrayAccessProperty() { $account = new AccountBis(); $things['more'] = 1; $things['accounts'] = $this->NewAccount6(); $account->More = $things; $this->assertSame(6, TPropertyAccess::get($account, 'More.accounts.ID')); TPropertyAccess::set($account, 'More.accounts.EmailAddress', 'adssd'); $this->assertSame('adssd', TPropertyAccess::get($account, 'More.accounts.EmailAddress')); $this->assertSame(1, TPropertyAccess::get($things, 'more')); }
/** * @param mixed object to obtain the property from. * @param TParameterProperty parameter property. * @return mixed property value. * @throws TSqlMapException if property access is invalid. */ protected function getObjectValue($object, $property) { try { return TPropertyAccess::get($object, $property->getProperty()); } catch (TInvalidPropertyException $e) { throw new TSqlMapException('sqlmap_unable_to_get_property_for_parameter', $this->getID(), $property->getProperty(), is_object($object) ? get_class($object) : gettype($object)); } }
/** * Set the object properties for all the child nodes visited. * @param string parent node id * @param array list of child nodes visited. */ protected function onChildNodesVisited($parent, $nodes) { if (empty($parent) || empty($this->_entries[$parent])) { return; } $parentObject = $this->_entries[$parent]['object']; $property = $this->_entries[$nodes[0]]['property']; $list = TPropertyAccess::get($parentObject, $property); foreach ($nodes as $node) { if ($list instanceof TList) { $parentObject->{$property}[] = $this->_entries[$node]['object']; } else { if (is_array($list)) { $list[] = $this->_entries[$node]['object']; } else { throw new TSqlMapExecutionException('sqlmap_property_must_be_list'); } } } if (is_array($list)) { TPropertyAccess::set($parentObject, $property, $list); } if ($this->_entries[$parent]['property'] === null) { $this->_list[] = $parentObject; } }
/** * Returns true if the result property {@link Type getType()} is of ArrayAccess * or that the actual result object is an array or implements ArrayAccess * @param object result object * @return boolean true if the result object is an instance of ArrayAccess or is an array. */ public function instanceOfArrayType($target) { if ($this->getType() === null) { $prop = TPropertyAccess::get($target, $this->getProperty()); if (is_object($prop)) { return $prop instanceof ArrayAccess; } return is_array($prop); } return $this->getPropertyValueType() == self::ARRAY_TYPE; }
public function testArrayAccess() { $thingamajig = array('a' => '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'); }