Table of Contents
# Projektstruktur - Verzeichnisse & Komponenten
Dieses Dokument beschreibt die empfohlene Verzeichnisstruktur für PhorgeRunner.
Ziel: Übersicht, Erweiterbarkeit und einfache Wartung.
Verzeichnis-Übersicht
phorgerunner/
├── /config/ # Zentrale Konfigurationsdateien
│ ├── config.template.php # Vorlage (versioniert)
│ ├── config.php # Lokale Konfiguration (git-ignoriert!)
│ └── custom_fields.php # Optional: benutzerdefinierte Felder
│
├── /src/ # Alle PHP-Klassen (OOP)
│ ├── Autoloader.php # PSR-4 Autoloader
│ ├── Database/
│ │ └── DBManager.php # Datenbank-Zugriff (PDO)
│ ├── Log/
│ │ └── LogManager.php # Logging (DB, Datei, Konsole)
│ └── Tasks/
│ ├── AbstractTask.php # Basis-Klasse für alle Tasks
│ ├── ManiphestCreateTask.php
│ ├── ManiphestSearchTask.php
│ └── [weitere Tasks...] # Erweiterbar
│
├── /cli/ # Einstiegspunkte für CLI/Cronjobs
│ └── main.php # Standard-Entry-Point
│
├── /public/ # (Zukünftig) Web-Frontend
│ ├── index.php # Einstiegspunkt für Web
│ ├── .htaccess # Zugriffsschutz
│ └── assets/ # CSS, JS (später)
│
├── /sql/ # Datenbank-Schema
│ └── create.sql # MariaDB Tabellendefinitionen
│
├── /logs/ # Log-Dateien (falls Datei-Logging aktiv)
│ ├── app.log # Allgemeine Logs
│ └── error.log # Error-Logs
│
├── .gitignore # Git-Ausschlüsse (config.php, logs, *.log)
├── readme.md # Projekt-Überblick
└── search.test.php # Utility zum Testen der API (lokal)
Detaillierte Beschreibung
/config/
Enthält alle Konfigurationsdateien. Die echte config.php steht in .gitignore, damit keine Zugangsdaten im Repo landen.
config.template.php- Vorlage mit Kommentaren, wird versioniertconfig.php- Lokale Konfiguration mit echten Werten (Secrets!)custom_fields.php- Optional: benutzerdefinierte Phorge-Felder
/src/
Alle zentralen PHP-Klassen. Organisiert nach Funktion:
Autoloader.php
- PSR-4 Autoloader für den
App\-Namespace - Definiert globale Konstanten:
BASE_DIR,CONFIG_DIR,CONFIG_FILE
Database/DBManager.php
- PDO-Wrapper für sichere Datenbank-Operationen
- Methoden:
query(),fetch(),fetchAll(),insert(),update(),delete() - Automatische Prepared Statements gegen SQL-Injection
Log/LogManager.php
- Zentrales Logging-System
- Unterstützt: DB, Datei, Konsole
- Jeder Log-Eintrag hat Fingerprint, Job-ID, Severity, Channel
Tasks/
AbstractTask.php- Basis-Klasse für alle Task-Implementierungen- Lädt Config & DB
- Generiert Fingerprint
- Bietet
execute()Wrapper & API-Helper - Zentral für Logging
ManiphestCreateTask.php- Erstellt Tickets via APIManiphestSearchTask.php- Sucht Tickets via API[weitere Tasks]- Beliebig erweiterbar
/cli/
Einstiegspunkte für Aufgaben, die via Kommandozeile oder Cron laufen.
main.php- Standard-Bootstrapper, lädt Autoloader- Jedes Cron-Job-Skript kann von hier aus starten
/public/
(Zukünftiges) Web-Frontend für Log-Anzeige und Status-Checks.
index.php- Einstiegspunkt für HTTP-Anfragen.htaccess- Zugriffsschutz (z.B. IP-Whitelist, HTTP-Auth)assets/- CSS, JavaScript (später)
/sql/
Datenbank-Schema für MariaDB.
create.sql- Tabellendefinitionenjobs- Wiederholbare Aufgabenjobs_runplan- Ausführungs-Protokolllogs- Zentrale Log-Tabellesettings- Optional: globale Einstellungen
/logs/
Log-Dateien (nur nötig, falls Datei-Logging aktiv).
- Standard:
app.log,error.log - Verzeichnis wird automatisch erstellt
Warum diese Struktur?
✅ Klare Separierung - Business-Logik, Datenhaltung, Einstiegspunkte sind getrennt
✅ Erweiterbarkeit - neue Tasks/Manager einfach hinzufügbar
✅ Sicherheit - Secrets in .gitignore, Web-Frontend isoliert
✅ Wartbarkeit - einheitliche PSR-4 Struktur
✅ Zukunftssicher - vorbereitet für Containerisierung, neue Features
Siehe auch: Projektziele, Überblick
Navigation
Erste Schritte
- Home
- Projektziele - Vision & Feature-Übersicht
- Projektstruktur - Verzeichnisse & Komponenten
Technisch
- Überblick - Architektur & Datenfluss
- Datenbank - Schema & DBManager
- Logging - Log-System verstehen
- API-Integration - Phorge API-Calls
Für Entwickler
- Entwicklung - Tasks schreiben, Patterns
- Phorge-API - Kurzeinführung in Conduit
- Konventionen - Code-Style, Deutsch in Commits
- Dev-Guide - Lokal testen & debuggen
- Schema-Refresh - Schema-Generator für Custom-Felder
- Logging - Design und Anwendung des Loggers
Betrieb
- Deployment - Installation auf Wikonia-Server
- Cron-Jobs - Automatisierte Ausführung
- Sicherheit - Best Practices
Help
- Häufige Fehler - Troubleshooting
---
PhorgeRunner - Automatisierungs-Tool für Wikonia Phorge
Repository: Git phorgerunner | Phorge Instanz: phorge.wikonia.net