/** * buildLines * * @param string $rawResult * * @return array */ private function buildLines($rawResult) { if (preg_match('@^CREATE TABLE `[^`]+` \\(@', $rawResult, $matches)) { $rawResult = substr($rawResult, strlen($matches[0])); } $parseHelper = new ParseHelper(); $lines = array(); while (strlen($rawResult) > 0) { $section = $parseHelper->parseSection($rawResult, ','); $lines[] = $section; $rawResult = substr($rawResult, strlen($section) + 1); if ($parseHelper->isTooManyClosingParenthesis()) { break; } } $lineObjects = []; $keyObjects = []; $constraintObjects = []; foreach ($lines as $line) { $line = trim($line); if ($line[0] == '`') { $lineObject = new Line($line); $lineObjects[$lineObject->getName()] = $lineObject; } elseif (preg_match('@^(PRIMARY |UNIQUE |)KEY @', $line)) { $keyObject = new Key($line); $keyObjects[$keyObject->getName()] = $keyObject; } elseif (preg_match('@^CONSTRAINT @', $line)) { $constraintObject = new Constraint($line); $constraintObjects[$constraintObject->getName()] = $constraintObject; } } $this->setLines($lineObjects); $this->setKeys($keyObjects); $this->setConstraints($constraintObjects); return $rawResult; }