/** * Compares keys * * @param Table $table * @param string $prefix * * @return string[] * @throws \Exception */ private function equalsKeys(Table $table, $prefix) { $thisKeys = $this->getKeys(); $tableKeys = $table->getKeys(); $errors = []; foreach ($thisKeys as $key) { if (array_key_exists($key->getName(), $tableKeys)) { $errors = array_merge($errors, $key->equals($tableKeys[$key->getName()], $prefix)); } } $thisKeyNames = array_keys($thisKeys); $tableKeyNames = array_keys($tableKeys); $diff = array_diff($tableKeyNames, $thisKeyNames); if (!empty($diff)) { $errors[] = $prefix . 'Extra Keys: ' . "\n" . implode("\n", $diff); } $diff = array_diff($thisKeyNames, $tableKeyNames); if (!empty($diff)) { $errors[] = $prefix . 'Missing Keys: ' . "\n" . implode("\n", $diff); } return $errors; }