2012-11-16 16 views
25

Devo migrare un'applicazione da Zend Framework 1.12.0 alla versione 2. Sembra che ci sia no migration guides yet. Ho già studiato le convenzioni per la codifica di ZF2 e ho adottato gli spazi di distribuzione delle dipendenze (Zend \ Di) e PHP 5.3. Il mio obiettivo è di refactoring la mia applicazione ZF1 in un modulo ZF2.Migrazione graduale da Zend Framework 1 a 2

Domanda: E 'possibile procedere passo-passo con un'applicazione di lavoro, almeno in parte dopo ogni passo e evitare enorme refactoring passi? Se sì, quali sono i passaggi?

Ecco la mia idea di una migrazione tale passo-passo, ma non so se io alla fine con una domanda di lavoro dopo ogni passo:

  1. Inizia impostando la ZF2 Skeleton Application
  2. Set up a new module (MyApp) e riorganizzare i contenuti della mia applicazione ZF1 nella struttura della cartella del modulo MyApp. Quindi imposta la configurazione di base e il bootstrap e migra IndexController estendendolo dal ZF2 AbstractActionController. I modelli (Zend_Db) e le viste (Zend_View) verranno migrati in seguito. L'obiettivo qui è avere un IndexController :: indexAction funzionante che non ha molte dipendenze.
  3. Configurare più configurazione e bootstrap (instradamento, traslazione, locale, cache, Db, Acl, ViewHelpers, ...). Mi piacerebbe impostare le versioni ZF1 di questi componenti prima e migrarli successivamente uno per uno.
  4. Migrare gli altri controller e configurare l'integrazione delle dipendenze nei controller con Zend \ Di o con using the ServiceManager.
  5. Impostare la distribuzione automatica eseguendo il vecchio script phing con la nuova struttura di directory.
  6. Migrare le viste (inclusi gli helper) e i moduli a ZF2.
  7. Migrare i modelli (da Zend_Db a ZF2 Zend \ Db oa Doctrine).
  8. Migrare gli altri componenti ZF1 uno per uno (Translate, Locale, Cache, Acl, ...).
  9. Refactoring rehab e lunga vacanza.

Tuttavia, avrò un'applicazione di lavoro dopo ogni passaggio solo se determinati componenti ZF2 funzionano insieme ai componenti ZF1. Non ho idea se sia per es. possibile utilizzare le viste ZF1 (e visualizzare gli helper) con i controller ZF2.

+0

Si può avere, infatti, il lavoro ZF1 e laterale ZF2 a fianco, in modo da piccoli passi sono possibili. Il problema più grande è riorganizzare il tuo progetto. Direi che un'applicazione ZF1 è in genere più di un modulo. Hai praticamente una buona comprensione e il tuo punto di partenza va bene. La migrazione è una cosa complicata e di solito finisce con il refactoring praticamente di tutto: P – Sam

+2

Pensa a ZF2 come a un intero nuovo framework in cui vuoi migrare. Scommetto che avresti bisogno di riscrivere tutta la tua applicazione ... – shadyyx

+0

Non pensare che troverai una guida alla migrazione. Penso che si dovrà riscrivere il vostro app per ZF2 – Andreas

risposta

8

migrazione da Zend Framework 1

Questa guida è destinata a fornire strumenti e strategie per la migrazione da Zend Framework 1 a Zend Framework 2. Non esiste un'unica soluzione che funziona per ogni progetto, né qualsiasi strumento per automatizzare il processo.

In questa guida, ci coprirà le seguenti:

  1. Strumenti per namespacing codice.
  2. Strumenti per utilizzare Zend Framework 2 all'interno dell'applicazione Zend Framework 1.
  3. Strategie per l'esecuzione di Zend Framework 2 e Zend Framework 1 in parallelo.
  4. Strategie per semplificare la migrazione del codice, concentrandosi principalmente sulla separazione netta della logica di dominio e del livello MVC.
  5. Strategie per la migrazione del livello MVC.
  6. Strategie per la migrazione del livello dominio.

http://framework.zend.com/manual/2.1/en/migration/overview.html

+0

Non l'ho ancora fatto (ancora) ma almeno è dalla fonte ufficiale. Se lo finisco (con successo) aggiornerò questo. – electblake

7

Da qualche parte una volta è stato scritto che sarà facile con un po 'di livello intermedio, ma non ho mai visto nessun collegamento o altro nella libreria che assomigliasse in remoto.

Ora l'unica cosa e le ultime informazioni che è possibile trovare è nella pagina Panoramica della documentazione. È questo:

Nota ZF2 non è retrocompatibile con ZF1, a causa delle nuove funzionalità in PHP 5.3+ implementate dal framework e a causa di importanti riscritture di molti componenti.

mi sarei mai aspettato che fosse compatibile ma la dichiarazione chiave qui credo sia la principali riscritture di molti componenti.

Ho avviato un nuovo progetto con ZF2 alcuni mesi fa, dove volevo solo la libreria; quindi niente MVC che dovrebbe essere facile, giusto? Finora è stato praticamente un incubo perché niente è più lo stesso. Oltre ad alcuni nomi di classi familiari o strutture l'intero quadro è stato completamente riscritto da zero.

Le cose che ho amato, usato molto e sapevo a memoria come i moduli, il cache o la sessione sono completamente diversi. Per il mio progetto mi è costato molto tempo senza alcun beneficio. Uno degli oggetti chiave per ZF2 che ho pensato è stato quello di revisionare la documentazione che è alquanto peggiore di quella scritta rispetto a quella precedente.

Per i miei altri progetti ZF1.x esistenti non vedo come gestire un aggiornamento se non per riscrivere completamente l'applicazione.

+0

Il vantaggio principale di ZF2 è la sua modularità. Non è necessario riscrivere tutto come nel caso di ZF1. È stato un obiettivo iniziale fornire un livello intermedio per migrare tra ZF1 e ZF2, ma al momento non è così e francamente dubito che ci sarà. – Sam

+0

@ Sam Non so perché pensi che ZF1 non fosse modulare; è una biblioteca in quanto tale deve essere modulare. Raramente ho dovuto riscrivere qualsiasi cosa in ZF1. E la domanda da parte del PO non si tratta di ZF2 vs ZF1 –

+0

stavo commentando sul tuo post e io non stava rendendo un dibattito di ZF1 vs ZF2 :) E con modulare stavo parlando ZF1-applicazioni - quelli non sono modulari. Lo stesso framework è di alto livello;) – Sam

1

Dal Zend Framework 2 FAQ:

Ho un'applicazione costruita con Zend Framework 1 - Sarò in grado di migrare alla nuova versione?

Assolutamente. Una parte importante di Zend Framework 2 è il livello di migrazione che consentirà l'esecuzione del codice ZF 1 sul nuovo motore ZF 2, che sarà reso disponibile in futuro. Con esso, sarete in grado di aggiungere un nuovo codice ZF 2 e rifattorizzare il codice esistente, a un ritmo controllato.

Tuttavia, a questo punto, non ho sentito alcun livello di migrazione effettivo. Possiamo solo sperare che ci sarà, ma a questo punto, ho i miei dubbi.

1

Ci sono state migrando un'applicazione di grandi dimensioni da Zend Framework 1 a Zend Framework 2 nel corso dell'ultimo anno. Abbiamo iniziato con cose semplici come il namespace, e lentamente ci siamo addentrati nei vari componenti della libreria. Alla fine, abbiamo modificato Zend_Layout per lavorare con Zend\Filter, Zend_Form per lavorare con Zend\Filter e Zend\Json, Zend_Navigation per lavorare con Zend\Permissions\Acl, ecc.Ciò ha contribuito di eliminare quasi tutte le componenti ZF1 con l'eccezione della struttura dell'applicazione ZF1 che comprende quattro classi Zend_Application, Zend_Config, Zend_Controller e Zend_Layout. Il pezzo finale del puzzle è l'implementazione di Zend\Mvc\Application e Zend\View, il resto è pronto per ZF2.

Più di recente, abbiamo creato un proxy di sorta per collegare i moduli Zend\Mvc\Application e ZF2 da ZF1. Questo è stato estremamente utile. Ho dettagliato i passaggi su http://webjawns.com/2013/11/migrating-to-zf2-integrating-composer-and-doctrineormmodule/.

In sintesi ...

  • Converti prefissi di namespace (Model_-Model\, Application_Controller-Application\Controller, etc.)
  • sostituire i componenti non-MVC con ZF2 omologhi tra cui caricatore automatico
  • Creare applicazione ZF2 struttura e ganci per iniziare utilizzando moduli ZF2
  • controllori Spostare e vista (ancora lavorando su un piano per questo)