public function generateModel(SdlTag $tag, $namespace = "Models") { $model = $tag->modelname ? $tag->modelname : ucwords($tag[0]) . 'Model'; $cols = $tag->query("column"); $php = "<?php\n\n"; $php .= "namespace {$namespace};\n\n"; $php .= "use \\Cherry\\Data\\Model;\n\n"; $php .= "/** \n"; $php .= " * @brief Database model.\n"; $php .= " * \n"; $php .= " * @generator app-setup 1.0\n"; $php .= " */\n"; $php .= "class {$model} extends Model {\n"; $php .= "\n"; $php .= " /// @var Table name\n"; $php .= " public \$table = \"{$tag[0]}\";\n"; $php .= "\n"; $php .= " /// @var Columns and types\n"; $php .= " public \$columns = [\n"; foreach ($cols as $column) { $def = $column->type; $php .= " \"{$column[0]}\" => \"{$def}\"" . (end($cols) != $column ? ",\n" : "\n"); } $php .= " ];\n"; $primary = $tag->auto; $php .= "\n"; $php .= " /// @var Primary index column\n"; if ($primary) { $php .= " public \$primary = \"{$primary}\";\n"; } else { $php .= " public \$primary = null;\n"; } $php .= "\n"; $php .= " /** \n"; $php .= " * Static invoker.\n"; $php .= " * \n"; $php .= " * @param Mixed \$m Method name\n"; $php .= " * @param Array \$a Method arguments\n"; $php .= " * \n"; $php .= " */\n"; $php .= " public static function __callStatic(\$m,\$a) {\n"; $php .= " return (new self())->call(\$m,\$a);\n"; $php .= " }\n"; $php .= "\n"; $php .= " /** \n"; $php .= " * Definitions for the model. Is called when the model is set up.\n"; $php .= " */\n"; $php .= " public function define() {\n"; $php .= " // \$this->setValidator(\"column\", new ValidatorClass());\n"; $php .= " }\n"; $php .= "}\n"; return $php; }
public function __construct() { $cfg = PathResolver::getInstance()->getPath("{APP}/config/routes.sdl"); if (!file_exists($cfg) || !is_readable($cfg)) { \debug("Could not read routelist from {$cfg}."); } else { $root = new SdlTag(); $root->loadFile($cfg); $this->routes = $root->query("/routes/route"); $num = count($this->routes); \debug("Parsed {$num} routes from {$cfg}"); } }
protected function getSqlVartype(SdlTag $tag) { $type = $tag->type; if (strpos($type, ":") !== false) { list($type, $len) = explode(":", $type); } else { $len = null; } switch (strtolower($type)) { case 'text': if (!$len) { $len = 65535; } case 'char': if ($len == null) { $len = 250; } if ($len < 1024) { $type = "TEXT({$len})"; } elseif ($len < 65535) { $type = "TEXT"; } else { $type = "TEXT"; } break; case 'blob': case 'binary': $type = "BLOB"; break; case 'bool': $type = "INTEGER"; break; case 'int': case 'integer': if (!$len) { $len = 11; } $type = "INTEGER"; $type .= "({$len})"; break; case 'float': $type = "REAL"; if ($len) { $type .= "({$len})"; } break; case 'double': $type = "REAL"; if ($len) { $type .= "({$len})"; } break; case 'date': $type = "TEXT"; break; case 'set': $values = []; foreach ($tag->query("value") as $value) { $values[] = $value[0]; } $type = "TEXT"; case 'enum': $values = []; foreach ($tag->query("value") as $value) { $values[] = $value[0]; } $type = "TEXT"; } return $type; }
protected function getSqlVartype(SdlTag $tag) { $type = $tag->type; if (strpos($type, ":") !== false) { list($type, $len) = explode(":", $type); } else { $len = null; } switch (strtolower($type)) { case 'text': if (!$len) { $len = 65535; } case 'char': if ($len == null) { $len = 250; } if ($len < 1024) { $type = "VARCHAR({$len})"; } elseif ($len < 65535) { $type = "TEXT"; } else { $type = "MEDIUMTEXT"; } break; case 'blob': if (!$len) { $len = 65535; } case 'binary': if ($len == null) { $len = 250; } if ($len < 1024) { $type = "VARBINARY({$len})"; } elseif ($len < 65535) { $type = "BLOB"; } else { $type = "MEDIUMBLOB"; } break; case 'bool': $type = "TINYINT(1)"; break; case 'int': case 'integer': if (!$len) { $len = 11; } $type = "INT"; $type .= "({$len})"; break; case 'float': $type = "FLOAT"; if ($len) { $type .= "({$len})"; } break; case 'double': $type = "FLOAT"; if ($len) { $type .= "({$len})"; } break; case 'date': $type = "DATETIME"; break; case 'set': $values = []; foreach ($tag->query("value") as $value) { $values[] = $value[0]; } $type = "SET('" . join("','", $values) . "')"; case 'enum': $values = []; foreach ($tag->query("value") as $value) { $values[] = $value[0]; } $type = "ENUM('" . join("','", $values) . "')"; } return $type; }