Technologie Gadgets, SEO Tipps, Geld Verdienen mit WEB!

PHP 8: tutto quello che devi sapere per l’aggiornamento

PHP 8: tutto quello che devi sapere per l'aggiornamento

PHP 8 è stato ufficialmente rilasciato per gli utenti generali il 26 novembre 2020.

Questo nuovo aggiornamento apporta una serie di potenti funzionalità e ottimizzazioni al linguaggio. Sebbene molte RFC siano già state accettate e introdotte, è tempo di immergerci in alcune delle aggiunte più interessanti che hanno reso PHP più veloce e più sicuro.

Potrebbe essere necessario migliorare il codice in modo che possa essere eseguito su PHP 8. Se sei rimasto aggiornato con le nuove versioni, l’aggiornamento non dovrebbe essere troppo difficile perché la maggior parte delle modifiche importanti erano deprecate in precedenza nella 7.x versioni. E non preoccuparti: tutte queste deprecazioni sono elencate in questo articolo.

Oltre alle modifiche sostanziali, oltre alla velocità, PHP 8.0 offre nuove funzionalità come il tanto atteso compilatore JIT, tipi di unione, attributi e molto altro. Daremo un’occhiata anche a questi.

Smettila di perdere tempo sui server

DreamHost gestisce la gestione dei server per te, così puoi concentrarti sulla creazione di fantastiche app e sulla soddisfazione dei tuoi clienti.

Funzionalità di PHP 8 che miglioreranno le tue prestazioni

Come sviluppatore PHP di lunga data, è una gioia vedere PHP 8 portare così tanti aggiornamenti utili, come gli argomenti con nome che ti consentono di convalidare i dati in una funzione in base al nome dell’argomento anziché all’ordine degli argomenti. E poi, nelle versioni precedenti, l’unico modo per dichiarare i tipi di unione poteva essere indicato solo nei commenti delle annotazioni phpdoc, ma ora questi possono essere fatti direttamente.

Tutti questi attributi rappresentano un miglioramento straordinario per l’API di riflessione. Ecco uno sguardo ad alcune delle nuove fantastiche funzionalità di PHP 8:

Compilatore Just-In-Time (JIT).

JIT era già disponibile in PHP dalla versione 7.4 come strumento di test, ma le sue prestazioni e usabilità sono molto migliorate nella versione PHP 8. In base alla progettazione, JIT era disponibile in modalità disabilitata per condurre esperimenti e valutare le altre variabili in PHP 7.4.

JIT aumenterà la velocità delle applicazioni PHP 8 grazie al modo in cui gestisce la compilazione degli script PHP. È molto semplice in termini di V8, HHVM, PyPy e altri JIT PHP moderni, ma aumenta il grado di complessità totale di PHP, la possibilità di nuovi bug e il costo di creazione e manutenzione.

Ora officiato nel meccanismo PHP, nuovo e migliorato Compilatore JIT consente di eseguire il codice dell’applicazione più velocemente rispetto all’interprete tradizionale.

L’operatore nullsafe

Questa RFC propone il nuovo operatore nullsafe ?-> con cortocircuito completo.

Se conosci già l’operatore null coalescing, conosci già i suoi punti deboli: le chiamate ai metodi non funzionano. Sarebbe utile se avessi invece controlli intermedi o facessi affidamento su helper opzionali forniti da alcuni framework:

Argomenti denominati

Con gli argomenti denominati, gli sviluppatori possono passare valori a una funzione definendo il nome del valore in modo da non dover tenere conto del loro ordine. Puoi anche ignorare i parametri facoltativi. Gli argomenti con nome rendono il codice più semplice da comprendere perché i nomi degli argomenti sono descrittivi.

Attributi

Gli attributi, solitamente noti come annotazioni in altri linguaggi, forniscono un modo per aggiungere metadati alle classi senza dover analizzare i docblock.

Ecco un esempio:

Abbina l’espressione

La caratteristica principale che ho potuto sperimentare con PHP 8, che ha reso più semplice la codifica, è la corrispondenza delle espressioni. Gli sviluppatori sono ora in grado di restituire un valore in base all’input fornito, senza nemmeno Utilizzare parole chiave aggiuntive.

Potresti chiamarlo il fratello maggiore dell’espressione switch: le espressioni match possono restituire valori, non necessitano di istruzioni break, possono combinare condizioni, utilizzano confronti rigorosi di tipi e non forzano alcun tipo.

Sembra questo:

Ereditarietà con metodi privati

In precedenza, PHP utilizzava metodi pubblici, protetti e privati ​​per applicare gli stessi controlli di ereditarietà. In altre parole, le stesse regole di firma dei metodi protetti e pubblici dovrebbero essere seguite dai metodi privati. Per questo motivo, le classi dei bambini non potrebbero utilizzare metodi privati.

Questa funzionalità aggiornata di PHP 8 ha modificato il comportamento, quindi questi controlli di ereditarietà non vengono più eseguiti sui metodi privati. Inoltre, non aveva senso utilizzare la funzione privata finale, quindi farlo ora causerebbe un avviso:

Avvertimento: I metodi privati ​​non possono essere definitivi poiché le altre classi non li sovrascrivono mai

Mappe deboli

Basato su WeakMap, RFC introdotto in PHP 7.4, PHP 8 introduce un’implementazione WeakMap. WeakMap ha riferimenti a oggetti che non impediscono la raccolta di rifiuti da tali oggetti.

Introducono inoltre cache che contengono riferimenti a classi di entità per migliorare le prestazioni delle relazioni tra entità, prendendo l’esempio degli ORM. Finché questa cache ha un riferimento ad essi, questi oggetti entità non possono essere sottoposti a Garbage Collection, anche se la cache è l’unica cosa che fa loro riferimento.

Se questo livello di caching utilizza invece riferimenti e mappe deboli, PHP raccoglierà questi oggetti quando non faranno più riferimento a nient’altro. Le mappe deboli possono offrire un modo migliore e più rispettoso delle risorse per gestire questi oggetti, soprattutto nel caso degli ORM, che possono gestire molte centinaia, se non migliaia, di entità all’interno di una richiesta. Ecco come appaiono le mappe deboli, con un esempio tratto dalla RFC:

Digitare annotazioni per le funzioni interne

Si trattava di un problema di vecchia data e, con tutti i miglioramenti apportati a PHP nelle versioni precedenti, era finalmente risolvibile. Ciò implica che le informazioni complete sul tipo si rifletteranno nelle funzioni e nei metodi interni.

ext-JSON sempre disponibile

Non è più possibile compilare PHP senza l’estensione JSON abilitata. Poiché JSON è così comunemente utilizzato, invece di garantire che l’estensione esista prima, i migliori sviluppatori possono sempre fare affidamento sulla sua presenza.

Errori di tipo coerenti

In PHP, le funzioni definite dall’utente lanciano TypeError, ma le funzioni interne no. Emettono invece avvisi e restituiscono null. Il comportamento delle funzioni interne è stato reso coerente in PHP 8.

L’operatore @ non silenzia più gli errori fatali

Questa modifica potrebbe esporre errori nascosti prima di PHP 8. Sui server di produzione, assicurati di impostare display_errors=Off.

Livello di segnalazione errori predefinito

Invece di tutto tranne E NOTICE ed E DEPRECATED, ora è E ALL. Ciò significa che molti errori precedentemente ignorati silenziosamente ma che probabilmente esistevano già prima che PHP 8 potesse apparire.

I nomi con spazio dei nomi sono un singolo token

PHP viene utilizzato per interpretare ciascuna parte di uno spazio dei nomi (separata da una barra rovesciata \) come una sequenza di token. Questa RFC ha modificato questo comportamento, il che significa che ora i nomi riservati possono essere utilizzati negli spazi dei nomi.

Stringhe numeriche più sane

Quando trova numeri nelle stringhe, il sistema di tipo PHP tenta di fare diverse cose intelligenti. Ciò renderà il comportamento più trasparente e coerente.

Confronti più sani tra stringhe e numeri

In PHP 8, questa RFC affronta il caso molto strano in cui 0 = = “foo” risulta vero. Esistono molte altre istanze edge come quella e sono state corrette da questa RFC.

Ordinamento stabile

Gli algoritmi per l’ordinamento erano inaffidabili prima di PHP 8. Ciò implica che non esisteva alcuna garanzia dell’ordine degli elementi uguali. Il comportamento di tutte le funzioni di ordinamento è modificato da PHP 8 in un ordinamento stabile.

Smettila di perdere tempo sui server

DreamHost gestisce la gestione dei server per te, così puoi concentrarti sulla creazione di fantastiche app e sulla soddisfazione dei tuoi clienti.

Nuove funzioni PHP

Nuova funzione str_contains()

Alcuni potrebbero sostenere che è atteso da tempo, ma essenzialmente non dobbiamo più fare affidamento su strops() per sapere se c’è un’altra stringa all’interno di una stringa.

Nuove funzioni str_starts_with() e str_ends_with()

Queste due funzioni erano attese da tempo e ora fanno parte del nucleo centrale.

Nuova funzione fdiv()

La nuova funzione fdiv() ha capacità simili alle funzioni fmod() e intdiv(), che consente la divisione per 0. Invece di ottenere errori, otterrai INF, -INF o NAN, a seconda dello scenario.

funzione get_debug_type()

La nuova funzione get_debug_type restituisce sempre il vero tipo nativo delle variabili. Restituisce nomi di tipo nativo, ad esempio int anziché intero, double anziché float.

La funzione get_debug_type() aiuta

  • Segnalazione errori
  • Debug
  • Logica di business

Presentazione dell’ultima versione di PHP 8 su DreamHost

Sebbene DreamHost avesse già introdotto PHP 8.0 ai suoi utenti, questo è ora disponibile per tutti gli account nuovi ed esistenti situati nelle impostazioni del pacchetto. Ti invitiamo vivamente a mantenere aggiornata la tua versione PHP, a causa delle nuove funzionalità introdotte nel linguaggio e a tenerti aggiornato sulla Piattaforma, ma non ti consigliamo ancora di aggiornare a PHP 8.x sui tuoi server di produzione live, soprattutto se stanno utilizzando il framework Laravel o qualsiasi altro CMS basato su PHP. Se crei una nuova app Web senza Laravel e WordPress, puoi provare liberamente PHP 8.

Cambiare le versioni di PHP su DreamHost

Scorri verso il basso il menu laterale e fai clic su Impostazioni e Pacchetti. Proprio in alto ci sono i pacchetti per la versione PHP, che puoi passare da PHP 7.x a PHP 8.0.

Come accennato in precedenza, è altamente consigliabile non eseguire l’aggiornamento se si esegue Laravel Framework o qualsiasi sito Web live CMS basato su PHP. Se crei una nuova applicazione web senza framework PHP o CMS basato su PHP o esegui un sito Web che non è in esecuzione su alcun CMS basato su PHP, dovresti essere in grado di eseguire l’aggiornamento, ma procedi sempre con cautela.

Seleziona PHP 8 dal menu a discesa.

Il processo di aggiornamento richiede alcuni minuti. Il tuo server verrà aggiornato senza tempi di inattività.

Questo è tutto! È facile cambiare la tua versione PHP utilizzando la piattaforma DreamHost.

Successivamente, per verificare che PHP 8 sia effettivamente disponibile sul tuo server, avvia il file Terminale SSH dalla scheda Credenziali Master e accedi utilizzando le tue credenziali.

Usa il php-v comando per verificare la versione PHP installata.

Pensieri finali

Woah! È stata necessaria una certa esperienza per compilare e scrivere questo articolo, questo è un aggiornamento importante e ci saranno modifiche importanti e nuove funzionalità di PHP 8. La cosa migliore da fare è dare un’occhiata all’intero elenco delle modifiche importanti del documento di aggiornamento.

Tuttavia, molte di queste modifiche importanti sono state deprecate nelle versioni precedenti di 7. *, quindi se ti sei mantenuto aggiornato nel corso degli anni, l’aggiornamento a PHP 8 non dovrebbe essere poi così difficile.

A mio parere, PHP 8 è senza dubbio il miglior aggiornamento fino ad oggi. Non solo ha semplificato i metodi e la struttura di codifica, ma ha anche ottimizzato il tempo di compilazione del codice anziché il runtime, con conseguente prestazione più rapida della piattaforma. Piccoli aggiornamenti nell’interfaccia utente hanno anche apportato più valore e interazione da parte dell’utente alla lingua.

Sono state apportate alcune modifiche generali anche alla lingua. Alcune funzioni precaricate come create_function() e ciascuno() sono state rimosse, mentre il meccanismo e il funzionamento di alcune funzioni sono stati modificati. La nuova versione è senza dubbio un passo avanti verso la pulizia del linguaggio e il rilascio di molti dei punti salienti e degli aggiornamenti tanto attesi ed essenziali.

Fammi sapere nei commenti qui sotto cosa pensi del lancio di PHP 8 e che impatto avrà sull’arena dello sviluppo web.