/** * Compare two values for equality * * @param mixed $left * @param mixed $right * @return boolean */ protected function doCompare($left, $right) { if (is_object($left) && is_object($right)) { $leftClass = $this->doctrineHelper->getEntityClass($left); $rightClass = $this->doctrineHelper->getEntityClass($right); if ($leftClass == $rightClass && $this->doctrineHelper->isManageableEntity($left) && $this->doctrineHelper->isManageableEntity($right)) { $leftIdentifier = $this->doctrineHelper->getEntityIdentifier($left); $rightIdentifier = $this->doctrineHelper->getEntityIdentifier($right); return $leftIdentifier == $rightIdentifier; } } return $left == $right; }
/** * @param array|\Traversable $values * @return array */ protected function convertToPlainArray($values) { $result = array(); foreach ($values as $key => $value) { if (is_object($value) && $this->doctrineHelper->isManageableEntity($value)) { $result[$key] = $this->doctrineHelper->getEntityIdentifier($value); } elseif (is_array($value) || $value instanceof \Traversable) { $result[$key] = $this->convertToPlainArray($value); } else { $result[$key] = $value; } } return $result; }
/** * @param object $entity * @param boolean $manageable * @dataProvider isManageableEntityDataProvider */ public function testIsManageableEntity($entity, $manageable) { if ($manageable) { $entityManager = $this->getMockBuilder('Doctrine\\Orm\\EntityManager')->disableOriginalConstructor()->getMock(); $this->registry->expects($this->once())->method('getManagerForClass')->with($this->doctrineHelper->getEntityClass($entity))->will($this->returnValue($entityManager)); } else { $this->registry->expects($this->once())->method('getManagerForClass')->with($this->doctrineHelper->getEntityClass($entity))->will($this->returnValue(null)); } $this->assertEquals($manageable, $this->doctrineHelper->isManageableEntity($entity)); }