Parce que mettre à jour un projet ne devrait pas être compliqué ni casser vos applications, il est important de garantir la compatibilité entre les versions mineures de nos projets.
C’est pourquoi nous suivons strictement le versionnage sémantique pour toutes nos bibliothèques et applications.
Les règles qui suivent viennent de la promesse de rétrocompatibilité de Symfony, que nous reprenons entièrement à notre compte.
Employer nos interfaces
| Cas d’usage | Rétrocompatibilité |
|---|---|
| Si vous… | Alors nous garantissons la rétrocompatibilité… |
| Typez contre l’interface | Oui |
| Appelez une méthode | Oui |
| Si vous implémentez l’interface et… | Alors nous garantissons la rétrocompatibilité… |
| Implémentez une méthode | Oui |
| Ajoutez un argument à une méthode implémentée | Oui |
| Ajoutez une valeur par défaut à un argument | Oui |
| Ajoutez un type de retour à une méthode implémentée | Oui |
Employer nos classes
| Cas d’usage | Rétrocompatibilité |
|---|---|
| Si vous… | Alors nous garantissons la rétrocompatibilité… |
| Typez contre la classe | Oui |
| Créez une nouvelle instance | Oui |
| Étendez la classe | Oui |
| Accédez à une propriété publique | Oui |
| Appelez une méthode publique | Oui |
| Si vous étendez la classe et… | Alors nous garantissons la rétrocompatibilité… |
| Accédez à une propriété protégée | Oui |
| Appelez une méthode protégée | Oui |
| Surchargez une propriété publique | Oui |
| Surchargez une propriété protégée | Oui |
| Surchargez une méthode publique | Oui |
| Surchargez une méthode protégée | Oui |
| Ajoutez une nouvelle propriété | Non |
| Ajoutez une nouvelle méthode | Non |
| Ajoutez un argument à une méthode surchargée | Oui |
| Ajoutez une valeur par défaut à un argument | Oui |
| Appelez une méthode privée (par réflexion) | Non |
| Accédez à une propriété privée (par réflexion) | Non |
Employer nos traits
| Cas d’usage | Rétrocompatibilité |
|---|---|
| Si vous… | Alors nous garantissons la rétrocompatibilité… |
| Employez un trait | Oui |
| Si vous employez le trait et… | Alors nous garantissons la rétrocompatibilité… |
| Vous en servez pour implémenter une interface | Oui |
| Vous en servez pour implémenter une méthode abstraite | Oui |
| Vous en servez pour étendre une classe parente | Oui |
| Vous en servez pour définir une classe abstraite | Oui |
| Employez une propriété publique, protégée ou privée | Oui |
| Employez une méthode publique, protégée ou privée | Oui |
Exceptions à ces règles
Ces règles ne valent pas dans les cas suivants :
- une balise
@internalest posée, - le fichier est dans un dossier de tests ou un espace de noms de tests.
Ces méthodes, classes, traits ou interfaces ne doivent être ni employés ni implémentés.