Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Delete.php
Go to the documentation of this file.
1 <?php
7 
17 
23 class Delete implements DeleteInterface
24 {
28  private $metadataPool;
29 
33  private $typeResolver;
34 
38  private $resourceConnection;
39 
43  private $eventManager;
44 
48  private $transactionManager;
49 
53  private $deleteMain;
54 
58  private $deleteAttributes;
59 
63  private $deleteExtensions;
64 
75  public function __construct(
76  MetadataPool $metadataPool,
77  TypeResolver $typeResolver,
78  ResourceConnection $resourceConnection,
79  EventManager $eventManager,
80  TransactionManagerInterface $transactionManager,
81  DeleteMain $deleteMain,
82  DeleteAttributes $deleteAttributes,
83  DeleteExtensions $deleteExtensions
84  ) {
85  $this->metadataPool = $metadataPool;
86  $this->typeResolver = $typeResolver;
87  $this->resourceConnection = $resourceConnection;
88  $this->eventManager = $eventManager;
89  $this->transactionManager = $transactionManager;
90  $this->deleteMain = $deleteMain;
91  $this->deleteAttributes = $deleteAttributes;
92  $this->deleteExtensions = $deleteExtensions;
93  }
94 
101  public function execute($entity, $arguments = [])
102  {
103  $entityType = $this->typeResolver->resolve($entity);
104  $metadata = $this->metadataPool->getMetadata($entityType);
105  $connection = $this->resourceConnection->getConnectionByName($metadata->getEntityConnectionName());
106  $this->transactionManager->start($connection);
107  try {
108  $this->eventManager->dispatch(
109  'entity_manager_delete_before',
110  [
111  'entity_type' => $entityType,
112  'entity' => $entity
113  ]
114  );
115  $this->eventManager->dispatchEntityEvent($entityType, 'delete_before', ['entity' => $entity]);
116  $entity = $this->deleteExtensions->execute($entity, $arguments);
117  $entity = $this->deleteAttributes->execute($entity, $arguments);
118  $entity = $this->deleteMain->execute($entity, $arguments);
119  $this->eventManager->dispatchEntityEvent($entityType, 'delete_after', ['entity' => $entity]);
120  $this->eventManager->dispatch(
121  'entity_manager_delete_after',
122  [
123  'entity_type' => $entityType,
124  'entity' => $entity
125  ]
126  );
127  $this->transactionManager->commit();
128  } catch (\Exception $e) {
129  $this->transactionManager->rollBack();
130  throw $e;
131  }
132  return $entity;
133  }
134 }
__construct(MetadataPool $metadataPool, TypeResolver $typeResolver, ResourceConnection $resourceConnection, EventManager $eventManager, TransactionManagerInterface $transactionManager, DeleteMain $deleteMain, DeleteAttributes $deleteAttributes, DeleteExtensions $deleteExtensions)
Definition: Delete.php:75
$entity
Definition: element.phtml:22
$arguments
$connection
Definition: bulk.php:13