Con l'adozione diffusa di PHP, è quasi troppo facile trovare uno script o uno snippet da fare Esattamente quello di cui hai bisogno. Sfortunatamente, non c'è alcun filtro su cosa sia una "buona pratica" e cosa c'è, beh ... non è così bello quando si scrive uno script PHP. Abbiamo bisogno di fonti affidabili, che abbiano dimostrato di avere una solida conoscenza delle migliori pratiche di PHP.
Abbiamo bisogno di master PHP per mostrarci i migliori principi da seguire per la programmazione PHP di alto livello.
Non c'è risorsa migliore del creatore di PHP per sapere di cosa sia capace PHP. Rasmus Lerdorf ha creato PHP nel 1995 e da allora il linguaggio si è diffuso a macchia d'olio attraverso la comunità degli sviluppatori, cambiando il volto di Internet. Tuttavia, Rasmus non ha creato PHP con questo intento. PHP è nato dall'esigenza di risolvere problemi di sviluppo web.
E come per molti progetti open source che sono diventati popolari, la motivazione non è mai stata filosofica o addirittura narcisistica. Era puramente il caso di aver bisogno di uno strumento per risolvere problemi legati al mondo reale. Nel 1994 le opzioni erano abbastanza limitate quando si trattava di strumenti di sviluppo Web.
Tuttavia, non è possibile utilizzare PHP per tutto. Lerdorf è il primo ad ammettere che PHP è davvero solo uno strumento nella tua cassetta degli attrezzi, e che anche PHP ha dei limiti.
Usa lo strumento giusto per il lavoro. Ho incontrato aziende che hanno completamente acquistato in PHP, distribuendolo assolutamente ovunque, ma non è mai stato concepito per essere un linguaggio generico appropriato per ogni problema. È più a casa come linguaggio di scripting front-end per il Web.
Cercare di usare PHP per tutto non è efficiente, e certamente non è il miglior uso del tuo tempo come sviluppatore web. Non aver paura di usare altre lingue se PHP non funziona per il tuo progetto.
Nessuno ha bisogno di mettere in discussione l'autorità di Matt Mullenweg con PHP. Ha (insieme a una comunità rabbiosa) sviluppato il sistema di blogging più popolare del mondo: Wordpress. Dopo aver creato Wordpress, Matt e la società hanno lanciato lo stellare Wordpress.com, un sito di blog gratuito basato sul software di blogging basato su code code di Wordpress MU per blog multipli. Al momento della stesura di questo articolo, Wordpress.com ospita oltre 4 milioni di blog e oggi i loro utenti hanno scritto oltre 140.000 post. (Puoi vedere statistiche più interessanti sull'utilizzo di Wordpress.com qui.)
Se qualcuno sa come scalare un sito web, è Matt Mullenweg. Nel 2006, Matt ha fornito alcune informazioni sulla struttura del database di Wordpress e ha spiegato perché Wordpress MU utilizza una tabella MySQL separata per ogni blog, invece di utilizzare una tabella gigante "monolitica" per tutti i blog.
Abbiamo testato questo approccio per MU, ma abbiamo scoperto che era troppo costoso per superare un certo punto. Con strutture monolitiche colpisci un muro in base al tuo hardware. In MU gli utenti sono divisi e possono essere partizionati facilmente, ad esempio su WordPress.com abbiamo gli utenti suddivisi tra 4096 database, che consente di scalare in modo molto economico ed efficiente a centinaia di migliaia e persino milioni di utenti e livelli di traffico estremamente elevati.
Essere in grado di migrare le tabelle consente al codice e, in definitiva, ai blog di funzionare molto più rapidamente e scalare più facilmente. Accanto ad alcuni pesanti caching e all'uso intelligente del database, Matt ha dimostrato che siti estremamente popolari come Facebook e Wordpress.com possono funzionare senza PHP e gestire l'incredibile traffico.
Dave Child è il frutto dell'ingegno (teehee) dietro il sito web Added Bytes (precedentemente ilovejackdaniels.com), che è stato rinominato di recente e che conteneva gli eccellenti trucchi di Dave per molti linguaggi di programmazione. Dave ha lavorato per molte società di sviluppo nel Regno Unito e si è affermato come autorità nel mondo della programmazione.
Dave offre alcuni consigli saggi quando si tratta di scrivere codice sicuro in PHP: non fidatevi dei vostri utenti. Potrebbero solo ferirti.
Quindi la regola cardinale di tutto lo sviluppo del web, e non posso sottolinearlo abbastanza, è: mai, mai, fidati dei tuoi utenti. Assumi che ogni singolo pezzo di dati raccolto dal tuo sito da un utente contenga codice dannoso. Sempre. Ciò include i dati che ritieni di aver verificato con la convalida sul lato client, ad esempio utilizzando JavaScript. Se riesci a farcela, inizierai bene. Se la sicurezza di PHP è importante per te, questo singolo punto è il più importante da imparare.
Dave continua a fornire esempi specifici di pratiche sicure nelle parti 1, 2 e 3 della sua serie "Writing Secure PHP". Ma il suo ultimo take-away è questo:
Infine, sii completamente e assolutamente paranoico.
Se si presuppone che il tuo sito non verrà mai attaccato o che si troverà ad affrontare problemi di qualsiasi tipo, allora quando qualcosa andrà a finire male, ti troverai in grossi problemi. Se, d'altra parte, presumi che ogni singolo visitatore del tuo sito sia fuori per prenderti e che tu sia permanentemente in guerra, ti aiuterai a mantenere il tuo sito sicuro e ad essere preparato nel caso in cui le cose dovessero andare storte.
Ben Balbo ha scritto per Site Point, un sito tutorial molto apprezzato per sviluppatori e designer. È nel comitato sia per il PHP User Group di Melbourne che per il Open Source Developers 'Club, quindi conosce un paio di cose sulla lingua. Non è una sorpresa il fatto che Ben abbia una formazione in PHP come sviluppatore e formatore, e raccomanda di dedicare un po 'più di riflessione e preparazione al caching di PHP.
Se si dispone di un sito Web occupato e prevalentemente statico, ad esempio un blog, gestito tramite un sistema di gestione dei contenuti, è probabile che richieda poche modifiche, tuttavia potrebbe beneficiare di enormi miglioramenti delle prestazioni derivanti da un piccolo investimento del proprio tempo. Configurare la memorizzazione nella cache per un sito più complesso che genera contenuti per utente, come un portale o un sistema di carrello, risulterà un po 'più complicato e dispendioso in termini di tempo, ma i vantaggi sono ancora chiari.
Esistono molte tecniche diverse per il caching in PHP e Ben ne tocca alcune di quelle più grandi nell'articolo, come:
e molti altri. A causa della natura dei linguaggi dinamici come PHP, il caching è fondamentale per memorizzare quelle parti della pagina a cui si accede frequentemente e non cambiano spesso.
Quando Chad Kieffer non è impegnato nel dondolare le interfacce utente e nell'amministrare i database, sta dando consigli esperti dal suo blog 2 cucchiai. A causa dell'ampio settore di competenza di Chad, è spesso in grado di vedere il quadro generale che altri programmatori potrebbero non avere, in particolare quando si tratta dell'approccio olistico che Chad impiega allo sviluppo di un sito web. Si è specializzato in tutti gli aspetti del processo di sviluppo, quindi qualsiasi intuizione che può fornire mettendo insieme un intero progetto sarà utile.
Chad crede che l'utilizzo di un IDE come Eclipse PDT (il pacchetto di sviluppo PHP di Eclipse) con una combinazione di modelli e frammenti di codice possa davvero accelerare i tempi di consegna di un progetto.
Pianificazioni impegnative, liste lunghe e scadenze rendono difficile per gli sviluppatori acquisire familiarità con alcune delle funzionalità avanzate fornite dai loro strumenti. Questo è un peccato, perché alcune funzionalità, come i modelli Eclipse, possono davvero ridurre i tempi e gli errori di codifica.
Il buon senso dice che ogni volta che è possibile automatizzare un'attività, tanto più velocemente si otterrà il progetto. Lo stesso vale per la teoria di Dan. Prendendo il tempo di creare modelli che userete più e più volte, risparmierete un sacco di tempo ad automatizzare le parti ripetitive della codifica.
Usando un IDE come Eclipse e il pacchetto PDT, scoprirai che il tuo tempo di sviluppo aumenterà progressivamente. L'IDE chiuderà automaticamente le parentesi, aggiungerà i punti e virgola mancanti e ti permetterà anche di eseguire il debug all'interno dell'editor, senza dover caricare sul server.
(Chad ha un tutorial elegante su come iniziare con Eclipse PDT e i vantaggi di un IDE in generale, se sei interessato.)
Mentre Joey Sochacki potrebbe non essere un nome così grande come Matt Mullenweg nella comunità PHP, è un esperto sviluppatore web e condivide i suggerimenti che ha raccolto lungo il percorso nel suo blog Devolio.
Joey ha scoperto che anche se c'è un sacco di filtri che deve accadere quando si scrive codice PHP, non molti programmatori fanno uso delle funzioni di filtro di PHP.
Filtraggio dei dati Tutti dobbiamo farlo. La maggior parte, se non tutti noi, disprezzano farlo. Tuttavia, all'insaputa della maggior parte delle funzioni di filtro_ * di PHP, questo ci consente di fare ogni sorta di filtraggio e convalida. Utilizzando le funzioni filter_ * di PHP, possiamo convalidare e disinfettare tipi di dati, URL, indirizzi e-mail, indirizzi IP, caratteri non validi e molto altro, tutto con relativa facilità.
Il filtraggio può essere complicato, ma questa guida può aiutare immensamente. Con l'aiuto di Joey imparerai come installare i filtri e filtrare quasi nulla, sfruttando il potere filtrante di PHP.
C'è sempre stato un dibattito su come utilizzare un framework PHP come Zend, CakePHP, Code Igniter o qualsiasi altro framework. Ci sono dei lati positivi e negativi nell'usarli, e molti sviluppatori hanno le loro opinioni sull'opportunità o meno di percorrere questa strada.
Josh Sharp è uno sviluppatore web che fa il suo pane e burro per creare siti Web per i clienti. Questo è il motivo per cui dovresti fidarti di lui quando dice che è una buona idea usare un framework PHP per risparmiare tempo ed eliminare gli errori durante la programmazione. Perché? Josh crede che sia perché PHP è troppo facile da imparare.
Ma la facilità d'uso di PHP è anche la sua rovina. Poiché ci sono meno restrizioni sulla struttura del codice che scrivi, è molto più facile scrivere codice cattivo. Ma c'è una soluzione: utilizzare un framework.
I framework PHP aiutano a standardizzare il modo in cui programmate e possono risparmiare un sacco di tempo nel processo di sviluppo. Puoi leggere di più sui vantaggi dell'uso di un framework PHP sul blog di Josh.
Contrariamente alla convinzione di Josh che si dovrebbe usare un framework PHP, Rasmus Lerdorf, il Padrino dello stesso PHP, crede che le strutture non siano così grandiose. Perché? Perché funzionano molto più lentamente del semplice PHP.
Durante la presentazione di Rasmus a Drupalcon 2008, Rasmus ha confrontato i tempi di risposta con una pagina PHP con un semplice esempio di "Hello World" e lo ha confrontato con alcuni framework PHP (diapositive 24-32) e ha dimostrato che i framework PHP sono molto più lenti di PHP dritto.
Puoi ascoltare o guardare l'intera presentazione in cui Rasmus mostra le perdite di prestazioni con framework PHP. In breve, Rasmus mostra che le prestazioni hanno un grande successo quando si utilizza un framework PHP anziché utilizzare puro PHP.
[Nota: se devi usare un framework PHP, a Rasmus piace Code Igniter il meglio, poiché è "meno simile a un framework"]
Jack Herrington non è estraneo a PHP e al mondo dello sviluppo. Oltre a scrivere oltre 30 articoli per il prestigioso developerWorks IBM, Jack ha anche pubblicato libri di programmazione come PHP Hacks. Jack è una buona fede esperto.
Herrington consiglia di utilizzare l'elaborazione in batch e cron per affrontare quelle attività che possono essere elaborate in background. Gli utenti Web non vogliono aspettare a lungo che le attività vengano completate sul Web. Ci sono alcuni lavori che richiedono più tempo e che sono molto più adatti per essere eseguiti in background.
Certamente, in alcuni casi piccoli, è un po 'più facile sparare da un thread di supporto per gestire piccoli lavori. Ma è facile vedere che con l'uso di strumenti convenzionali - cron, MySQL, PHP standard orientato agli oggetti e Pear :: DB - creare lavori batch in applicazioni PHP è facile da fare, facile da implementare e facile da mantenere.
Jack crede nella semplicità, e invece di usare il threading sui server, usa la semplice combinazione di cron, PHP e MySQL per elaborare le attività in background.
Ho fatto entrambe le cose, e credo che cron abbia il vantaggio del principio "Keep It Simple, Stupid" (KISS). Mantiene semplice l'elaborazione in background. Invece di avere un'applicazione di elaborazione del lavoro multithreading che gira per sempre e, quindi, non può mai perdere memoria, si ha un semplice script batch avviato da cron. Lo script determina se c'è qualcosa da fare, lo fa, quindi esce. Non c'è bisogno di preoccuparsi di perdite di memoria. Non c'è bisogno di preoccuparsi di uno stallo del thread o di rimanere intrappolati in un loop infinito.
David Cummings gestisce la sua società di software specializzata in sistemi di gestione dei contenuti e ha vinto numerosi premi. Se qualcuno sa come sviluppare un'applicazione PHP in modo efficiente, è Dave.
David ha scritto in un articolo di SitePoint sui due suggerimenti di PHP che avrebbe desiderato aver imparato all'inizio. Uno dei suggerimenti: attiva immediatamente la segnalazione degli errori. A lungo termine risparmierai molto tempo.
L'unica cosa più importante che dico alle persone che usano PHP è di trasformare la segnalazione degli errori al suo livello massimo. Perché dovrei voler fare questo? Generalmente la segnalazione degli errori è impostata a un livello che nasconderà molte piccole cose come:
- dichiarare una variabile in anticipo,
- referenziare una variabile che non è disponibile in quel segmento di codice, o
- usando una definizione che non è impostata.
Questi fattori potrebbero non sembrare un grosso problema, finché non si sviluppano programmi strutturati o orientati agli oggetti con funzioni e classi. Troppo spesso, la scrittura di codice senza segnalazione degli errori elevata risultava costata ore mentre si scorrevano lunghe funzioni che non funzionavano perché una variabile era errata o non accessibile.
La segnalazione degli errori può rendere molto più facile trovare il motivo di un errore. Un piccolo bug nel codice può essere rapidamente identificato se la segnalazione degli errori di PHP è attivata. Risparmia un po 'di tempo e tira i capelli lasciando che PHP trovi i tuoi bug per te.
Leggi il post precedente di questa serie: 10 principi dei master CSS.
Glen Stansberry è uno sviluppatore web e blogger che ha faticato più volte di quanto avrebbe voluto ammettere con i CSS. Puoi leggere altri suggerimenti sullo sviluppo web sul suo blog Web Jackalope.