예제 #1
0
 /**
  * Initializes properties with the given values.
  *
  * @param Piece_ORM_Mapper_Common &$mapper
  * @param mixed                   &$subject
  * @param array                   $relationships
  */
 function Piece_ORM_Mapper_ObjectPersister(&$mapper, &$subject, $relationships)
 {
     $metadata =& $mapper->getMetadata();
     if (is_null($subject)) {
         $subject =& new stdClass();
         if ($metadata->getDatatype('created_at') == 'timestamp') {
             $subject->createdAt = null;
         }
         if ($metadata->getDatatype('updated_at') == 'timestamp') {
             $subject->updatedAt = null;
         }
     }
     if (count($relationships)) {
         foreach (Piece_ORM_Mapper_RelationshipType::getRelationshipTypes() as $relationshipType) {
             $associatedObjectsPersisterClass = 'Piece_ORM_Mapper_AssociatedObjectPersister_' . ucwords($relationshipType);
             include_once str_replace('_', '/', $associatedObjectsPersisterClass) . '.php';
             $this->_associatedObjectPersisters[$relationshipType] =& new $associatedObjectsPersisterClass($subject);
         }
     }
     $this->_mapper =& $mapper;
     $this->_subject =& $subject;
     $this->_relationships = $relationships;
     $this->_metadata =& $metadata;
 }
예제 #2
0
 /**
  * Normalizes a relationship definition.
  *
  * @param array $relationship
  * @return array
  * @throws PIECE_ORM_ERROR_INVALID_CONFIGURATION
  */
 function normalizeRelationshipDefinition($relationship)
 {
     if (!array_key_exists('type', $relationship)) {
         Piece_ORM_Error::push(PIECE_ORM_ERROR_INVALID_CONFIGURATION, 'The element [ type ] is required to generate a relationship property declaration.');
         return;
     }
     if (!Piece_ORM_Mapper_RelationshipType::isValid($relationship['type'])) {
         Piece_ORM_Error::push(PIECE_ORM_ERROR_INVALID_CONFIGURATION, 'The value of the element [ type ] must be one of ' . implode(', ', Piece_ORM_Mapper_RelationshipType::getRelationshipTypes()));
         return;
     }
     $relationshipNormalizerClass = 'Piece_ORM_Mapper_RelationshipNormalizer_' . ucwords($relationship['type']);
     include_once str_replace('_', '/', $relationshipNormalizerClass) . '.php';
     $relationshipNormalizer =& new $relationshipNormalizerClass($relationship, $this->_metadata);
     return $relationshipNormalizer->normalize();
 }
예제 #3
0
 /**
  * Initializes properties with the given values.
  *
  * @param Piece_ORM_Mapper_Common &$mapper
  * @param MDB2_Result             &$result
  * @param array                   $relationships
  */
 function Piece_ORM_Mapper_ObjectLoader(&$mapper, &$result, $relationships)
 {
     $this->_result =& $result;
     if (count($relationships)) {
         foreach (Piece_ORM_Mapper_RelationshipType::getRelationshipTypes() as $relationshipType) {
             $associatedObjectsLoaderClass = 'Piece_ORM_Mapper_AssociatedObjectLoader_' . ucwords($relationshipType);
             include_once str_replace('_', '/', $associatedObjectsLoaderClass) . '.php';
             $this->_associatedObjectLoaders[$relationshipType] =& new $associatedObjectsLoaderClass($relationships, $this->_relationshipKeys, $this->_objects, $this->_objectIndexes, $mapper);
         }
     }
     $this->_metadata =& $mapper->getMetadata();
     $this->_mapper =& $mapper;
     $this->_relationships = $relationships;
 }