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).
Alcune delle nuove funzionalità chiave includono tratto
s, 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.
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__
.
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.
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.
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.
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.
Non ci sono più variabili temporanee quando si tratta di schieramento
S!
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:
=$title?>
... nei tuoi modelli anziché ...
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
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
$ _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!
?