# Conventions de codage

## PHP

* **Standard** : Style de codage PSR-12
* **Déclarations de type** : Utiliser les déclarations de type de PHP 8.2 (types de paramètres, types de retour, types de propriétés)
* **Types stricts** : Tous les fichiers PHP doivent déclarer `strict_types=1`
* **Espaces de noms** : Suivre l'autoloading PSR-4 (par exemple, `Chamilo\CoreBundle\Entity\User`)
* **Standards Symfony** : Suivre les standards de codage et les bonnes pratiques de Symfony

## JavaScript/Vue

* **ESLint + Prettier** : Le code est vérifié avec ESLint et formaté avec Prettier ; la configuration se trouve dans `eslint.config.mjs` à la racine du projet. `prettier-plugin-tailwindcss` est également activé pour le tri automatique des classes Tailwind.
* **Composition API** : Utiliser la syntaxe `<script setup>` de Vue 3 pour les nouveaux composants
* **TypeScript** : TypeScript est pris en charge ; utilisez-le pour un code sécurisé par type

## CSS

* **Tailwind CSS** : Privilégier les classes utilitaires plutôt que du CSS personnalisé
* **Nommage BEM** : Lorsque du CSS personnalisé est nécessaire, utiliser la convention de nommage BEM
* **SCSS** : Utiliser SCSS pour les feuilles de style complexes

## Outils d'analyse statique et de refactoring PHP

Le projet fournit des configurations pour trois outils supplémentaires :

| Outil       | Fichier de configuration | Objectif                                                              |
| ----------- | ------------------------ | --------------------------------------------------------------------- |
| **PHPStan** | `phpstan.neon`           | Analyse statique (niveau 5, scanne les répertoires `src/` et de test) |
| **Psalm**   | `psalm.xml`              | Deuxième passe d'analyse statique ; exécuté dans CI à chaque push     |
| **Rector**  | `rector.php`             | Transformations et mises à niveau automatisées du code                |

Exécutez-les via des raccourcis Composer : `composer phpstan`, `composer psalm`. Consultez [Testing](/chamilo-2-francais/guide-du-developpeur/developer-guide/contributing/testing.md) pour les commandes complètes.

## Général

* **Anglais** : Tous les commentaires de code, noms de variables et documentation doivent être en anglais
* **Traductions** : Tout texte destiné aux utilisateurs doit utiliser le système de traduction (Vue I18n pour le frontend, Symfony Translator pour le backend)
* **Pas de valeurs magiques** : Utiliser des constantes ou des énumérations au lieu de valeurs codées en dur


---

# 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/chamilo-2-francais/guide-du-developpeur/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.
