2012-09-21 24 views
11

Il mio gruppo si trova a src/Cinergy/Bundle/ComponentBundle/CinergyComponentBundle.php e il nome logico del pacchetto è 'CinergyComponentBundle'.Come rinominare un pacchetto in symfony?

Poiché non sono rimasto fedele alla convenzione di denominazione dell'azienda, devo modificare il nome logico del pacchetto. Lascio asume Devo rinominarlo a 'XXXCinergyComponentBundle'

Quali file devo modificare?

Ho provato a rinominare il file CinergyComponentBundle.php e la classe contenente in XXXCinergyComponentBundle.php. Ho anche cambiato il riferimento in AppKernel.

Purtroppo questo non funziona. Quando provo a cancellare la cache ricevo questo messaggio di errore:

[Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException]         
The service "cinergy.people.direct.php" has a dependency on a non-existent service "cinergy.work.registry". 

Questi due servizi appartengono al fascio con il nuovo nome. Questo mi porta alla conclusione che mi manca qualcosa nel processo di rinomina.

Qualche idea?

+0

controllare questo [Video] (https://www.youtube.com/watch?v=ldyUhirsrNo) –

risposta

3

È necessario aggiornare l'intero spazio dei nomi in ciascun file.

Si stava utilizzando namespace Cynergy\ComponentBundle\Something; ma si sta ora utilizzando namespace XXXCynergy\ComponentBundle\Something;

Non dimenticare di aggiornare il vostro services.(xml|yml).

+0

Per quanto ho capito, questo non è corretto. Non sto cambiando il percorso del pacchetto. Sto solo cambiando il nome logico. – BetaRide

+3

Quindi ti sbagli, a causa di PSR-0/1/2 devi mappare il tuo spazio dei nomi con il filesystem, o impostare manualmente il caricatore automatico. –

+0

Sto cambiando il nome di una classe ed è solo il file PHP. Non sto cambiando il nome di un'intera namespace/directory. Dal momento che AppKernel trova felicemente la classe rinominata, dubito che ci sia un problema di autoloader/classe/nome file. – BetaRide

9

Ho appena completato la ridenominazione di un pacchetto e sono finito allo stesso punto di un paio di minuti fa. A questo punto ho usato la funzione di sostituzione dei miei editor. Sembra che vi sono alcuni file che hanno bisogno di qualche attenzione in più, che si trovano qui (supponendo che il vecchio nome del bundle è stato AcmeOldBundle, nuova sarà AcmeNewBundle):

  1. Acme \ OldBundle \ OldBundle.php -> NewBundle.php
  2. Acme \ OldBundle \ DependencyInjection \ AcmeOldExtension.php -> AcmeNewExtension.php

non dimenticare di aggiornare la classe nomi all'interno dei file come bene.

+1

Proprio facendo eco a quanto sopra; l'editor/search replace non rinominerà i file, che sono facilmente trascurati. Quindi, per sicurezza, usa questo: 'find. -name '* AcmeOldExtension *' 'e quindi rinominare manualmente i file (che potrebbero essere come sopra). – fazy

7

Le risposte attuali effettivamente spiegano cosa fare per rinominare un fascio, ma lasciano un paio di cose:

  1. rinominare il fascio in /app/AppKernel.php

    Da:

    $bundles = [ 
        // ... 
        new Acme\OldBundle\AcmeOldBundle(), 
    ]; 
    

    A:

    $bundles = [ 
        // ... 
        new Acme\NewBundle\AcmeNewBundle(), 
    ]; 
    
  2. file e cartelle

    È necessario rinominare i file e le cartelle che contiene il codice di ridenominazione:

    src/Acme/OldBundle -> src/Acme/NewBundle 
    src/Acme/OldBundle/OldBundle.php -> src/Acme/NewBundle/NewBundle.php 
    
    # If present 
    src/Acme/OldBundle/DependencyInjection/AcmeOldExtension.php -> src/Acme/NewBundle/DependencyInjection/AcmeNewExtension.php 
    
  3. namespace

    Questo sarà probabilmente andare con dimenticando alcuni file e la ricerca attorno al fascio per ogni partita La cosa migliore da fare sta facendo un find-sostituzione:

    # find -> replace 
    acme_old -> acme_new 
    Acme\OldBundle\ -> Acme\NewBundle 
    AcmeOld -> AcmeNew 
    Acme:Old -> Acme:New 
    Acme:OldBundle -> Acme:NewBundle 
    

    Assicuratevi di controllare tutti gli spazi dei nomi, nomi di classe ei file di configurazione in bundle.

  4. file di configurazione globale

    di ricerca per qualsiasi occorrenza del vostro vecchio nome del bundle in app/config/ e sostituirlo con il nuovo nome del bundle.

Problemi correlati