80 lines
2.0 KiB
PHP
80 lines
2.0 KiB
PHP
<?php
|
|
/**
|
|
* MVC Model Generator
|
|
* Nutzung: php create_model.php <TabellenName> <Spalte1,Spalte2,...>
|
|
*/
|
|
|
|
if (php_sapi_name() !== 'cli') {
|
|
die("Dieses Script muss über die CLI ausgeführt werden.\n");
|
|
}
|
|
|
|
$tableName = $argv[1] ?? null;
|
|
$columnsInput = $argv[2] ?? null;
|
|
|
|
// Interaktive Abfrage, falls Argumente fehlen
|
|
if (!$tableName) {
|
|
echo "Tabellenname eingeben (z.B. Benutzer): ";
|
|
$handle = fopen("php://stdin", "r");
|
|
$tableName = trim(fgets($handle));
|
|
fclose($handle);
|
|
}
|
|
|
|
if (!$columnsInput) {
|
|
echo "Spalten kommagetrennt eingeben (z.B. NAME,EMAIL,ROLLE): ";
|
|
$handle = fopen("php://stdin", "r");
|
|
$columnsInput = trim(fgets($handle));
|
|
fclose($handle);
|
|
}
|
|
|
|
if (!$tableName) die("Fehler: Kein Tabellenname angegeben.\n");
|
|
|
|
// Namen formatieren
|
|
$className = str_replace(' ', '', ucwords(str_replace('_', ' ', strtolower($tableName))));
|
|
$modelFile = __DIR__ . "/WEBROOT/src/MVC/Model/{$className}.php";
|
|
|
|
// Spalten aufbereiten
|
|
$columns = array_map('trim', explode(',', $columnsInput));
|
|
$columnList = implode("', '", $columns);
|
|
|
|
// Model-Inhalt generieren
|
|
$content = <<<PHP
|
|
<?php
|
|
|
|
namespace MVC\Model;
|
|
|
|
use MVC\Core\Model;
|
|
|
|
/**
|
|
* Model für die Tabelle '{$tableName}'
|
|
* Verfügbare Spalten: '{$columnList}'
|
|
*/
|
|
class {$className} extends Model {
|
|
protected static \$table = "{$tableName}";
|
|
|
|
// Hier kannst du spezifische Methoden für dieses Model hinzufügen
|
|
|
|
/**
|
|
* Beispiel: Suche nach einer spezifischen Spalte
|
|
*/
|
|
public static function getByFirstColumn(\$value) {
|
|
return self::where("{$columns[0]} = ?", \$value);
|
|
}
|
|
}
|
|
PHP;
|
|
|
|
// Datei schreiben
|
|
if (!is_dir(dirname($modelFile))) {
|
|
mkdir(dirname($modelFile), 0755, true);
|
|
}
|
|
|
|
if (!file_exists($modelFile)) {
|
|
file_put_contents($modelFile, $content);
|
|
echo "✅ Model erstellt: WEBROOT/src/MVC/Model/{$className}.php\n";
|
|
echo "--- INFO ---\n";
|
|
echo "Tabelle: {$tableName}\n";
|
|
echo "Klasse: MVC\\Model\\{$className}\n";
|
|
echo "Spalten: " . implode(', ', $columns) . "\n";
|
|
} else {
|
|
echo "⚠️ Model {$className}.php existiert bereits.\n";
|
|
}
|