Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
DiffManager.php
Go to the documentation of this file.
1 <?php
8 
23 
31 {
35  private $comparator;
36 
42  public function __construct(Comparator $comparator)
43  {
44  $this->comparator = $comparator;
45  }
46 
54  public function shouldBeCreated(array $generatedElements, ElementInterface $element)
55  {
56  return !isset($generatedElements[$element->getName()]);
57  }
58 
65  public function shouldBeRemoved(array $generatedElements)
66  {
67  return !empty($generatedElements);
68  }
69 
78  public function registerModification(
79  Diff $diff,
81  ElementInterface $generatedElement
82  ) {
83  if ($element instanceof Column) {
84  $diff->register($element, ModifyColumn::OPERATION_NAME, $generatedElement);
85  } else {
86  $diff = $this->registerRemoval($diff, [$generatedElement]);
87  $diff = $this->registerCreation($diff, $element);
88  }
89 
90  return $diff;
91  }
92 
101  public function registerRemoval(
102  Diff $diff,
103  array $generatedElements
104  ) {
105  foreach ($generatedElements as $generatedElement) {
106  if ($generatedElement instanceof Reference) {
107  $diff->register($generatedElement, DropReference::OPERATION_NAME, $generatedElement);
108  } elseif ($generatedElement instanceof Table) {
109  $diff->register($generatedElement, DropTable::OPERATION_NAME, $generatedElement);
110  } else {
111  $diff->register($generatedElement, DropElement::OPERATION_NAME, $generatedElement);
112  }
113  }
114 
115  return $diff;
116  }
117 
126  {
127  if ($element instanceof Table) {
128  $operation = CreateTable::OPERATION_NAME;
129  } elseif ($element instanceof Column) {
130  $operation = AddColumn::OPERATION_NAME;
131  } else {
133  }
134 
135  $diff->register($element, $operation);
136 
137  return $diff;
138  }
139 
151  public function registerTableModification(Table $declaredTable, Table $generatedTable, Diff $diff)
152  {
153  $diff->register(
154  $declaredTable,
156  $generatedTable
157  );
158  }
159 
168  public function registerRecreation(Table $declaredTable, Table $generatedTable, Diff $diff)
169  {
170  $diff->register(
171  $declaredTable,
173  $generatedTable
174  );
175  }
176 
184  public function shouldBeModified(
186  ElementInterface $generatedElement
187  ) {
188  return !$this->comparator->compare($element, $generatedElement);
189  }
190 }
register(ElementInterface $dtoObject, $operation, ElementInterface $oldDtoObject=null)
Definition: Diff.php:206
elseif(isset( $params[ 'redirect_parent']))
Definition: iframe.phtml:17
registerModification(Diff $diff, ElementInterface $element, ElementInterface $generatedElement)
Definition: DiffManager.php:78
register(ElementInterface $dtoObject, $operation, ElementInterface $oldDtoObject=null)
registerTableModification(Table $declaredTable, Table $generatedTable, Diff $diff)
registerRemoval(Diff $diff, array $generatedElements)
registerCreation(DiffInterface $diff, ElementInterface $element)
shouldBeModified(ElementInterface $element, ElementInterface $generatedElement)
registerRecreation(Table $declaredTable, Table $generatedTable, Diff $diff)
shouldBeCreated(array $generatedElements, ElementInterface $element)
Definition: DiffManager.php:54
$element
Definition: element.phtml:12