CLI Tools & Befehle
Meistern Sie die einfachen, aber leistungsstarken CLI Befehle von GEMVC. Lernen Sie Projekt Initialisierung, Code Generierung und Datenbank Verwaltung mit einfachen Kommandozeilen Tools.
What You'll Learn
Projekt Verwaltung
Projekte mit gemvc init initialisieren
Code Generierung
Services, Controller, Models und Tables generieren
Datenbank Befehle
Datenbanken mit Migrations und Dienstprogrammbefehlen verwalten
Video Coming Soon...
Was ist GEMVC CLI?
GEMVC wird mit einer **einfachen, aber leistungsstarken Kommandozeilen Schnittstelle** geliefert, die Ihnen hilft, Anwendungen schneller zu entwickeln. Die CLI bietet Befehle zur Projekt Initialisierung, Code Generierung und Datenbank Verwaltung – alles mit einfachen, intuitiven Befehlen.
- **Projekt Verwaltung** - Projekte mit verschiedenen Webservern (OpenSwoole, Apache, Nginx) initialisieren
- **Code Generierung** - Komplette CRUD Operationen oder einzelne Schichten (Service, Controller, Model, Table) generieren
- **Datenbank Verwaltung** - Datenbanken initialisieren, Tabellen migrieren, Tabellen auflisten und Schemata verwalten
- **Template System** - Anpassbare Code Generierungs Templates
- **Nicht Interaktiver Modus** - Perfekt für CI/CD Pipelines
**Wichtiger Punkt:** GEMVC CLI Befehle sind darauf ausgelegt, **einfach und dennoch leistungsstark** zu sein. Ein einziger Befehl wie gemvc create:crud Product generiert alle 4 Schichten Ihrer CRUD API!
Ausführen von CLI Befehlen
So führen Sie Befehle aus
GEMVC CLI Befehle können auf zwei Arten ausgeführt werden:
Methode 1: Verwenden des PHP Vendor Binary
php vendor/bin/gemvc <command>
Beispiel: php vendor/bin/gemvc init
Methode 2: Verwenden von Composer Scripts
composer gemvc <command>
Beispiel: composer gemvc create:crud Product
Befehls Syntax:
Alle Befehle folgen diesem Muster:
gemvc <command> [arguments] [flags]
<command> = Befehlsname (z. B. init, create:crud)
[arguments] = Optionale Argumente (z. B. Product)
[flags] = Optionale Flags (z. B. --swoole, -cmt)
Projekt Verwaltungs Befehle
Neues Projekt initialisieren
Der init Befehl richtet ein neues GEMVC Projekt mit Ihrer gewählten Webserver Konfiguration ein.
gemvc init [flags]
Interaktiver Modus:
Ohne Flags ausführen, um interaktive Eingabeaufforderungen zu erhalten:
gemvc init
Der Befehl fordert Sie auf:
- ✓ Webserver auswählen (OpenSwoole, Apache, Nginx)
- ✓ Docker Setup wählen (optional)
- ✓ PHPStan installieren (optional)
- ✓ Test Framework installieren (optional)
Nicht Interaktiver Modus:
Verwenden Sie Flags, um Eingabeaufforderungen zu überspringen:
# OpenSwoole
gemvc init --swoole
# Apache
gemvc init --apache
# Nginx
gemvc init --nginx
# Oder verwenden Sie das --server Flag
gemvc init --server=swoole
gemvc init --server=apache
# Nicht interaktiv (alle Eingabeaufforderungen überspringen)
gemvc init --swoole --non-interactive
Was erstellt wird:
- ✓ Projekt Verzeichnisstruktur (
app/api,app/controller,app/model,app/table) - ✓ Webserver spezifische Dateien (
index.php,Dockerfile) - ✓ Templates für die Code Generierung (
templates/cli/) - ✓
.envDatei ausexample.env - ✓
composer.jsonmit Abhängigkeiten - ✓ Beispiel User Service (sofort einsatzbereites Template)
Code Generierungs Befehle
Komplettes CRUD generieren
Der einfachste Weg, eine vollständige CRUD API zu erstellen, ist die Verwendung des create:crud Befehls. Er generiert alle 4 Schichten auf einmal!
gemvc create:crud <ServiceName>
Beispiel:
gemvc create:crud Product
**Generierte Dateien:**
- ✓
app/api/Product.php- API Service Schicht - ✓
app/controller/ProductController.php- Controller Schicht - ✓
app/model/ProductModel.php- Model Schicht - ✓
app/table/ProductTable.php- Table Schicht
Was generiert wird:
- ✓ Vollständige CRUD Methoden:
create(),read(),update(),delete(),list() - ✓ Schema Validierung in der API Schicht
- ✓ Geschäftslogik in der Controller Schicht
- ✓ Datenlogik in der Model Schicht
- ✓ Datenbankoperationen in der Table Schicht
- ✓ Hilfsmethoden (
selectById(),selectByName())
Einzelne Schichten generieren
Sie können auch einzelne Schichten generieren oder diese mit Flags kombinieren:
API Service erstellen
gemvc create:service <ServiceName> [flags]
# Service nur erstellen
gemvc create:service Product
# Service + Controller + Model + Table erstellen
gemvc create:service Product -cmt
**Flags:** -c (Controller), -m (Model), -t (Table), -cmt (alle)
Controller erstellen
gemvc create:controller <ControllerName> [flags]
# Controller nur erstellen
gemvc create:controller Product
# Controller + Model + Table erstellen
gemvc create:controller Product -mt
**Flags:** -m (Model), -t (Table), -mt (beide)
Model erstellen
gemvc create:model <ModelName> [flags]
# Model nur erstellen
gemvc create:model Product
# Model + Table erstellen
gemvc create:model Product -t
**Flags:** -t (Table)
Table erstellen
gemvc create:table <TableName>
# Beispiel
gemvc create:table Product
Erstellt app/table/ProductTable.php mit der Basisstruktur
Datenbank Befehle
Datenbank Verwaltung
GEMVC bietet leistungsstarke Datenbank Verwaltungsbefehle zum Initialisieren von Datenbanken, Migrieren von Tabellen und Verwalten von Schemata:
Datenbank initialisieren
gemvc db:init
Erstellt die in der .env Datei angegebene Datenbank (DB_NAME). Verwendet Root Anmeldeinformationen von DB_ROOT_USER und DB_ROOT_PASSWORD.
Tabelle migrieren
gemvc db:migrate <TableClassName> [flags]
# Grundlegende Migration
gemvc db:migrate ProductTable
# Force Sync (fehlende Spalten entfernen)
gemvc db:migrate ProductTable --force
# Schema Beschränkungen synchronisieren
gemvc db:migrate ProductTable --sync-schema
# Standardwert für neue Spalten festlegen
gemvc db:migrate ProductTable --default="Active"
Erstellt oder aktualisiert die Datenbanktabelle basierend auf Ihrer Table Klassen Definition. Liest $_type_map und defineSchema(), um Spalten, Indizes und Beschränkungen zu erstellen.
Tabellen auflisten
gemvc db:list
Listet alle Tabellen in der Datenbank mit ihren Spalteninformationen auf.
Tabelle beschreiben
gemvc db:describe <TableName>
# Beispiel
gemvc db:describe products
Zeigt detaillierte Informationen über eine Tabelle an: Spalten, Typen, Indizes, Beschränkungen.
Tabelle löschen (Drop Table)
gemvc db:drop <TableName>
# Beispiel
gemvc db:drop products
**⚠️ Warnung:** Löscht die Tabelle und alle ihre Daten dauerhaft!
Eindeutige Beschränkung hinzufügen
gemvc db:unique <TableName> <ColumnName>
# Beispiel
gemvc db:unique users email
Fügt einer Tabellenspalte eine eindeutige Beschränkung hinzu.
Komplettes Workflow Beispiel
Erstellen einer Produkt API von Grund auf neu
Hier ist ein vollständiger Workflow, der zeigt, wie man CLI Befehle zum Erstellen einer Produkt API verwendet:
gemvc init --swoole
Richtet die Projektstruktur ein, kopiert Templates, erstellt die .env Datei
gemvc db:init
Erstellt die Datenbank aus DB_NAME in .env
gemvc create:crud Product
Generiert alle 4 Schichten: API, Controller, Model, Table
gemvc db:migrate ProductTable
Erstellt die "products" Tabelle in der Datenbank mit allen Spalten und Beschränkungen
Sie haben jetzt eine voll funktionsfähige Produkt CRUD API mit allen 4 Schichten!
Kurzbefehls Referenz
Alle verfügbaren Befehle
| Befehl | Beschreibung | Beispiel |
|---|---|---|
| init | Neues Projekt initialisieren | gemvc init --swoole |
| create:crud | Komplettes CRUD erstellen | gemvc create:crud Product |
| create:service | API Service erstellen | gemvc create:service Product -cmt |
| create:controller | Controller erstellen | gemvc create:controller Product -mt |
| create:model | Model erstellen | gemvc create:model Product -t |
| create:table | Table Klasse erstellen | gemvc create:table Product |
| db:init | Datenbank initialisieren | gemvc db:init |
| db:migrate | Tabelle migrieren | gemvc db:migrate ProductTable |
| db:list | Alle Tabellen auflisten | gemvc db:list |
| db:describe | Tabellenstruktur beschreiben | gemvc db:describe products |
| db:drop | Tabelle löschen | gemvc db:drop products |
| db:unique | Eindeutige Beschränkung hinzufügen | gemvc db:unique users email |
Flags und Optionen
Häufig verwendete Flags
GEMVC Befehle unterstützen verschiedene Flags zur Anpassung des Verhaltens:
Code Generierungs Flags
-c - Controller erstellen
-m - Model erstellen
-t - Table erstellen
-cmt - Alle Komponenten erstellen
Wird verwendet mit: create:service, create:controller, create:model
Migrations Flags
--force - Spalten entfernen, die in der Klassen Definition fehlen
--sync-schema - Schema Beschränkungen synchronisieren (Indizes, unique, etc.)
--enforce-not-null - NOT NULL Beschränkungen erzwingen
--default=<value> - Standardwert für neue Spalten festlegen
Wird verwendet mit: db:migrate
Projekt Initialisierungs Flags
--swoole - Für OpenSwoole initialisieren
--apache - Für Apache initialisieren
--nginx - Für Nginx initialisieren
--server=<name> - Webserver angeben (swoole, apache, nginx)
--non-interactive oder -n - Eingabeaufforderungen überspringen, Standardwerte verwenden
Wird verwendet mit: init
Tipps & Best Practices
💡 Verwenden Sie create:crud für das komplette Setup
Anstatt Komponenten separat zu erstellen, verwenden Sie create:crud, um alle 4 Schichten auf einmal zu generieren. Es ist schneller und gewährleistet Konsistenz.
# ✅ Empfohlen
gemvc create:crud Product
# ❌ Nicht empfohlen
gemvc create:service Product -cmt
💡 Immer migrieren, nachdem Sie Tabellen erstellt haben
Nachdem Sie eine Table Klasse erstellt haben, führen Sie immer db:migrate aus, um die tatsächliche Datenbanktabelle zu erstellen.
gemvc create:crud Product
gemvc db:migrate ProductTable
💡 Beschreibende Namen verwenden
Verwenden Sie PascalCase für Service/Model Namen. GEMVC handhabt die Namenskonventionen automatisch.
# ✅ Gut
gemvc create:crud Product
gemvc create:crud UserProfile
# ❌ Vermeiden Sie
gemvc create:crud product
gemvc create:crud user_profile
💡 Templates anpassen
Sie können die Code Generierungs Templates im Verzeichnis templates/cli/ anpassen. Bearbeiten Sie die Templates, um sie an Ihren Kodierungsstil anzupassen, und generieren Sie dann Code neu.
Wichtige Hinweise
-
**Befehlsspeicherort:** Befehle können mit
php vendor/bin/gemvcodercomposer gemvcausgeführt werden. -
**Namenskonvention:** Verwenden Sie PascalCase für Service/Model Namen (z. B.
Product, nichtproduct). -
**Tabellenmigration:** Führen Sie immer
db:migrateaus, nachdem Sie Table Klassen erstellt oder geändert haben, um das Datenbank Schema zu synchronisieren. - **Generierter Code:** CLI generiert produktionsreifen Code, der GEMVCs 4 Schichten Architektur und Best Practices folgt.
-
**Nicht Interaktiver Modus:** Verwenden Sie das
--non-interactiveoder-nFlag für CI/CD Pipelines und automatisierte Skripte.
🛠️ CLI Tools gemeistert!
Ausgezeichnet! Sie haben gelernt, wie Sie die leistungsstarken CLI Befehle von GEMVC verwenden. Sie können nun Projekte initialisieren, Code generieren und Datenbanken mit einfachen Befehlen verwalten!