Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
PersistedObjectHandler.php
Go to the documentation of this file.
1 <?php
8 
11 
13 {
14  const HOOK_SCOPE = "hook";
15  const TEST_SCOPE = "test";
16  const SUITE_SCOPE = "suite";
17 
23  private static $INSTANCE;
24 
29  private $hookObjects = [];
30 
35  private $testObjects = [];
36 
41  private $suiteObjects = [];
42 
46  private function __construct()
47  {
48  // Empty Constructor
49  }
50 
57  public static function getInstance()
58  {
59  if (!self::$INSTANCE) {
60  self::$INSTANCE = new PersistedObjectHandler();
61  }
62  return self::$INSTANCE;
63  }
64 
75  public function createEntity(
76  $key,
77  $scope,
78  $entity,
79  $dependentObjectKeys = [],
80  $overrideFields = [],
81  $storeCode = ""
82  ) {
83  $retrievedDependentObjects = [];
84  foreach ($dependentObjectKeys as $objectKey) {
85  $retrievedDependentObjects[] = $this->retrieveEntity($objectKey, $scope);
86  }
87 
88  $retrievedEntity = DataObjectHandler::getInstance()->getObject($entity);
89  $persistedObject = new DataPersistenceHandler(
90  $retrievedEntity,
91  $retrievedDependentObjects,
92  $overrideFields
93  );
94 
95  $persistedObject->createEntity($storeCode);
96 
97  if ($scope == self::TEST_SCOPE) {
98  $this->testObjects[$key] = $persistedObject;
99  } elseif ($scope == self::HOOK_SCOPE) {
100  $this->hookObjects[$key] = $persistedObject;
101  } else {
102  $this->suiteObjects[$key] = $persistedObject;
103  }
104  }
105 
114  public function updateEntity($key, $scope, $updateEntity, $dependentObjectKeys = [])
115  {
116  $retrievedDependentObjects = [];
117  foreach ($dependentObjectKeys as $objectKey) {
118  $retrievedDependentObjects[] = $this->retrieveEntity($objectKey, $scope);
119  }
120 
121  $originalEntity = $this->retrieveEntity($key, $scope);
122  $originalEntity->updateEntity($updateEntity, $retrievedDependentObjects);
123  }
124 
131  public function deleteEntity($key, $scope)
132  {
133  $originalEntity = $this->retrieveEntity($key, $scope);
134  $originalEntity->deleteEntity();
135  }
136 
147  public function getEntity($key, $scope, $entity, $dependentObjectKeys = [], $storeCode = "", $index = null)
148  {
149  $retrievedDependentObjects = [];
150  foreach ($dependentObjectKeys as $objectKey) {
151  $retrievedDependentObjects[] = $this->retrieveEntity($objectKey, $scope);
152  }
153 
154  $retrievedEntity = DataObjectHandler::getInstance()->getObject($entity);
155  $persistedObject = new DataPersistenceHandler(
156  $retrievedEntity,
157  $retrievedDependentObjects
158  );
159  $persistedObject->getEntity($index, $storeCode);
160 
161  if ($scope == self::TEST_SCOPE) {
162  $this->testObjects[$key] = $persistedObject;
163  } elseif ($scope == self::HOOK_SCOPE) {
164  $this->hookObjects[$key] = $persistedObject;
165  } else {
166  $this->suiteObjects[$key] = $persistedObject;
167  }
168  }
169 
179  public function retrieveEntityField($stepKey, $field, $scope)
180  {
181  return $this->retrieveEntity($stepKey, $scope)->getCreatedDataByName($field);
182  }
183 
191  private function retrieveEntity($stepKey, $scope)
192  {
193  // Assume TEST_SCOPE is default
194  $entityArrays = [$this->testObjects, $this->hookObjects, $this->suiteObjects];
195 
196  if ($scope == self::HOOK_SCOPE) {
197  $entityArrays[0] = $this->hookObjects;
198  $entityArrays[1] = $this->testObjects;
199  }
200 
201  foreach ($entityArrays as $entityArray) {
202  if (array_key_exists($stepKey, $entityArray)) {
203  return $entityArray[$stepKey];
204  }
205  }
206 
207  throw new TestReferenceException("Entity with a CreateDataKey of {$stepKey} could not be found");
208  }
209 
214  public function clearTestObjects()
215  {
216  $this->testObjects = [];
217  }
218 
223  public function clearHookObjects()
224  {
225  $this->hookObjects = [];
226  }
227 
232  public function clearSuiteObjects()
233  {
234  $this->suiteObjects = [];
235  }
236 }
elseif(isset( $params[ 'redirect_parent']))
Definition: iframe.phtml:17
$storeCode
Definition: indexer.php:15
$entity
Definition: element.phtml:22
createEntity( $key, $scope, $entity, $dependentObjectKeys=[], $overrideFields=[], $storeCode="")
getEntity($key, $scope, $entity, $dependentObjectKeys=[], $storeCode="", $index=null)
$index
Definition: list.phtml:44