CLI Tools & Befehle

20 minutes MITTELSTUFE

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!

1

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

Terminal
php vendor/bin/gemvc <command>

Beispiel: php vendor/bin/gemvc init

Methode 2: Verwenden von Composer Scripts

Terminal
composer gemvc <command>

Beispiel: composer gemvc create:crud Product

Befehls Syntax:

Alle Befehle folgen diesem Muster:

Terminal
gemvc <command> [arguments] [flags]

<command> = Befehlsname (z. B. init, create:crud)
[arguments] = Optionale Argumente (z. B. Product)
[flags] = Optionale Flags (z. B. --swoole, -cmt)

2

Projekt Verwaltungs Befehle

Neues Projekt initialisieren

Der init Befehl richtet ein neues GEMVC Projekt mit Ihrer gewählten Webserver Konfiguration ein.

Terminal
gemvc init [flags]

Interaktiver Modus:

Ohne Flags ausführen, um interaktive Eingabeaufforderungen zu erhalten:

Terminal
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:

Terminal
# 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/)
  • .env Datei aus example.env
  • composer.json mit Abhängigkeiten
  • ✓ Beispiel User Service (sofort einsatzbereites Template)
3

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!

Terminal
gemvc create:crud <ServiceName>

Beispiel:

Terminal
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

Terminal
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

Terminal
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

Terminal
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

Terminal
gemvc create:table <TableName>

# Beispiel
gemvc create:table Product

Erstellt app/table/ProductTable.php mit der Basisstruktur

4

Datenbank Befehle

Datenbank Verwaltung

GEMVC bietet leistungsstarke Datenbank Verwaltungsbefehle zum Initialisieren von Datenbanken, Migrieren von Tabellen und Verwalten von Schemata:

Datenbank initialisieren

Terminal
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

Terminal
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

Terminal
gemvc db:list

Listet alle Tabellen in der Datenbank mit ihren Spalteninformationen auf.

Tabelle beschreiben

Terminal
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)

Terminal
gemvc db:drop <TableName>

# Beispiel
gemvc db:drop products

**⚠️ Warnung:** Löscht die Tabelle und alle ihre Daten dauerhaft!

Eindeutige Beschränkung hinzufügen

Terminal
gemvc db:unique <TableName> <ColumnName>

# Beispiel
gemvc db:unique users email

Fügt einer Tabellenspalte eine eindeutige Beschränkung hinzu.

5

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:

1
Projekt initialisieren
Terminal
gemvc init --swoole

Richtet die Projektstruktur ein, kopiert Templates, erstellt die .env Datei

2
Datenbank initialisieren
Terminal
gemvc db:init

Erstellt die Datenbank aus DB_NAME in .env

3
CRUD erstellen
Terminal
gemvc create:crud Product

Generiert alle 4 Schichten: API, Controller, Model, Table

4
Tabelle migrieren
Terminal
gemvc db:migrate ProductTable

Erstellt die "products" Tabelle in der Datenbank mit allen Spalten und Beschränkungen

Fertig! Ihre API ist bereit

Sie haben jetzt eine voll funktionsfähige Produkt CRUD API mit allen 4 Schichten!

6

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
7

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.

Terminal
# ✅ 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.

Terminal
gemvc create:crud Product
gemvc db:migrate ProductTable

💡 Beschreibende Namen verwenden

Verwenden Sie PascalCase für Service/Model Namen. GEMVC handhabt die Namenskonventionen automatisch.

Terminal
# ✅ 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/gemvc oder composer gemvc ausgeführt werden.
  • **Namenskonvention:** Verwenden Sie PascalCase für Service/Model Namen (z. B. Product, nicht product).
  • **Tabellenmigration:** Führen Sie immer db:migrate aus, 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-interactive oder -n Flag 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!