PHP è il linguaggio più diffuso per la programmazione sul web. Qui ci sono trenta buone pratiche per i principianti che desiderano acquisire una solida comprensione dei fondamenti.
Nota dell'editore: La serie "Best Practices" è stata mia figlia per tre articoli ora. Tuttavia, a causa della mia attenzione sulla serie di video di CI, ho deciso di consegnare questa prossima voce a Glen. Detto questo, non sono molto bravo a tenere la bocca chiusa! Ho pensato che sarebbe stato divertente aggiungere sporadicamente alcune confutazioni ai suoi suggerimenti. Spero che non gli dispiaccia!
A proposito, se non sei sicuro di implementare alcune di queste cose tu stesso, puoi trovare esperti PHP su Envato Studio per aiutarti. Possono correggere gli errori o personalizzare il tuo sito per te, e sono sviluppatori esperti in modo che seguano le best practice durante il completamento del lavoro.
Esperti PHP su Envato StudioSe sei nuovo in PHP, allora è il momento di familiarizzare con la meraviglia che è il manuale PHP. Il manuale PHP è incredibilmente completo e contiene commenti veramente utili dopo ogni articolo. Prima di fare domande o provare a capire un problema da soli, risparmia un po 'di tempo e vai direttamente al manuale. Le probabilità sono la risposta alla tua domanda è già annidato in un utile articolo sul sito di PHP.net.
Segnalare errori in PHP è molto utile. Troverai bug nel tuo codice che potresti non aver individuato in precedenza, poiché non tutti i bug impediscono il corretto funzionamento dell'applicazione. Ci sono diversi livelli di rigore nei rapporti che puoi usare, ma E_ALL ti mostrerà la maggior parte degli errori, critici e avvertimenti allo stesso modo.
Una volta che hai preparato la tua applicazione per la produzione, ti consigliamo di disattivare la segnalazione degli errori, altrimenti i visitatori vedranno strani errori che non capiscono.
Gli IDE (Integrated Development Environments) sono strumenti utili per qualsiasi sviluppatore. Mentre non sono per tutti, un IDE ha sicuramente il suo posto. IDE fornisce strumenti come
E molte altre caratteristiche. Ci sono un sacco di ottimi IDE che supportano PHP.
Puoi imparare molto su PHP semplicemente sperimentando con framework PHP. Framework come CakePHP o CodeIgniter consentono di creare rapidamente applicazioni PHP, senza dover essere esperti di PHP. In un certo senso, sono quasi come ruote di addestramento del PHP che mostrano come dovrebbe apparire un'applicazione PHP e mostrano preziosi concetti di programmazione (come separare la logica dal design, ecc.).
Ci sono anche alcuni framework specializzati disponibili su Envato Market, come Blaze e Frameworx.
Confutazione: personalmente non consiglierei ai principianti di utilizzare un framework. Impara prima i fondamenti. :)
DRY è l'acronimo di Do not Repeat Yourself ed è un prezioso concetto di programmazione, indipendentemente dalla lingua. La programmazione DRY, come suggerisce il nome, garantisce che non si scriva codice ridondante. Ecco un esempio di Reinhold Weber:
Questo codice ...
$ mysql = mysql_connect ('localhost', 'reinhold', 'secret_hash'); mysql_select_db ('wordpress') o die ("non può selezionare DB");
ora con l'approccio DRY:
$ db_host = 'localhost'; $ db_user = 'reinhold'; $ db_password = 'secret_hash'; $ db_database = 'wordpress'; $ mysql = mysql_connect ($ db_host, $ db_user, $ db_password); mysql_select_db ($ db_database);
Puoi leggere di più sul principio di programmazione DRY qui e qui.
Se non usi indentazioni e spazio bianco nel tuo codice, il risultato sembra un dipinto di Jackson Pollack. Assicurati che il tuo codice sia leggibile e facile da cercare perché in futuro creerai sicuramente dei cambiamenti. Gli IDE e gli editor di testo avanzati possono aggiungere automaticamente i rientri.
Il livellamento delle applicazioni non è altro che separare i diversi componenti del codice in parti diverse. Questo ti permette di cambiare facilmente il tuo codice in futuro. Lo scrittore di NETTUTS Jason Lengstorf ha scritto un eccellente articolo su come modificare le tue applicazioni PHP per una manutenzione più semplice.
Spesso i programmatori cercano di prendere scorciatoie quando dichiarano PHP. Eccone alcuni comuni:
echo "Hello world"; ?> ="Hello world"; ?> <% echo "Hello world"; %>
Mentre questi fanno risparmiare alcuni caratteri, tutti questi metodi sono ammortizzati e non ufficiali. Attenersi allo standard come sarà garantito per essere supportato in tutte le versioni future.
Dare un nome a questo non è solo per il tuo bene. Non c'è niente di peggio che cercare di trovare la strada attraverso le convenzioni di denominazione assurde di altri programmatori. Aiuta te stesso e altri usando nomi che hanno senso per le tue classi e funzioni.
Oltre a utilizzare lo spazio bianco e le rientranze per separare il codice, ti consigliamo di utilizzare i commenti incorporati per annotare il tuo codice. Ti ringrazierai più tardi quando avrai bisogno di tornare indietro e trovare qualcosa nel codice, o se semplicemente non riesci a ricordare cosa ha fatto una determinata funzione. È anche utile per chiunque altro debba controllare il tuo codice.
MySQL è il tipo più popolare di database da utilizzare con PHP (anche se non è l'unico). Se vuoi configurare un ambiente locale per sviluppare e testare le tue applicazioni PHP sul tuo computer, guarda all'installazione di MAMP (Mac) o WAMP (Windows). Installare MySQL sul tuo computer può essere un processo noioso, e entrambi questi pacchetti software sono installazioni drop-in di MySQL. Pulito e semplice.
Mettere un limite di tempo sui tuoi script PHP è una cosa molto critica. Ci sono momenti in cui i tuoi script falliscono, e quando lo fanno, ti consigliamo di usare la funzione set_time_limit per evitare loop infiniti e timeout di connessione al database. Il set_time_limit mette un limite di tempo sul numero massimo di secondi in cui uno script verrà eseguito (il valore predefinito è 30). Dopo questo periodo di tempo, viene generato un errore fatale.
La programmazione orientata agli oggetti (OOP) utilizza oggetti per rappresentare parti dell'applicazione. OOP non è solo un modo per suddividere il codice in sezioni logiche separate, ma riduce anche la ripetizione del codice e rende molto più facile la modifica in futuro. Se vuoi saperne di più, DevArticles ha un ottimo articolo sulla programmazione orientata agli oggetti con PHP.
È più efficiente da usare singolo le virgolette nelle stringhe poiché il parser non deve setacciare il codice per cercare caratteri di escape e altre cose consentite dalle virgolette. Cerca sempre di usare le virgolette singole quando possibile.
Confutazione: In realtà, non è necessariamente vero. I test di benchmark dimostrano che, quando si testano le stringhe senza variabili, ci sono indubbi vantaggi prestazionali nell'uso virgolette.
Phpinfo è una cosa bellissima. Semplicemente creando un file PHP che ha
e lasciandolo sul sever da qualche parte, puoi immediatamente imparare tutto sul tuo ambiente server. Tuttavia, molti principianti posizioneranno un file contenente phpinfo () nel webroot del server. Questa è una pratica veramente insicura, e se gli occhi indiscreti accedono, potrebbe potenzialmente significare destino per il tuo server. Assicurati che phpinfo () si trovi in un posto sicuro e, come misura aggiuntiva, cancellalo una volta terminato.
Se la tua applicazione ha dei posti per l'input dell'utente, dovresti sempre dare per scontato che proveranno a inserire codice non valido. (Non intendiamo che i tuoi utenti siano cattivi. È solo un buon modo di pensare.) Un ottimo modo per mantenere il tuo sito privo di hacker è di inizializzare sempre le tue variabili per salvaguardare il tuo sito dagli attacchi XSS. PHP.net ha un esempio di un modulo correttamente protetto con variabili inizializzate:
Molti principianti di PHP spesso scaricano dati sensibili come password nel database senza applicare alcuna crittografia. Prendi in considerazione l'utilizzo di MD5 per crittografare le password prima di inserirle nel database.
echo md5 ('myPassword'); // rende - deb1536f480475f7d593219aa1afd74c
confutazione: Tieni presente, tuttavia, che gli hash MD5 sono stati da tempo compromessi. Sono assolutamente più sicuri di no, ma, con l'uso di un enorme "tavolo arcobaleno", gli hacker possono incrociare il tuo hash. Per aggiungere ancora più sicurezza, prendi in considerazione l'aggiunta di un sale. Un salt è fondamentalmente un set aggiuntivo di caratteri che si aggiunge alla stringa dell'utente.
Se hai difficoltà a pianificare e modificare i database per le tue applicazioni PHP, potresti utilizzare uno strumento di visualizzazione del database. Gli utenti di MySQL possono lavorare con DBDesigner e MySQL Workbench per progettare visivamente i tuoi database.
Il buffering dell'output è un modo semplice per migliorare notevolmente le prestazioni e la velocità dello script PHP. Senza il buffering dell'output, lo script mostrerà l'HTML sulla pagina man mano che viene elaborato, a pezzi. L'aggiunta del buffer di output consente al PHP di memorizzare l'HTML come variabile e inviarlo al browser in un blocco.
Per abilitare il buffering dell'output, aggiungi semplicemente ob_start () in questo modo nella parte superiore del file.
Confutazione: Sebbene non sia richiesto, è generalmente considerata una buona pratica andare avanti e aggiungere "ob_end_flush ();" funziona anche nella parte inferiore del documento. Post scriptum Vuoi comprimere anche l'HTML? Semplicemente sostituisci "ob_start ();" con "ob_start ('ob_gzhandler')";Fare riferimento a questo articolo Dev-tips per ulteriori informazioni.
Senza titolo
Se non si sfuggono i caratteri utilizzati nelle stringhe SQL, il codice è vulnerabile alle iniezioni SQL. Puoi evitarlo usando mysql_real_escape_string o usando istruzioni preparate.
Ecco un esempio di mysql_real_escape_string in azione:
$ username = mysql_real_escape_string ($ GET ['username']);
e una dichiarazione preparata:
$ id = $ _GET ['id']; $ statement = $ connection-> prepare ("SELECT * FROM tbl_members WHERE id =?"); $ statement-> bind_param ("i", $ id); $ Statement-> execute ();
Utilizzando le istruzioni preparate, non incorporiamo mai i dati immessi dall'utente direttamente nella nostra query. Al contrario, utilizziamo il metodo "bind_param" per associare i valori (e l'escape) alla query. Molto più sicuro e, soprattutto, più veloce quando si eseguono più istruzioni CRUD contemporaneamente.
Maggiori informazioni sulla creazione di applicazioni PHP sicure su Nettuts.
Se stai scrivendo PHP orientato agli oggetti, puoi usare il nifty relational mapping (ORM). ORM consente di convertire i dati tra database relazionali e linguaggi di programmazione orientati agli oggetti. In breve: ORM ti consente di lavorare con i database nello stesso modo in cui lavori con classi e oggetti in PHP.
Ci sono un sacco di librerie ORM per PHP come Propel, e ORM è integrato in framework PHP come CakePHP.
Caching delle pagine PHP basate su database è un'ottima idea per migliorare il carico e le prestazioni del tuo script. Non è poi così difficile creare e recuperare file statici di contenuti con l'aiuto del nostro buon amico ob_start (). Ecco un esempio tratto da Snipe.net:
// TOP del tuo script $ cachefile = 'cache /'. Basename ($ _ SERVER ['SCRIPT_URI']); $ cachetime = 120 * 60; // 2 ore // Servire dalla cache se è minore di $ cachetime if (file_exists ($ cachefile) && (time () - $ cachetime < filemtime($cachefile))) include($cachefile); echo ""; exit; ob_start (); // avvia il buffer di output // Il tuo normale script PHP e contenuto HTML qui // BOTTOM del tuo script $ fp = fopen ($ cachefile, 'w'); // apri il file cache per scrivere fwrite ($ fp, ob_get_contents ()); // salva il contenuto del buffer di output nel file fclose ($ fp); // chiude il file ob_end_flush (); // Invia l'output al browser
Questo bit di codice utilizzerà una versione memorizzata nella cache di una pagina di meno di 2 ore.
Se vuoi un sistema di caching più robusto, ci sono alcuni script di caching per PHP che potrebbero essere più completi rispetto all'esempio precedente.
I dati dei cookie, come tutti i dati trasmessi sul Web, possono essere dannosi. Puoi convalidare i dati dei cookie con htmlspecialchars () o mysql_real_escape_string ().
Oltre all'uso di sistemi di memorizzazione nella cache del database come Memcached, potresti anche provare un sistema di template per aumentare le prestazioni nelle tue applicazioni PHP. Smarty è un robusto sistema di template che ha incorporato il caching.
Profilare il codice con uno strumento come xdebug può aiutarti a individuare rapidamente i colli di bottiglia e altri potenziali problemi nel codice PHP. Alcuni IDE come Netbeans hanno anche funzionalità di profiling PHP.
Una volta che hai messo giù le corde del PHP, puoi iniziare a imparare a programmare su uno standard. Ci sono differenze tra le norme là fuori (diciamo Zend e Pera), e trovarne una e attenervisi ti aiuterà con la coerenza della tua codifica a lungo andare.
Ottieni un successo quando includi funzioni all'interno di loop. Più grande è il loop che hai, più lungo sarà il tempo di esecuzione. Prendi il tempo e la linea di codice in più e posiziona la funzione al di fuori del ciclo.
Nota del redattore: pensa in questo modo. Prova a rimuovere quante più operazioni possibile dal ciclo. Hai davvero bisogno di creare quella variabile per ogni iterazione del ciclo? Hai davvero bisogno di creare la funzione ogni volta? Ovviamente no. :)
Ad alcune persone piace provare a rendere il loro codice più attraente copiando variabili predefinite a variabili con nomi più piccoli. Questo è ridondante e potrebbe potenzialmente raddoppiare la memoria del tuo script. Google Code ha esempi buoni e buoni di utilizzo delle variabili:
Male
$ description = strip_tags ($ _ POST ['description']); echo $ description;
Buono
echo strip_tags ($ _ POST ['description']);
Confutazione: in riferimento al commento sul "raddoppio della memoria", questo in realtà è un malinteso comune. PHP implementa la gestione della memoria "copy-on-write". Ciò significa che è possibile assegnare un valore a tutte le variabili che vuoi senza doversi preoccupare dei dati essere copiato. Mentre è discutibile che l'esempio "Buono" esemplificato sopra potrebbe rendere il codice più pulito, dubito fortemente che sia più veloce.
Sebbene sembri una cosa di buon senso, molte persone non aggiornano PHP tutte le volte che dovrebbero. Ci sono molti aumenti delle prestazioni tra PHP 4 e PHP 5. Controlla il tuo server per assicurarti di essere aggiornato.
Migliore è la possibilità di ridurre il numero di query del database, migliore sarà lo script PHP. Esistono strumenti come Stace (Unix) e Process Explorer (Windows) che consentono di trovare processi ridondanti e come combinarli.
È solo la natura umana a voler nascondere il fatto che non sappiamo molto su un determinato argomento. A nessuno piace essere un n00b! Ma come impareremo senza chiedere? Sentiti libero di usare forum, IRC, StackOverflow per porre domande di sviluppatori PHP più esperti. Il sito Web PHP ha una pagina su come ottenere l'aiuto di PHP.
Hai qualche confutazione da te? Sono sicuro che lo fai! Iniziamo il dibattito.