Author: Vojtěch Kohout
コード例 #1
0
ファイル: Entity.php プロジェクト: tharos/leanmapper
 /**
  * Provides an mapper for entity
  *
  * @param IMapper $mapper
  * @throws InvalidMethodCallException
  * @throws InvalidStateException
  */
 private function useMapper(IMapper $mapper)
 {
     if ($this->mapper === null) {
         $newProperties = $this->getReflection($mapper)->getEntityProperties();
         foreach ($this->getCurrentReflection()->getEntityProperties() as $oldProperty) {
             $oldColumn = $oldProperty->getColumn();
             if ($oldColumn !== null) {
                 $name = $oldProperty->getName();
                 if (!isset($newProperties[$name]) or $newProperties[$name]->getColumn() === null) {
                     throw new InvalidStateException('Inconsistent sets of properties detected in entity ' . get_called_class() . '.');
                 }
                 if ($this->row->hasColumn($oldColumn)) {
                     $newColumn = $newProperties[$name]->getColumn();
                     $value = $this->row->{$oldColumn};
                     unset($this->row->{$oldColumn});
                     $this->row->{$newColumn} = $value;
                 }
             }
         }
         $this->mapper = $mapper;
         $this->row->setMapper($mapper);
         $this->currentReflection = null;
     } elseif ($this->mapper != $mapper) {
         // intentionally !=, we want to ensure that types and states are same
         throw new InvalidStateException("Given mapper isn't same as mapper already present in entity " . get_called_class() . '.');
     }
 }