Prado\Data\SqlMap\DataMapper\TPropertyAccess::set PHP Méthode

set() public static méthode

Sets the property value.
public static set ( &$originalObject, $path, $value )
    public static function set(&$originalObject, $path, $value)
    {
        $properties = explode('.', $path);
        $prop = array_pop($properties);
        if (count($properties) > 0) {
            $object = self::get($originalObject, implode('.', $properties));
        } else {
            $object =& $originalObject;
        }
        if (is_array($object) || $object instanceof \ArrayAccess) {
            $object[$prop] = $value;
        } else {
            if (is_object($object)) {
                $setter = 'set' . $prop;
                if (method_exists($object, $setter) && is_callable(array($object, $setter))) {
                    $object->{$setter}($value);
                } else {
                    $object->{$prop} = $value;
                }
            } else {
                throw new TInvalidPropertyException('sqlmap_invalid_property_type', $path);
            }
        }
    }

Usage Example

Exemple #1
0
 /**
  * Add nested result property to post select queue.
  * @param string post select statement ID
  * @param TResultMap current result mapping details.
  * @param TResultProperty current result property.
  * @param array a result set row retrieved from the database
  * @param object the result object
  */
 protected function enquequePostSelect($select, $resultMap, $property, $row, $resultObject)
 {
     $statement = $this->getManager()->getMappedStatement($select);
     $key = $this->getPostSelectKeys($resultMap, $property, $row);
     $postSelect = new TPostSelectBinding();
     $postSelect->setStatement($statement);
     $postSelect->setResultObject($resultObject);
     $postSelect->setResultProperty($property);
     $postSelect->setKeys($key);
     if ($property->instanceOfListType($resultObject)) {
         $values = null;
         if ($property->getLazyLoad()) {
             $values = TLazyLoadList::newInstance($statement, $key, $resultObject, $property->getProperty());
             TPropertyAccess::set($resultObject, $property->getProperty(), $values);
         } else {
             $postSelect->setMethod(self::QUERY_FOR_LIST);
         }
     } else {
         if ($property->instanceOfArrayType($resultObject)) {
             $postSelect->setMethod(self::QUERY_FOR_ARRAY);
         } else {
             $postSelect->setMethod(self::QUERY_FOR_OBJECT);
         }
     }
     if (!$property->getLazyLoad()) {
         $this->_selectQueue[] = $postSelect;
     }
 }
All Usage Examples Of Prado\Data\SqlMap\DataMapper\TPropertyAccess::set
TPropertyAccess