/** * Apply default values for some data set * * @param array $inputData Входные данные * @param array $defaultData Нужные поля * @return array */ public function applyDefaultValues($inputData, array $defaultData = null) { if (!$defaultData) { $defaultData = $this->getDefaultsRules(); } if (!$defaultData) { return $inputData; } $result = ArrayUtils::merge($defaultData, $inputData); return $result; }
public function getColumntConfig(Column $column) { $config = $this->getOption('config'); $configFields = isset($config['fields']) ? $config['fields'] : array(); $result = array(); foreach ($configFields as $configField) { if (isset($configField['match'])) { $isMatched = false; foreach ($configField['match'] as $match) { $isMatched = false; if (isset($match['type'])) { $matchTypes = is_array($match['type']) ? $match['type'] : array($match['type']); $isMatched = in_array($column->getColumnType(), $matchTypes); } if (isset($match['regexp'])) { $isMatched = $isMatched && preg_match($match['regexp'], $column->getFullName()); } $columnLength = $column->getCharacterMaximumLength() ? $column->getCharacterMaximumLength() : $column->getNumericPrecision(); if ($isMatched && isset($match['length'])) { foreach ($match['length'] as $operation => $lengthMatch) { $operation = preg_replace('#\\s+#', '', $operation); switch ($operation) { case '<': $isMatched = $columnLength < $lengthMatch; break; case '>': $isMatched = $columnLength > $lengthMatch; break; case '>=': $isMatched = $columnLength >= $lengthMatch; break; case '<=': $isMatched = $columnLength <= $lengthMatch; break; case '==': $isMatched = $columnLength == $lengthMatch; break; case '=': $isMatched = $columnLength == $lengthMatch; break; default: $isMatched = false; } } } if ($isMatched) { break; } } if ($isMatched) { $result = ArrayUtils::merge($result, $configField); } } } return $result; }
public function run($commandString = array()) { if ($commandString) { if (!is_array($commandString)) { $commandString = 'models ' . $commandString; } $commandString = explode(' ', $commandString); } else { $commandString = $_SERVER['argv']; } if (count($commandString) < 2) { return $this->showUsage(); } $params = new DefaultRouteMatcher("[--output-dir=] " . "[--deploy-dir=] " . "[--config=] " . "[--db-host=] " . "[--db-schema=] " . "[--db-user=] " . "[--db-password=] " . "[--deploy=] " . "[--verbose] " . "[--help] " . "[--force] " . "[--erase] " . "[--cache-dir=] "); $argv = $commandString; array_shift($argv); $consoleParams = $params->match($argv); $host = isset($consoleParams['db-host']) ? $consoleParams['db-host'] : '127.0.0.1'; $dbSchema = isset($consoleParams['db-schema']) ? $consoleParams['db-schema'] : 'test'; $user = isset($consoleParams['db-user']) ? $consoleParams['db-user'] : '******'; $password = isset($consoleParams['db-password']) ? $consoleParams['db-password'] : ''; $dsn = "mysql:host=" . $host . ';' . 'dbname=' . $dbSchema . ';' . 'charset=utf8'; $configParams = ArrayUtils::filterByOriginalArray($consoleParams, array('output-dir', 'deploy-dir', 'config', 'verbose', 'erase', 'force')); $config = new Config($configParams); $db = new Mysql($dsn, $user, $password); $generator = new Generator($config, $db); $generator->run(); }