Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

La console di Symfony

La console di Symfony è uno strumento di sviluppo e produzione con cui è possibile creare degli script da far girare in caso di necessità o periodicamente
La console di Symfony è uno strumento di sviluppo e produzione con cui è possibile creare degli script da far girare in caso di necessità o periodicamente
Link copiato negli appunti

La console di Symfony è un tool che abbiamo a disposizione sia durante lo sviluppo di un progetto, sia durante il suo ciclo di vita in produzione. Attraverso la console, infatti, è possibile effettuare diverse operazioni già a disposizione ma soprattutto possiamo creare degli script da far girare in caso di necessità o come cron per le operazioni a cadenza periodica.

Vediamo innanzitutto quali sono i comandi messi a disposizione da Symfony e/o dalle librerie di terze parti già incluse nel nostro progetto. Per iniziare lanciamo il comando ./bin/console dal nostro container.

www-data@625b509dfd7c:~/kvak$ ./bin/console
Symfony 5.0.0 (env: dev, debug: true)
Usage:
  command [options] [arguments]
Options:
  -h, --help            Display this help message
  -q, --quiet           Do not output any message
  -V, --version         Display this application version
      --ansi            Force ANSI output
      --no-ansi         Disable ANSI output
  -n, --no-interaction  Do not ask any interactive question
  -e, --env=ENV         The Environment name. [default: "dev"]
      --no-debug        Switches off debug mode.
  -v|vv|vvv, --verbose  Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
Available commands:
  about                                   Displays information about the current project
  help                                    Displays help for a command
  list                                    Lists commands
 assets
  assets:install                          Installs bundles web assets under a public directory
 cache
  cache:clear                             Clears the cache

L’output appena visto è, in realtà, solo un estratto dei comandi disponibili. Lo scopo della lezione non è quello di descrivere tutti i comandi ma solo di introdurre la console. Non li analizzeremo tutti in questa fase, ma ne approfondiremo alcuni che ci aiuteranno durante lo sviluppo. I restanti li introdurremo man mano che ne avremo bisogno.

La sintassi

Per richiamare un comando dalla console è sufficiente appendere al file binario il nome del comando e, se necessario, l'ambiente in cui farlo girare.

./bin/console cache:clear --env=dev

Nell’esempio appena visto abbiamo lanciato il comando di pulizia cache per l’ambiente di sviluppo. Nel caso in cui l’opzione env venga omessa, l’applicazione prenderà come di default il valore contenuto all’interno della variabile d’ambiente APP_ENV contenuta nel file .env.

Se non ci sono casi di conflitti, la console è sufficientemente intelligente da accettare anche una porzione di comando anziché il nome completo. Il comando precedente, quindi, può essere richiamato anche nel modo seguente:

./bin/console c:c --env=dev

Comandi utili durante lo sviluppo

Oltre al comando con cui svuotare la cache essenziale sia durante lo sviluppo che, ad esempio, ogni volta che effettueremo un deploy in produzione, ci sono altri comandi che possono aiutarci mentre lavoriamo alla nostra applicazione. Vediamone alcuni.

debug
  debug:autowiring                        Lists classes/interfaces you can use for autowiring
  debug:config                            Dumps the current configuration for an extension
  debug:container                         Displays current services for an application
  debug:event-dispatcher                  Displays configured listeners for an application
  debug:form                              Displays form type information
  debug:router                            Displays current routes for an application
  debug:translation                       Displays translation messages information
  debug:twig                              Shows a list of twig functions, filters, globals and tests

Tutto il namespace debug contiene utilissime informazioni quando dobbiamo capire ad esempio perché una rotta non funziona o quali sono i servizi registrati nel container.

Servizi registrati nel container

Per consultare i dati relativi ai servizi registrati nel container possiamo lanciare il comando ./bin/console debug:container. Questa funzionalità ci è utile, ad esempio, per individuare la classe utilizzata da un determinato servizio.

www-data@625b509dfd7c:~/kvak$ ./bin/console debug:container
Symfony Container Services
==========================
 ------------------------------------------------- ----------------------------------------------------
  Service ID                                            Class name
 ------------------------------------------------- ----------------------------------------------------
  Doctrine\Common\Annotations\Reader                    alias for "annotations.cached_reader"
  Doctrine\Common\Persistence\ManagerRegistry           alias for "doctrine"
  Doctrine\DBAL\Connection                              alias for "doctrine.dbal.default_connection"
  Doctrine\DBAL\Driver\Connection                       alias for "doctrine.dbal.default_connection"
  Doctrine\ORM\EntityManagerInterface                   alias for "doctrine.orm.default_entity_manager"
  EasyCorp\EasyLog\EasyLogHandler                       EasyCorp\EasyLog\EasyLogHandler

Match di una rotta

Se invece volessimo sapere, data una rotta, quale action viene utilizzata, possiamo utilizzare il comando seguente:

www-data@625b509dfd7c:~/kvak$ ./bin/console router:match /_wdt/1
 [OK] Route "_wdt" matches
+--------------+--------------------------------------------------------------+
| Property     | Value                                                        |
+--------------+--------------------------------------------------------------+
| Route Name   | _wdt                                                         |
| Path         | /_wdt/{token}                                                |
| Path Regex   | #^/_wdt/(?P<token>[^/]++)$#sDu                               |
| Host         | ANY                                                          |
| Host Regex   |                                                              |
| Scheme       | ANY                                                          |
| Method       | ANY                                                          |
| Requirements | NO CUSTOM                                                    |
| Class        | Symfony\Component\Routing\Route                              |
| Defaults     | _controller: web_profiler.controller.profiler::toolbarAction |
| Options      | compiler_class: Symfony\Component\Routing\RouteCompiler      |
|              | utf8: true                                                   |
+--------------+--------------------------------------------------------------+

Per adesso ci fermeremo a questi comandi, ne vedremo però altri durante la guida che ci saranno di grande aiuto e, soprattutto, utilizzeremo la console per crearne di nostri.

Ti consigliamo anche