« 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>"type": "path"</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 /> | |||
> ''“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 : == | ||