# Kodierkonventionen

## PHP

* **Standard**: PSR-12 Kodierungsstil
* **Typdeklarationen**: Verwenden Sie PHP 8.2 Typdeklarationen (Parametertypen, Rückgabewerte, Eigenschaftstypen)
* **Strikte Typen**: Alle PHP-Dateien sollten `strict_types=1` deklarieren
* **Namespaces**: Folgen Sie der PSR-4 Autoloading-Struktur (z. B. `Chamilo\CoreBundle\Entity\User`)
* **Symfony-Standards**: Befolgen Sie die Kodierungsstandards und Best Practices von Symfony

## JavaScript/Vue

* **ESLint + Prettier**: Der Code wird mit ESLint überprüft und mit Prettier formatiert; die Konfiguration befindet sich in `eslint.config.mjs` im Projektstammverzeichnis. `prettier-plugin-tailwindcss` ist ebenfalls aktiviert für die automatische Sortierung von Tailwind-Klassen.
* **Composition API**: Verwenden Sie die `<script setup>`-Syntax von Vue 3 für neue Komponenten
* **TypeScript**: TypeScript wird unterstützt; verwenden Sie es für typsicheren Code

## CSS

* **Tailwind CSS**: Bevorzugen Sie Utility-Klassen gegenüber benutzerdefiniertem CSS
* **BEM-Benennung**: Wenn benutzerdefiniertes CSS benötigt wird, verwenden Sie die BEM-Benennungskonvention
* **SCSS**: Verwenden Sie SCSS für komplexe Stylesheets

## PHP-Statische Analyse- und Refactoring-Tools

Das Projekt enthält Konfigurationen für drei zusätzliche Tools:

| Tool        | Konfigurationsdatei | Zweck                                                                              |
| ----------- | ------------------- | ---------------------------------------------------------------------------------- |
| **PHPStan** | `phpstan.neon`      | Statische Analyse (Level 5, scannt `src/` und Testverzeichnisse)                   |
| **Psalm**   | `psalm.xml`         | Zweiter Durchgang der statischen Analyse; wird bei jedem Push in der CI ausgeführt |
| **Rector**  | `rector.php`        | Automatisierte Code-Transformationen und Upgrades                                  |

Führen Sie diese über Composer-Kurzbefehle aus: `composer phpstan`, `composer psalm`. Vollständige Befehle finden Sie unter [Testing](/2.x-de/entwicklerhandbuch/developer-guide/contributing/testing.md).

## Allgemein

* **Englisch**: Alle Code-Kommentare, Variablennamen und Dokumentationen sollten auf Englisch sein
* **Übersetzungen**: Alle benutzerorientierten Texte sollten das Übersetzungssystem verwenden (Vue I18n für das Frontend, Symfony Translator für das Backend)
* **Keine magischen Werte**: Verwenden Sie Konstanten oder Enums anstelle von fest codierten Werten


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.chamilo.org/2.x-de/entwicklerhandbuch/developer-guide/contributing/coding-conventions.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
