« Symfony Docker » : différence entre les versions

Page créée avec « == Symfony cache et composer cache avec Docker : == ----- === '''1. Rôle du dossier <code>/var/cache</code> dans Symfony''' === Symfony utilise ce dossier pour : - '''Le cache applicatif''' (ex : compilation des templates Twig, cache des routes, annotations) - '''Le cache système''' (ex : fichiers de configuration compilés comme <code>srcApp_KernelDevDebugContainer.php</code>) '''Problème avec Docker :'''<br /> Par défaut, ce cache est régénéré à c... »
 
Aucun résumé des modifications
Ligne 1 : Ligne 1 :
== composer dump-autoload ==
La commande '''<code>composer dump-autoload</code>''' est une commande essentielle dans l’écosystème PHP/Composer. Elle régénère le fichier d’'''autoloading''' (chargement automatique des classes) sans réinstaller les dépendances. Voici ce qu’elle fait en détail :
-----
=== '''À quoi sert <code>composer dump-autoload</code> ?''' ===
<ol style="list-style-type: decimal;">
<li>'''Reconstruit l’autoloader de Composer'''
<ul>
<li>Met à jour le fichier <code>vendor/autoload.php</code> qui gère le chargement automatique des classes PHP.</li>
<li>Utile quand vous ajoutez/modifiez des classes '''sans passer par <code>composer install/update</code>'''.</li></ul>
</li>
<li>'''Optimise les performances (si utilisé avec <code>-o</code>)'''
<ul>
<li><p>Avec l’option <code>--optimize</code> (<code>-o</code>), Composer génère une '''version optimisée''' de l’autoloader (classe map statique), ce qui accélère le chargement des classes en production :</p>
<syntaxhighlight lang="bash">composer dump-autoload --optimize</syntaxhighlight></li></ul>
</li>
<li>'''Prend en compte les classes dans <code>autoload</code> ou <code>autoload-dev</code>'''
<ul>
<li><p>Si vous avez des classes définies dans <code>composer.json</code> sous :</p>
<syntaxhighlight lang="json">"autoload": {
    "psr-4": { "MonApp\\": "src/" }
}</syntaxhighlight></li>
<li><p>La commande les intègre dans l’autoloader.</p></li></ul>
</li></ol>
-----
=== '''Quand l’utiliser ?''' ===
{| class="wikitable"
|-
! Cas d’usage
! Commande recommandée
|-
| Après avoir '''ajouté une nouvelle classe''' manuellement (sans Composer).
| <code>composer dump-autoload</code>
|-
| En '''production''' pour optimiser les performances.
| <code>composer dump-autoload --optimize</code>
|-
| Après avoir '''modifié <code>composer.json</code>''' (sans vouloir réinstaller les dépendances).
| <code>composer dump-autoload</code>
|-
| Pour '''vérifier les espaces de noms (PSR-4)'''.
| <code>composer dump-autoload</code>
|}
-----
=== '''Différence avec <code>composer install</code> et <code>composer update</code>''' ===
* '''<code>composer install</code>''' :<br />
Installe les dépendances '''ET''' régénère l’autoloader.<br />
* '''<code>composer update</code>''' :<br />
Met à jour les dépendances '''ET''' régénère l’autoloader.<br />
* '''<code>composer dump-autoload</code>''' :<br />
'''Ne touche pas aux dépendances''' – ne fait que mettre à jour l’autoloader.
-----
=== '''Exemple concret dans un projet Symfony''' ===
<ol style="list-style-type: decimal;">
<li>'''Vous ajoutez une nouvelle entité <code>src/Entity/Product.php</code>''' :
<ul>
<li><p>Symfony utilise l’autoloading PSR-4, donc la classe sera automatiquement détectée.<br />
</p></li>
<li><p>Si elle n’est pas reconnue, exécutez :</p>
<syntaxhighlight lang="bash">composer dump-autoload</syntaxhighlight></li></ul>
</li>
<li>'''Vous développez un bundle local''' (lié via <code>&quot;type&quot;: &quot;path&quot;</code> dans <code>composer.json</code>) :
<ul>
<li><p>Après avoir modifié le bundle, pour que Symfony reconnaisse les nouvelles classes :</p>
<syntaxhighlight lang="bash">composer dump-autoload</syntaxhighlight></li></ul>
</li></ol>
-----
=== '''Bonnes pratiques''' ===
<ul>
<li><p>'''En développement''' :<br />
Utilisez <code>composer dump-autoload</code> après avoir ajouté des classes manuellement.<br />
</p></li>
<li><p>'''En production''' :<br />
Utilisez <code>composer dump-autoload --optimize</code> pour des performances optimales.<br />
</p></li>
<li><p>'''Avec Docker''' :<br />
Si vous montez un volume (<code>./:/var/www/html</code>), exécutez la commande '''dans le conteneur''' :</p>
<syntaxhighlight lang="bash">docker-compose exec app composer dump-autoload</syntaxhighlight></li></ul>
-----
=== '''Résumé''' ===
<code>composer dump-autoload</code> est un outil léger pour '''rafraîchir l’autoloader''' sans toucher aux dépendances. Indispensable pour :<br />
- Le développement de bundles locaux.<br />
- L’ajout manuel de classes.<br />
- L’optimisation en production.
Utilisez-la dès que vous rencontrez des erreurs du type :<br />
&gt; ''“Class ‘MonApp\Entity\Product’ not found”''
🚀 '''Astuce''' : Combinez-la avec <code>--optimize</code> en prod pour un boost de performances !
== Symfony cache et composer cache avec Docker : ==
== Symfony cache et composer cache avec Docker : ==