コード例 #1
0
 /**
  * {@inheritdoc}
  */
 public function find($modelIdentifier)
 {
     $modelName = $this->getModelName();
     $identifierEvent = new ModelIdentifierEvent($modelIdentifier);
     $this->eventDispatcher->dispatch('model.find.before.' . $modelName, $identifierEvent);
     $objectManager = $this->getObjectManager();
     $entity = $objectManager->find($this->entityClassName, $identifierEvent->getIdentifier());
     if ($entity) {
         try {
             $objectManager->initializeObject($entity);
         } catch (EntityNotFoundException $e) {
             $entity = null;
         }
     }
     if ($entity) {
         $this->assertAbstractModelClassName($this->modelClassName);
         $model = $this->modelFactory->create([$entity]);
         $modelEvent = new ModelEvent($model);
         $this->eventDispatcher->dispatch('model.find.after.' . $modelName, $modelEvent);
         return $modelEvent->getModel();
     } else {
         $identifierEvent = new ModelIdentifierEvent($modelIdentifier);
         $this->eventDispatcher->dispatch('model.find.after.not_found.' . $modelName, $identifierEvent);
         return null;
     }
 }
コード例 #2
0
 /**
  * @param bool $isProxy
  * @dataProvider findEntityNotFoundDataProvider
  */
 public function testFindEntityNotFound($isProxy)
 {
     $identifier = 1;
     $this->eventDispatcher->expects($this->at(0))->method('dispatch')->with('model.find.before.test_model', new ModelIdentifierEvent($identifier));
     $objectManager = $this->getMock('Doctrine\\Common\\Persistence\\ObjectManager');
     if ($isProxy) {
         $proxy = new \DateTime();
         $objectManager->expects($this->once())->method('find')->with(self::ENTITY_CLASS, $identifier)->willReturn($proxy);
         $objectManager->expects($this->once())->method('initializeObject')->with($proxy)->willThrowException(new EntityNotFoundException());
     } else {
         $objectManager->expects($this->once())->method('find')->with(self::ENTITY_CLASS, $identifier)->willReturn(null);
     }
     $this->managerRegistry->expects($this->once())->method('getManagerForClass')->with(self::ENTITY_CLASS)->willReturn($objectManager);
     $this->modelFactory->expects($this->never())->method('create');
     $this->eventDispatcher->expects($this->at(1))->method('dispatch')->with('model.find.after.not_found.test_model', new ModelIdentifierEvent($identifier));
     $this->assertNull($this->repository->find($identifier));
 }