PHP 5.4 è qui! Cosa devi sapere

PHP 5.4 è qui; il prossimo importante passo avanti dalla versione 5.3 - per ora mantiene in sospeso PHP 6 (supporto Unicode completo). Gli ultimi miglioramenti migliorano in modo significativo la sua eleganza, rimuovendo al contempo funzionalità deprecate, con conseguente notevole ottimizzazione del tempo di esecuzione (riduzione del 20% in più di velocità e di utilizzo della memoria).


Nuove funzionalità e miglioramenti

Alcune delle nuove funzionalità chiave includono trattos, accorciato schieramento sintassi, un server web integrato a scopo di test, uso di $ questo nelle chiusure, accesso di membri della classe su istanziazione, è sempre disponibile, e altro ancora!

PHP 5.4.0 migliora in modo significativo le prestazioni, l'ingombro della memoria e corregge oltre 100 bug. Le caratteristiche deprecate / rimosse notabili includono register_globals, magic_quotes (circa il tempo) e modalità sicura. Vale anche la pena ricordare che il supporto multibyte è abilitato di default e default_charset è stato modificato da ISO-8859-1 a UTF-8.

Content-Type: text / html; charset = utf-8 è sempre inviato; quindi non è necessario impostare il metatag HTML o inviare intestazioni aggiuntive per la compatibilità con UTF-8.


Tratti

La migliore dimostrazione dei tratti è quando più classi condividono la stessa funzionalità.

I tratti (riuso orizzontale / ereditarietà multipla) sono un insieme di metodi strutturalmente simili a a classe (ma non può essere istanziato), che può consentire agli sviluppatori di riutilizzare liberamente set di metodi in diverse classi indipendenti. Poiché PHP è un linguaggio di ereditarietà singola, una sottoclasse può ereditare da una sola superclasse; è qui che i tratti arrivano a giocare.

Il miglior uso dei tratti è dimostrato quando più classi condividono la stessa funzionalità. Ad esempio, immagina di costruire un sito Web e di utilizzare sia le API di Facebook che quelle di Twitter. Costruiamo due classi che, in comune, hanno una funzione / metodo di wrapper cURL. Invece di eseguire il classico copia e incolla di quel metodo - da utilizzare in due classi - utilizziamo i tratti (copia e incolla, stile del compilatore). In questo modo, creiamo codice riutilizzabile e seguiamo il principio DRY (Non ripeterti).

Ecco un esempio:

 / ** CURL wrapper trait * / trait cURL curl di funzione pubblica ($ url) $ ch = curl_init (); curl_setopt ($ ch, CURLOPT_URL, $ url); curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, 1); $ output = curl_exec ($ ch); curl_close ($ ch); restituire $ output;  / ** API API Class * / class Twitter_API uso cURL; // usa tratto qui public function get ($ url) return json_decode ($ this-> curl ('http://api.twitter.com/'.$url));  / ** Facebook API Class * / class Facebook_API uso cURL; // e qui funzione pubblica get ($ url) return json_decode ($ this-> curl ('http://graph.facebook.com/'.$url));  $ facebook = new Facebook_API (); echo $ facebook-> get ('500058753') -> nome; // Rasmus Lerdorf / ** Ora dimostrando la bellezza della sintassi PHP 5.4 * / echo (new Facebook_API) -> get ('500058753') -> nome; // Rasmus Lerdorf $ foo = 'get'; echo (new Facebook_API) -> $ pippo ('500058753') -> nome; // e ancora, Rasmus Lerdorf echo (new Twitter_API) -> get ('1 / users / show.json? screen_name = rasmus') -> nome; // e ancora, Rasmus Lerdorf // P.S. Non sono ossessionato dai Rasmus :)

Fatto? No? Ecco l'esempio più semplice!

 trait Net public function net () return 'Net';  trait Tuts public function tuts () return 'Tuts';  classe NetTuts usa Net, Tuts; funzione pubblica plus () return '+';  $ o = nuovi NetTuts; echo $ o-> net (), $ o-> tuts (), $ o-> plus (); echo (new NetTuts) -> net (), (new NetTuts) -> tuts (), (new NetTuts) -> plus ();

Se hai qualche domanda sui tratti, per favore pubblica una nota nella sezione commenti qui sotto.

Suggerimento importante: La costante di magia per i tratti è __TRATTO__.


Server Web CLI integrato

Nello sviluppo web, il migliore amico di PHP è Apache HTTPD Server. A volte, tuttavia, può essere eccessivo installare httpd.conf solo per utilizzarlo in un ambiente di sviluppo, quando è davvero necessario un server Web di dimensioni ridotte che possa essere avviato con una semplice riga di comando. Per fortuna, PHP 5,4 viene fornito con un server Web CLI integrato.

Il server Web PHP CLI è progettato esclusivamente per scopi di sviluppo e non deve essere utilizzato in produzione.

Nota: Le istruzioni seguenti sono per un ambiente Windows.

Passaggio 1: creare la directory root dei documenti, il file router e il file indice

Vai alla tua radice del disco rigido (supponendo C: \). Crea una directory / cartella, chiamata public_html. Crea un nuovo file all'interno di questa cartella e nominalo router.php. Copia i contenuti di seguito e incollali in questo file appena creato.

 

Ora crea un altro file, chiamato index.php. Copia il contenuto qui sotto e salva il file.

 

Apri i tuoi php.ini file (si trova nella directory di installazione di PHP - ad es. C: \ php).

Trovare la include_path impostazioni (si trova a ~ 708 ° linea). Inserisci C: \ public_html alla fine della stringa tra virgolette, separate da a punto e virgola. Il risultato finale dovrebbe essere simile a:

 include_path = ".; C: \ php \ PEAR; C: \ public_html"

Salva e chiudi il file. Passiamo al prossimo passaggio.

Passaggio 2: eseguire Web-Server

Apri il prompt dei comandi (finestre + R, digitare cmd, colpire accedere); dovresti vedere qualcosa di simile a seconda della versione di Windows.

 Microsoft Windows XP [Versione 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. C: \ Documents and Settings \ nettuts>

Cambia la tua directory corrente con l'installazione di PHP seguendo l'esempio seguente:

 C: \ Documents and Settings \ nettuts> cd C: \ php C: \ php>

Ecco la parte più importante: l'esecuzione del web server. Copia…

 php -S 0.0.0.0:8080 -t C: \ public_html router.php

... e incollarlo nel prompt dei comandi (tasto destro del mouse, fare clic Incolla incollare). Colpire accedere. Se tutto va bene, dovresti vedere qualcosa di simile a quanto mostrato di seguito. Non chiudere il prompt dei comandi; se lo fai, uscirai anche dal web server.

 C: \ php> php -S 0.0.0.0:8080 -t C: \ public_html router.php Server di sviluppo PHP 5.4.0 avviato a ven Mar 02 09:36:40 2012 Ascolto su 0.0.0.0:8080 La radice del documento è C : \ public_html Premi Ctrl-C per uscire.

Aprire http: // localhost: 8080 / index.php nel tuo browser e dovresti vedere:

 Ciao Nettuts + lettori!

Ecco! Ecco, buona idea!

Suggerimento 1: Fare un php-server.bat file con il seguente contenuto: C: \ php \ php -S 0.0.0.0:8080 -t C: \ public_html router.php. Fare doppio clic e, ora, il server è attivo e funzionante!

Suggerimento 2: Uso 0.0.0.0 invece di localhost se prevedi che il tuo server sarà accessibile da internet.


Sintassi di array più corto

PHP 5.4 offre un nuovo breve schieramento sintassi:

 $ fruits = array ('mele', 'arance', 'banane'); // "vecchio" modo // Lo stesso della notazione letterale dell'array di Javascript $ fruits = ['mele', 'arance', 'banane']; // associative array $ array = ['foo' => 'bar', 'bar' => 'foo'];

Si noti che il metodo "vecchio" è ancora in uso e lo sarà sempre. Questa è semplicemente un'alternativa.


Array Dereferencing

Non ci sono più variabili temporanee quando si tratta di schieramentoS!

Immaginiamo di voler recuperare il secondo nome di Alan Mathison Turing:

 echo explode (", 'Alan Mathison Turing') [1]; // Mathison

Dolce; ma non è stato sempre così facile. Prima di 5.4, dovevamo fare:

 $ tmp = explode (", 'Alan Mathison Turing'); echo $ tmp [1]; // Mathison

Ora, cosa succede se vogliamo ottenere il cognome (ultimo elemento in schieramento):

 echo end (esplode ("," Alan Mathison Turing ")); // Turing

Funziona bene, tuttavia, lancerà a E_STRICT (Strict standard: solo le variabili dovrebbero essere passate per riferimento) errore, dal momento che divenne parte di E_ALL nel error_reporting.

Ecco un esempio leggermente più avanzato:

 function foobar () return ['foo' => ['bar' => 'Ciao']];  echo foobar () ['foo'] ['bar']; // Ciao

$ questo Nelle funzioni anonime

È ora possibile fare riferimento all'istanza dell'oggetto dalle funzioni anonime (anche note come chiusure) usando $ questo.

 class Foo function hello () echo 'Hello Nettuts!';  function anonymous () return function () $ this-> hello (); // $ questo non era possibile prima;  class Bar function __construct (Foo $ o) // oggetto della classe Foo typehint $ x = $ o-> anonymous (); // ottiene Foo :: hello () $ x (); // esegue Foo :: hello () new Bar (new Foo); // Ciao Nettuts!

Si noti che questo potrebbe essere raggiunto prima del 5.4, ma era eccessivo.

 funzione anonymous () $ that = $ this; // $ che ora è $ this return function () usa ($ that) $ that-> hello (); ; 

è sempre attivo

Indipendentemente da php.ini ambientazione, short_open_tag, (apri tag PHP ed echo) sarà sempre disponibile. Ciò significa che ora puoi tranquillamente usare:

 

... nei tuoi modelli anziché ...

 

Rappresentazione del numero binario

Ci sono solo 0b10 tipi di persone;
quelli che capiscono il binario e quelli che non lo capiscono.

D'ora in poi, gli interi possono essere specificati in notazione decimale (base 10), esadecimale (base 16), ottale (base 8) o binaria (base 2), opzionalmente preceduta da un segno (- o +). Per usare la notazione ottale, precedere il numero con uno 0 (zero). Per usare la notazione esadecimale, precedere il numero con 0x. Per usare la notazione binaria, precedere il numero con 0b.

Esempio: rappresentazione del numero 31 (decimale).

 echo 0b11111; // binario, introdotto in PHP 5.4 echo 31; // duh echo 0x1f; // esadecimale echo 037; // ottale

Tipo chiamabile

Typehinting è per coloro che desiderano rendere PHP un linguaggio tipizzato più forte. I suggerimenti di tipo possono essere solo dei oggetto e schieramento digita da PHP 5.1 e callable da PHP 5.4. Tipo tradizionale che suggerisce con int e stringa non è ancora supportato.

 function my_function (callable $ x) return $ x ();  function my_callback_function () return 'Hello Nettuts!'; classe Hello static function hi () return 'Hello Nettuts!'; classe Hi function hello () return 'Hello Nettuts!'; echo my_function (function () return 'Hello Nettuts!';); // funzione anonima echo my_function ('my_callback_function'); // funzione di callback echo my_function (['Hello', 'hi']); // nome classe, metodo statico echo my_function ([(new Hi), 'hello']); // oggetto di classe, nome del metodo

Timer ad alta precisione inizializzato

$ _SERVER [ 'REQUEST_TIME_FLOAT'] è stato aggiunto, con precisione microsecondo (float). Questo è utile quando è necessario calcolare il tempo di esecuzione per uno script.

 echo 'Executed in', round (microtime (true) - $ _SERVER ['REQUEST_TIME_FLOAT'], 2), 's';

__destruct () (o riepilogo)

Complessivamente, PHP 5.4 offre numerosi miglioramenti. Ora, sta a te prendere una nuova copia da php.net e creare un codice PHP di qualità Object-Oriented!

?