4.8 KiB
Guidelines für KI-Assistenten
Übersicht
Diese Guidelines helfen dir, dem KI-Assistenten, konsistenten, modernen und qualitativ hochwertigen PHP-Code zu generieren, der den Projektstandards entspricht.
Verwendung in PhpStorm
Diese Guidelines können in PhpStorm so eingerichtet werden, dass sie automatisch vom KI-Assistenten verwendet werden:
- Gehe zu Settings/Preferences → Tools → AI Assistant → Custom Instructions
- Aktiviere Use custom instructions
- Füge im Textfeld den Inhalt dieser Datei ein oder verwende einen relativen Pfad zu dieser Datei
- Optional: Aktiviere Apply project-specific instructions für projektspezifische Einstellungen
Alternativ kann die Datei .idea/aiAssistant.xml angepasst werden, um diese Guidelines als Standardeinstellung für das Projekt zu verwenden.
Kernprinzipien
Abhängigkeitsvermeidung
- Keine externen Abhängigkeiten außer den explizit freigegebenen
- Eigene Implementierungen gegenüber externen Bibliotheken bevorzugen
- Bei Bedarf nach externen Funktionen zuerst prüfen, ob eine eigene Implementierung möglich ist
- Erlaubte Abhängigkeiten sind auf die vorhandenen Composer-Pakete beschränkt
Architekturprinzipien
Bei der Codeanalyse und -generierung sind folgende Architekturprinzipien zu beachten:
- Modularer Aufbau: Das Projekt ist in Module unter
/src/Framework/organisiert - Service-orientierte Architektur: Funktionalitäten als unabhängige Services implementieren
- Dependency Injection: Abhängigkeiten werden per Constructor Injection bereitgestellt
- Event-basierte Kommunikation: Module kommunizieren über den EventDispatcher
- Selbstständigkeit: Module sollten möglichst unabhängig von externen Bibliotheken sein
Coding-Standards
Klassen
- IMMER
finalverwenden, außer bei zwingenden Gründen für Vererbung - KEINE abstrakten Klassen verwenden - stattdessen Interfaces und Kompositionen
- Klassen und Properties wenn möglich als
readonlydeklarieren - Bevorzuge Interfaces für Vertragsgestaltung zwischen Komponenten
// RICHTIG
final readonly class AnalyticsService implements AnalyticsInterface
{
// ...
}
// FALSCH
abstract class BaseAnalytics
{
// ...
}
Properties und Methoden
- Private
readonlyProperties mit Typisierung - Return-Types immer angeben
- Parameter-Types immer angeben
- Union Types und Nullable Types nutzen
// RICHTIG
private readonly LoggerInterface $logger;
public function process(?int $id): Result|null
{
// ...
}
// FALSCH
public $logger;
public function process($id)
{
// ...
}
Moderne PHP-Features
Nutze aktiv die neuesten PHP-Features:
- Constructor Property Promotion
- Match Expressions statt Switch
- Named Arguments
- Enums statt Konstanten
- Nullsafe Operator (
?->) wo sinnvoll - Typed Properties
Klassenaufbau
Folgende Reihenfolge für Klassenelemente:
- Konstanten
- Properties
- Constructor
- Öffentliche Methoden
- Private/Protected Methoden
Service-Initialisierung
Services werden durch Initializer-Klassen registriert:
#[Initializer]
final readonly class ServiceInitializer
{
public function __construct(
private Configuration $config,
private DependencyInterface $dependency
) {}
public function __invoke(Container $container): ServiceInterface
{
return new Service(
$this->config->get('service'),
$this->dependency
);
}
}
Fehlerbehandlung
- Spezifische Exception-Klassen werfen
- Early Return Pattern bevorzugen
- Defensive Programmierung mit Validierung
Testing
Bei Test-Vorschlägen Pest-Framework nutzen:
test('method does something correctly', function () {
// Arrangement
$service = new Service($dependency);
// Action
$result = $service->method();
// Assertion
expect($result)->toBe('expected');
});
Dokumentation
- PHPDoc für alle öffentlichen Methoden
- Kurze, präzise Beschreibungen
- Parameter und Return-Types in PHPDoc
Zu vermeidende Praktiken
- Globale Zustände und statische Methoden
- Tiefe Vererbungshierarchien
- Lange, komplexe Methoden
- Magische Methoden (
__call, etc.) ohne triftigen Grund - Unnötige Abstraktionen
Bei Codeanalyse und -vorschlägen
- Aktuellen Stil beibehalten: Bei Vorschlägen den vorhandenen Codierungsstil beibehalten
- Standards berücksichtigen: Auf Einhaltung der hier definierten Guidelines achten
- Modernisierung vorschlagen: Auf Möglichkeiten zur Modernisierung hinweisen
- Begründen: Bei Empfehlungen die Gründe erläutern
- Vollständigkeit: Vollständige Lösungen anbieten, nicht nur Fragmente
Diese Guidelines sind als lebendiges Dokument zu betrachten, das mit der Evolution des Projekts und von PHP weiterentwickelt wird.