Wordpress

PHP 7.4 compatibilità con WordPress

By 10 Ottobre 2019 No Comments

PHP 7.4 è previsto per il rilascio il 28 novembre 2019. WordPress 5.3 includerà anche diversi commit che affrontano le funzionalità obsolete.

È improbabile che la maggior parte degli sviluppatori di plugin e temi di WordPress sarà in grado di utilizzare le nuove funzionalità di PHP 7.4 per un po ‘, tranne quando si lavora su configurazioni in cui hanno una certa misura di controllo sull’ambiente. Data la riluttanza di WordPress a trasferire la versione minima di PHP alle ultime versioni supportate, potrebbero passare anni prima che sia sicuro utilizzare le nuove funzionalità. Tuttavia, gli sviluppatori dovrebbero assicurarsi che i loro plugin e temi siano compatibili con 7.4. È anche buona prassi tenere il passo con le funzionalità attuali.

WordPress 5.2 ha superato il requisito minimo di PHP 5.6 con una raccomandazione di PHP 7.3. Di seguito è riportato il dettaglio delle attuali statistiche sull’utilizzo di PHP per le installazioni di WordPress:

PHP 7.3 – 9.6%
PHP 7.2 – 22.2%
PHP 7.1 – 13.5%
PHP 7.0 – 14.9%
PHP 5.6 – 25.7%
Attualmente, PHP 7.2 e 7.3 sono le uniche versioni che ricevono supporto attivo. PHP abbandonerà il supporto di sicurezza per la versione 7.1 il 1 ° dicembre.

Nuove caratteristiche

PHP 7.4 include una serie di nuove funzionalità che semplificheranno la scrittura del codice. Quella che segue è una piccola panoramica di alcune delle funzionalità che saranno probabilmente utili per gli autori di plugin e temi di WordPress.

Proprietà digitate

PHP ha introdotto per la prima volta i suggerimenti sul tipo in 5.0 e ha continuato a migliorare la funzionalità. PHP 7.0 ha introdotto dichiarazioni sul tipo di reso. PHP 7.4 fa un passo avanti e consente agli sviluppatori di dichiarare i tipi per le proprietà della classe. Ciò consente agli sviluppatori di assicurarsi che il tipo di dati assegnati a una proprietà specifica sia sempre quel tipo di dati.

Nel seguente esempio, alla $idproprietà può essere assegnato solo un numero intero e la $titleproprietà una stringa. Il tentativo di assegnare un tipo di dati errato comporterà un errore irreversibile.

class Event {

public int $id;

public string $title;
}

Funzioni freccia

Molti sviluppatori hanno chiesto a gran voce funzioni freccia simili a JavaScript. Sono abbastanza dolci da usare. Tuttavia, le funzioni freccia di PHP, chiamate anche “chiusure brevi”, sono leggermente diverse. PHP 7.4 introduce la fnparola chiave (ora una parola chiave riservata). Le chiusure brevi possono contenere solo un’espressione e non hanno returnparole chiave. Non sono così potenti come i loro cugini JavaScript, ma offrono una soluzione rapida per alcuni scenari.

Ad esempio, il seguente frammento di codice mostra due modi diversi per creare una matrice di e-mail utente da una raccolta di oggetti utente.

// Old way, but still acceptable.
$value = array_map( function( $user ) {
return $user->user_email;
}, $users );

// New way.
$value = array_map( fn( $user ) => $user->user_email, $users );

Disimballaggio all’interno delle matrici

La decompressione degli argomenti è stata introdotta in PHP 5.6 , quindi potrebbe essere ancora un territorio sconosciuto per molti sviluppatori nello spazio WordPress. È stata una caratteristica inestimabile in alcuni dei miei progetti.

PHP 7.4 consente agli sviluppatori di decomprimere un array all’interno di un array. Questo dovrebbe essere più veloce di array_merge()perché l’operatore spread ( …) è un costrutto di linguaggio piuttosto che una funzione.

Si consideri il seguente esempio di iniezione di una matrice di due colori all’interno di una matrice più ampia di colori.

$colors_a = [ ‘green’, ‘blue’ ];

$colors_b = [ ‘red’, …$colors_a, ‘yellow’, ‘purple’ ];

// [ ‘red’, ‘green’, ‘blue’, ‘yellow’, ‘purple’ ];

Null Coalescing Assignment Operator

L’operatore di assegnazione a coalescenza nulla è un modo abbreviato di combinare un isset()controllo con un operatore ternario.

L’esempio seguente mostra come controllare la $product[‘id’]variabile. Se è impostato, non fare nulla. Altrimenti, assegnagli il valore a destra. Puoi vedere l’evoluzione del codice tra le versioni di PHP. Scrivere in 7.4 è molto più semplice.

// Pre-PHP 7.0.
$product[‘id’] = isset( $product[‘id’] ) ? $product[‘id’] : 0;

// PHP 7.0.
$product[‘id’] = $product[‘id’] ?? 0;

// PHP 7.4.
$product[‘id’] ??= 0;

Funzionalità obsolete

PHP 7.4 deprecherà diverse funzionalità. Gli autori di plug-in e temi vorranno consultare l’elenco completo per determinare se devono aggiornare qualsiasi codice obsoleto. Ho selezionato alcuni elementi che ho visto nel plugin e nel codice tema negli ultimi anni. La maggior parte delle altre funzionalità obsolete è improbabile nelle attuali basi di codice.

Operatori ternari annidati senza parentesi
Gli operatori ternari nidificati sono generalmente qualcosa che dovresti evitare come sviluppatore. Sul serio. Basta non scriverli. Sono difficili da seguire e sono inclini a bug a causa di errori umani. Tuttavia, se hai intenzione di mettere in guardia dal vento e respingere i buoni consigli, almeno usa la parentesi. PHP 7.4 deprenati ternari nidificati senza di essi.

// Not OK (deprecated).
$value = $a ? $b : $c ? $d : $e;

// OK.
$value = ( $a ? $b : $c ) ? $d : $e;

// OK.
$value = $a ? $b : ( $c ? $d : $e );
Utilizzo di array_key_exists () su Oggetti
Gli sviluppatori non dovrebbero utilizzare gli array_key_exists()oggetti semplicemente perché gli oggetti non sono array. Utilizzare invece la property_exists()funzione più appropriata o isset().

// Not OK (deprecated).
if ( array_key_exists( $property, $object ) ) {}

// OK.
if ( property_exists( $object, $property ) ) {}

// OK.
if ( isset( $object->$property ) ) {}
Accesso offset di array e stringhe con parentesi graffe
L’uso di parentesi graffe per l’accesso all’array e all’offset delle stringhe è un po ‘più raro, ma l’ho visto in libertà un paio di volte. Assicurati di utilizzare parentesi quadre come []invece di parentesi graffe come {}.

vedi la fontestampare?
// Not OK (deprecated).
$value = $a{ $key };

// OK.
$value = $a[ $key ];

Leave a Reply

Rispettiamo la tua privacy!

Su questo sito utilizziamo strumenti nostri o di terze parti che memorizzano piccoli file (cookie) sul tuo dispositivo. I cookie sono normalmente usati per permettere al sito di funzionare correttamente (cookie tecnici), per generare statistiche di uso/navigazione (cookie statistici). Abilitando questi cookie, ci aiuti ad offrirti una esperienza migliore con noi.

Privacy & Cookie Policy