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;
 }
Esempio n. 2
0
 /**
  * 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);
     }
 }
Esempio n. 3
0
 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);
     }
 }
 /**
  * @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;
 }
Esempio n. 8
0
 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');
 }