Abbiamo già condiviso alcune delle funzionalità di PHP 7. In questo articolo quindi ho pensato di dare un’occhiata ad alcuni dei cattivi modelli che dovremmo smettere di seguire quando passiamo al velocissimo PHP 7. E non dimenticate di dare un’occhiata al nostro nuovo mega-benchmark della versione finale di PHP 7.2.

Cosa Non Fare in PHP 7

  1. Non Utilizzare le Funzioni mysql_
  2. Non Scrivere Codice Superfluo
  3. Non Utilizzare i Tag di Chiusura di PHP
  4. Non Passare per Riferimento se Non È Necessario
  5. Non Eseguire Query in un Loop
  6. Non Utilizzare * nelle Query SQL
  7. Non Fidarsi dell’Input degli Utenti
  8. Non Cercare di Essere Troppo Bravi
  9. Non Reinventare la Ruota
  10. Non Trascurare gli Altri Linguaggi

1. Non Utilizzare le Funzioni mysql_

È finalmente giunto il momento in cui non vi verrà solo consigliato di smettere di usare le funzioni mysql_. PHP 7 le rimuoverà completamente dal core, il che significa che dovrete passare alle funzioni mysqli_, di gran lunga migliori, o alla ancora più flessibile implementazione PDO.

2. Non Scrivere Codice Superfluo

Questo può sembrare una cosa facile, ma diventerà sempre più importante perché l’aumento della velocità in PHP 7 può nascondere alcuni dei vostri problemi. Non accontentatevi della velocità del vostro sito semplicemente perché il passaggio a PHP 7 lo ha reso più veloce.

Per capire quanto sia importante la velocità e cosa si può fare per migliorare le cose, date un’occhiata alla nostra guida introduttiva all’ottimizzazione della velocità.

Come sviluppatori dovreste sempre assicurarvi di caricare gli script solo quando sono necessari, concatenarli quando possibile, scrivere query per il database efficienti, usare la cache quando possibile e così via.

Per dare un impulso veloce all’ottimizzazione generale, potete anche minificare il vostro codice. Kinsta ha integrato una funzione di minificazione del codice proprio nel cruscotto MyKinsta: questa permette ai clienti di abilitare la minificazione automatica di CSS e JavaScript con un semplice clic.

3. Non Utilizzare i Tag di Chiusura di PHP

Se date un’occhiata, la maggior parte dei file del core di WordPress omette il tag PHP finale quando un file termina con codice PHP. In realtà, Zend Framework lo vieta espressamente. Non è richiesto da PHP e omettendolo alla fine di un file ci si assicura che non si possano aggiungere spazi bianchi di trailing.

4. Non Passare per Riferimento se Non È Necessario

Personalmente non mi piace passare per riferimento. Capisco che in alcuni casi è utile, ma in molti altri rende il codice più difficile da comprendere e da seguire e soprattutto rende il risultato difficile da prevedere.

A quanto pare, la gente pensa che questo renda il loro codice più veloce, cosa che, secondo programmatori PHP con esperienza, non è vera.

Un esempio del perché i riferimenti non sono una buona cosa sono le funzioni native shuffle() e sort(). Invece di restituire un array mescolato o ordinato, modificano l’originale, il che per me è completamente illogico.

5. Non Eseguire Query in un Loop

L’esecuzione di query sul database in un loop è solo uno spreco. Mette a dura prova inutilmente i vostri sistemi ed è probabile che possiate ottenere lo stesso risultato più velocemente al di fuori del loop. Quando mi imbatto in una situazione in cui potrebbe essere necessario farlo, di solito posso risolvere il problema con due query separate che uso per costruire un array di dati. Poi faccio un loop sull’array, non c’è bisogno di eseguire query nel processo.

Per il modo in cui funziona WordPress, ci possono essere alcune eccezioni. Mentre get_post_meta() prenderà un metavalore dal database, è possibile utilizzarlo in un ciclo se si sta facendo un loop sui metadati di uno specifico post. Questo perché, quando lo si usa per la prima volta, WordPress recupera tutti i metadati e li mette nella cache. Le chiamate successive utilizzano i dati della cache, non eseguono chiamate sul database.

Il modo migliore per risolvere questi problemi è leggere la documentazione delle funzioni e utilizzare uno strumento come il Query Monitor.

6. Non Utilizzare * nelle Query SQL

Va bene, questo è più un problema di MySQL, ma noi tendiamo a scrivere il nostro codice SQL in PHP, quindi dico che è corretto. In ogni caso, non usate i caratteri jolly nelle query SQL se potete evitarli, specialmente se avete un database con molte colonne.

Specificate le colonne esatte di cui avete bisogno e recuperate solo quelle. Questo vi aiuta a ridurre al minimo l’utilizzo delle risorse, a proteggere i dati e a rendere le cose il più chiare possibile.

Per quanto riguarda l’SQL, studiate bene le funzioni disponibili e testate la velocità il più possibile. Quando si calcolano le medie, somme e numeri simili utilizzano funzioni SQL invece di funzioni PHP. Se non siete sicuri della velocità di una query, testatela e provate alcune varianti – usate la migliore.

7. Non Fidarsi dell’Input degli Utenti

Non è saggio fidarsi dell’input dell’utente. Filtrate sempre, sanificate, effettuate l’escape, controllate e utilizzate fallback. Ci sono tre problemi con i dati degli utenti: noi sviluppatori non prendiamo in considerazione tutte le possibilità, spesso non sono corretti e possono essere intenzionalmente dannosi.

Un sistema ben congegnato può proteggervi da tutto questo. Utilizzate funzioni integrate come filter_var() per controllare se i valori sono corretti e l’escape e altre funzioni quando lavorate con i database.

WordPress offre una serie di funzioni per aiutarvi. Per maggiori informazioni, consultate l’articolo sulla convalida, l’escape e la sanificazione dei dati degli utenti.

8. Non Cercare di Essere Troppo Bravi

Il vostro obiettivo dovrebbe essere quello di scrivere codice elegante che esprima al meglio le vostre intenzioni. Potreste essere in grado di ridurre di 0,01 secondi il carico di ogni pagina accorciando il tutto a variabili di una sola lettera, utilizzando la logica ternaria a più livelli e altre astuzie, ma questo è davvero niente in confronto ai mal di testa che causerete a voi stessi e a tutti quelli che vi circondano.

Nominate le vostre variabili in modo appropriato, documentate il vostro codice, scegliete la chiarezza rispetto alla brevità. Ancora meglio, utilizzate codice standardizzato orientato agli oggetti che più o meno si documenta da solo senza bisogno di molti commenti in linea.

9. Non Reinventare la Ruota

PHP è in circolazione da molto tempo, i siti web sono stati realizzati da prima ancora. È probabile che qualsiasi cosa dobbiate fare, qualcuno l’abbia già fatta prima. Non abbiate paura di appoggiarvi agli altri per avere supporto, Github è vostro amico, Composer è vostro amico, Packagist è vostro amico.

Dai logger agli strumenti di manipolazione dei colori, dai profiler ai framework per il test delle unità, dalle API di Mailchimp a Twitter Bootstrap, tutto è disponibile con la semplice pressione di un pulsante (o digitando un comando), usateli!

10. Non Trascurare gli Altri Linguaggi

Se siete una persona da PHP, è ormai standard conoscere almeno HTML, CSS, Javascript e MySQL. Quando si ha una buona padronanza di questi linguaggi, è il momento di imparare di nuovo Javascript. Javascript non è jQuery. Si dovrebbe imparare Javascript correttamente per poterlo utilizzare in modo efficiente.

Consiglierei anche di imparare tutto sul PHP orientato agli oggetti, è un salvavita e renderà il vostro codice di gran lunga migliore. Aprirà anche le porte a linguaggi come C# e Java, saranno molto più facili da comprendere se avete OOP nella la vostra cintura da lavoro.

Ampliate le vostre conoscenze imparando ad utilizzare i gestori di pacchetti, a costruire script, Coffeescript, LESS, SASS, YAML, template engine e altri strumenti straordinari. Vi raccomando vivamente di dare un’occhiata ad altri framework PHP, Laravel in particolare.

Quando ve la cavate piuttosto bene con questi strumenti, che mi dite di Ruby, Ruby on Rails, sviluppo di applicazioni per Android, iPhone, Windows Phone? Pensereste che non ha senso, perché questi non rientrano nella vostra zona di comfort e nelle vostre esigenze lavorative, ma è proprio questo il punto. Ogni linguaggio ha qualcosa di utile da insegnare e un po’ di conoscenza in più non fa mai male. Non è un caso che tutti i migliori sviluppatori PHP sappiano molto sugli altri linguaggi di programmazione!

Daniel Pataki

Hi, my name is Daniel, I'm the CTO here at Kinsta. You may know me from Smashing Magazine, WPMU Dev, Tuts+ and other WordPress/Development magazines. Aside from WordPress and PHP I spend most of my time around Node, React, GraphQL and other technologies in the Javascript space.

When not working on making the best hosting solution in the Universe I collect board games, play table football in the office, travel or play guitar and sing in a pretty bad band.