2010-02-01 11 views
6

C'è qualche consiglio su come iniziare a correggere uno script di php vecchio stile?Come risolvere un vecchio script php in stile di codifica

Pochi giorni fa ho ricevuto un'offerta per lo sviluppo di un vecchio progetto PHP, e con la vecchia maniera intendo che la struttura non utilizzava il metodo di codifica OOP e non ha un framework definito.

Sono confuso su dove iniziare e volevo sapere quali metodi ci sono per lo sviluppo di un vecchio script.

Nota: non vogliono spendere molti soldi per iniziare un nuovo progetto.

Quindi quali metodi suggeriresti per aggiornare un vecchio script php?

+2

Non penso che il non-OOP e il non-quadro siano un difetto in sé. Puoi scrivere app PHP perfettamente funzionanti senza nessuna di queste e, se l'applicazione funziona e ragionevolmente gestibile, non avere OOP o framework non è un buon motivo per iniziare a modificare il codice. Cattive pratiche di sicurezza (ad esempio iniezioni SQL e HTML sistemiche) e scarsa manutenzione (molte app di PHP soffrono di mancanza di commenti, cattivo mix di logica di azione con presentazione, assenza di struttura, rientro o modo coerente di fare le cose) - queste sono buone ragioni per aggiornare/riscrivere. – bobince

+0

Sto codificando qualcosa in questo momento in PHP e non uso un framework o OOP. Penso che i framework siano solo un extra bagaglio in una piccola applicazione e non mi sono mai preoccupato di come OOP è stato gestito in PHP. Ma non sono nemmeno una di quelle persone che pensano "Un'applicazione non è strutturata correttamente se non ci sono almeno 5 gradi di eredità dove va il codice effettivo che fa il lavoro" – Earlz

risposta

2

Dipende da cosa intendi per "vecchio". Vecchio come scritto per PHP 4? O vecchio come in non-OOP? (O entrambi?)

Vecchio come in PHP4:
Finché si vagliare attraverso di essa e sia eliminare gli avvisi o effettivamente risolvere funzione deprecata chiama tutto dovrebbe andare bene. Questo è semplicemente un lavoro noioso. Facile ed economico

Vecchio come nel non-OOP:
si potrebbe teoricamente sviluppare un applicazione molto stabile e scalabile, senza OOP o un preciso MVC (o altro) quadro. In effetti, se l'app è di piccole dimensioni, non c'è motivo di aggiungere la complessità di spaghetti e polpette di OOP o di un framework. Ri-scrivere tutto in OOP con qualche framework è difficile e costoso. E probabilmente molto eccessivo.

+1

Dice non-OOP nella domanda . –

1

Potete fornirci maggiori dettagli, forse un esempio.

Anche il codice procedurale contiene elementi di OOP. È possibile identificare variabili e procedure relative alla stessa entità. Potresti continuare a riscriverlo, ma avranno difficoltà a trovare valore in esso, specialmente se sono frugali, come hai suggerito.

0

Forse Il codice in questo momento assomiglia a questo alt text

e si desidera che assomiglia a questo

alt text

Beh se è solo uno script e non l'intero progetto vorrei convertirlo allo standard di codifica OOP.

+0

PHP ha persino una parola chiave 'goto'? – Earlz

3

Joel Spolsky writes:

"[Netscape fatto] il singolo peggiore errore strategico che qualsiasi società di software può fare: Hanno deciso di riscrivere il codice da zero."

Quindi, qualunque sia la vostra linea d'azione, la priorità è lavorare con il codice esistente. Il refactoring sarà uno dei migliori metodi che puoi usare.

Cosa non si può fare, se il codice base non viene aggiornato, che è assolutamente necessario? Quanto e di quanto in particolare è necessario aggiornare per quell'azione possibile? Considera queste due domande.

1

Quando si esegue questa operazione, è un processo in più fasi.In genere, c'è un prodotto esistente da mantenere in esecuzione. Riscrivere da zero è raramente un'opzione, anche se alla fine lo si fa.

  • cominciare a scavare manuale istruzioni include e realizzare un caricatore automatico, ove possibile (richiede molti passaggi)
  • Creare uno script di aiuto per simulare magic quotes & globali registro. In questo modo è possibile disattivarlo in PHP, mantenendo il codice esistente in esecuzione
  • Rimuovere gradualmente le strip_slashes eccessive o le chiamate add_slashes, se applicabile. Lo script di supporto ti consente di farlo per file.
  • Verificare che le variabili abbiano scope corretto
  • Separare il codice di presentazione. Considerare Smarty o modello alternativo sistema
  • Spostare il DB chiama a DOP e l'utilizzo dei parametri di sostituzione per tutto
  • guardare il codice e pensare spegnendo un front controller

Ho poi guardo il progetto e determino come ho intenzione di alterare la logica stessa. Spesso, se non ci sono funzioni, la mia prima pass è quella di avvolgere comportamenti comuni in metodi statici. Ottieni il maggior riutilizzo senza troppi sforzi, quindi non sono ancora interessato all'organizzazione.

Dopo la riduzione della ridondanza, arrivo all'organizzazione. È in questa fase che comincio a pianificare i miei modelli di classe e a ridefinire le funzioni in metodi puliti. Questo è anche il momento per i test automatici (phpunit). Una volta che sono ragionevolmente fiducioso, aggiungo alcuni controller e integro i modelli, quindi ho finito ... salvo uno o due ulteriori passaggi.

Per me, si tratta di identificare dove sono, dove voglio essere e fare un piano che può essere eseguito in diversi piccoli passi. Ognuno ha i propri obiettivi, quindi non c'è un piano magico da seguire tranne il tuo.

+0

Mi piace questa risposta, è qualcosa: D dimmi di più su PDO – Ghazanfari

+0

PDO è una libreria di database OOP per PHP. Offre iteratori, istruzioni preparate e un'interfaccia coerente. http://php.net/PDO – pestilence669

0

Leggere il loro codice. Parla con loro.

Verificare la modifica richiesta in termini di codice esistente. Parla con loro.

Decidi quanto poco cambierai per fare ciò che vuoi. Parla con loro.

Fallo. Parla con loro.

Quando chiedono funzionalità che possono essere più facilmente eseguite riscrivendole piuttosto che modificando, fatelo.

Lavorare con un IDE che può aiutare con il refactoring.

+0

quindi, suggerendomi di parlare con quegli stupidi uomini d'affari, il mio obiettivo principale è quello di proteggere questo progetto e svilupparlo in modo da poter stabilizzare il progetto. – Ghazanfari

+0

Non puoi assolutamente farlo senza il loro supporto. E hai accennato a qualcosa "Nota: non vogliono spendere molti soldi per iniziare un nuovo progetto". Questo tipo di attività sa di gestione del progetto e non di programmazione. A proposito: non possono essere "stupidi uomini d'affari" se hanno soldi da spendere in programmazione e sanno abbastanza da non spendere troppo! Fai attenzione ad essere visto come uno "stupido programmatore" che non può fare un semplice cambiamento. – Don