/** * Load the data by executing the mapped statement. */ protected function fetchListData() { if ($this->_loaded == false) { $this->_innerList = $this->_statement->executeQueryForList($this->_connection, $this->_param); $this->_loaded = true; //replace the target property with real list TPropertyAccess::set($this->_target, $this->_propertyName, $this->_innerList); } }
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')); }
/** * Load cache models from xml mapping. * @param SimpleXmlElement cache node. */ protected function loadCacheModel($node) { $cacheModel = new TSqlMapCacheModel(); $properties = array('id', 'implementation'); foreach ($node->attributes() as $name => $value) { if (in_array(strtolower($name), $properties)) { $cacheModel->{'set' . $name}((string) $value); } } $cache = Prado::createComponent($cacheModel->getImplementationClass(), $cacheModel); $this->setObjectPropFromNode($cache, $node, $properties); foreach ($node->xpath('property') as $propertyNode) { $name = $propertyNode->attributes()->name; if ($name === null || $name === '') { continue; } $value = $propertyNode->attributes()->value; if ($value === null || $value === '') { continue; } if (!TPropertyAccess::has($cache, $name)) { continue; } TPropertyAccess::set($cache, $name, $value); } $this->loadFlushInterval($cacheModel, $node); $cacheModel->initialize($cache); $this->_manager->addCacheModel($cacheModel); foreach ($node->xpath('flushOnExecute') as $flush) { $this->loadFlushOnCache($cacheModel, $node, $flush); } }
/** * 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; } }
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'); }