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.