2010-01-26 12 views
8

La mia squadra deve mantenere una grande applicazione php che è stata scritta male. È un mix di html, javascript e SQL su un grande database mal progettato (ad esempio, ha una tabella con poche centinaia di colonne). L'unico vantaggio del codebase è che funziona.Quale framework php usare sopra codebase spaghetti?

Siamo costantemente in grado di correggere e riscrivere parti di esso.

Vorrei dare una struttura alle riscritture che facciamo, quindi ho pensato di integrare un framework mvc nella codebase. Potresti suggerire qualche buon quadro per l'ambiente?

Ecco una lista delle cose che la mi aspetterei da questo quadro:

  • L'API deve essere molto stabile. Non possiamo permetterci di riscrivere il codice su ogni versione.
  • Gestione sessione personalizzata o almeno lavoro su standard $ _SESSION [] (Per poter parlare con il vecchio codice).
  • Autenticazione personalizzata.
  • L'utilizzo dell'SQL grezzo dovrebbe essere ben supportato (il database è difficile da rappresentare in termini di oggetti).
  • Non dovrebbe presumere che avrò una tabella per controller.
+0

non è una risposta vera, ma la mia regola per le dipendenze riguarda il mio ruolo o quello che dipenda maggiormente dalla dipendenza. Mi chiedo sempre "il mondo finirebbe se la biblioteca/quadro/qualsiasi cosa X scomparisse improvvisamente"? Preferisco dipendere da ciò che è più vicino al lato "sì" di quello spettro. –

+0

@Doug l'unica dipendenza del codebase è html, js e php. –

risposta

2

sto facendo eco Zend solo per elencare come si adatta alle vostre esigenze specifiche:

  • L'API deve essere molto stabile Non possiamo permetterci di riscrivere il codice su ogni versione.

Come accennato, l'API tende ad essere stabile tra versioni minori. Le versioni principali con modifiche non dovrebbero essere difficili da integrare.

  • gestione delle sessioni personalizzate o almeno lavorare su standard di $ _SESSION [] (Per essere in grado di parlare con il vecchio codice).

Zend_Session fa esattamente quello che vuoi. L'archivio di sessione predefinito è $ _SESSION a cui Zend aggiunge un concetto di spazio dei nomi. Il codice esistente dovrebbe essere corretto e qualsiasi nuovo codice può utilizzare l'oggetto Zend per garantire che non vi siano sovrapposizioni di nomi di variabili.

  • Autenticazione personalizzata.

Zend_Auth ha un paio di backend di autenticazione, ma è progettato per consentire di implementare il proprio autenticazione.

  • Uso SQL grezzo deve essere ben supportato (Il database è difficile da rappresentare in termini di oggetti).

Zend_DB implementa il pattern di gateway tabella che vi permetterà di accedere ai dati tramite l'oggetto; tuttavia, puoi anche utilizzare SQL direttamente e ottenere i risultati come array.

  • Esso non deve presumere che avrò un tavolo per controller.

Zend_Controller e il resto della implementazione MVC di Zend fare alcuna ipotesi circa il modello, lasciando che completamente a voi. Sono sicuro che a qualcuno non piaccia, ma è l'unica area del design MVC che varia molto da progetto a progetto, quindi è lasciata completamente allo sviluppatore. È possibile estendere alcune delle classi DB o semplicemente utilizzare il codice di accesso al DB esistente.

Questo è un esempio della mentalità pick-and-choose di Zend Framework. Puoi davvero usare qualsiasi libreria da sola. Questo dovrebbe funzionare bene con il tuo progetto. Ad esempio, è possibile utilizzare Zend_View senza il resto delle classi MVC solo per spostare la presentazione in modelli. Oppure usa Zend_Auth per sostituire il sistema di autenticazione esistente. Con Zend puoi spostare lentamente il tuo progetto in uno stato più strutturato, a poco a poco.

3

Suggerisco Zend Framework per questo scopo perché è una struttura di colla. Con ZF non sei costretto a sfruttare il modo in cui il framework si aspetta che tu possa lavorare con esso. Puoi scegliere ciò che desideri e sostituire gradualmente il tuo codice precedente con il codice di ZF. Supporta anche tutte le cose che hai menzionato.

Inoltre, suggerisco di eseguire i vari strumenti di QA trovati a phpqatools.org per supportarvi nel debugging e nel refactoring.

confronti Framework

+0

Cosa con stabilità api? Ho sentito che ci sono stati importanti cambiamenti tra 1.0 e 1.7 –

+0

1.0 non è più rilevante. La versione attuale è 1.9 con 1.10 attualmente in fase di test. L'API è stabile. Ci saranno dei cambiamenti importanti quando 2.0 è qui, ma ancora non ci sono ancora ETA. – Gordon

+0

Zend è probabilmente la soluzione migliore, anche perché (dal mio punto di vista, sto confrontando le strutture in questo momento) non richiederà di riscrivere immediatamente tutti gli spaghetti per conformarsi alla sua architettura. Tra tutti i framework, Zend è probabilmente il miglior candidato per consentire una transizione lenta. –