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;
 }
Beispiel #2
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'));
 }
 /**
  * @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;
 }
Beispiel #6
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');
 }