Tutorial Symfony2 Come rimuovere un Bundle

0
1324

Nella precedente guida abbiamo visto che cos’è e come realizzare un  Bundle, oggi invece vedremo come rimuovere un Bundle.

Partiamo dal bundle di prova chiamato AcmeDemoBundle messo a disposizione da Symfony. Questo è un ottimo riferimento durante l’inizio di un progetto, ma probabilmente si vorrà rimuoverlo in un secondo momento.

Ecco cosa dobbiamo fare per rimuovere un Bundle:

  • De-registrare il bundle in AppKernel

Per sconnettere il bundel dal framework, occorre rimuoverlo dal metodo Appkernel::registerBundles().

Il bundle si trova solitamente nell’array $bundles, ma AcmeDemoBundle viene registrato solamente in ambiente di sviluppo, quindi lo si può trovare nell’istruzione successiva:

    // app/AppKernel.php
    // …
    class AppKernel extends Kernel
    {
        public function registerBundles()
        {
            $bundles = array(…);
            if (in_array($this->getEnvironment(), array(‘dev’, ‘test’))) {
                // commentare o eliminare questa riga:
                // $bundles[] = new Acme\DemoBundle\AcmeDemoBundle();
                // …
            }
        }
    }
  • Rimuovere la configurazione del bundle

Ora che Symfony non sa più nulla del bundle, occorre rimuovere ogni configirazione, dalla cartella app/config, che faccia riferimento al bundle.

 2.1 Rimuovere le rotte del bundle
Le rotte di AcmeDemoBundle si trovano in app/config/routing_dev.yml. Rimuovere la voce _acme_demo alla fine di questo file.

 2.2 Rimuovere la configurazione del bundle
Alcuni bundle contengono configurazione nei file app/config/config*.yml. Assicurarsi di rimuovere la configurazione relativa da questi file. Si può trovare rapidamente la configurazione del bundle, cercando la stringa acme_demo (o il nome del bundle, p.e. fos_user per FOSUserBundle) nei file di configurazione.

AcmeDemoBundle non ha configurazioni. Tuttavia, il bundle viene usato nella configurazione del file app/config/security.yml. Lo si può usare come base per la sicurezza, ma si può anche rimuovere tutto: a Symfony non importa se lo si rimuove o meno.

  • Rimuovere il bundle dal filesystem

Ora che ogni riferimento al bundle è stato rimosso, si può cancellare il bundle dal filesystem. Il bundle si trova nella cartella src/Acme/DemoBundle. Si rimuova tale cartella e si può rimuovere anche la cartella Acme.

Se non si conosce la posizione di un bundle, si può usare il metodo getPath() per ottenerne il percorso:
echo $this->container->get(‘kernel’)->getBundle(‘AcmeDemoBundle’)->getPath();

  •  Rimuovere l’integrazione con altri bundle

Questa parte non si applica a AcmeDemoBundle, non essendoci altri bundle che dipendono da esso, quindi si può saltare questo passo.
Alcuni bundle dipendono da altri bundle: rimuovendone solo uno, l’altro probabilmente non funzionerà. Assicurarsi che nessun altro bundle, di terze parti o fatto in casa, si appoggi al bundle che si vuole rimuovere.
Se un bundle si appoggia a un altro, la maggior parte delle volte è perché ne usa dei servizi. La ricerca della stringa acme_demo può aiutare a trovare tali servizi.
Se un bundle di terze parti si appoggia a un altro bundle, lo si può trovare menzionato nel file composer.json, incluso nella cartella del bundle.

Con questa  guida speriamo di esservi stati utili, per qualsiasi chiarimento fateci sapere.