Programmazione.it v6.4
Ciao, per farti riconoscere devi fare il login. Non ti sei ancora iscritto? Che aspetti, registrati adesso!
Info Pubblicit� Collabora Autori Sottoscrizioni Preferiti Bozze Scheda personale Privacy Archivio Libri Corsi per principianti Forum
PHP 5.4, un piccolo grande aggiornamento
Scritto da Filippo Fadda il 05-03-2012 ore 02:04
Dopo lunga gestazione posso finalmente annunciare il parto di PHP 5.4. Il bimbo era previsto pesasse 6 Kg, ma nato prematuro. :-)
I pi informati sapranno che non era prevista una versione 5.4 di PHP. La roadmap prevedeva infatti il rilascio di un'ambiziosa 6.0, che per difficolt tecniche stata posticipata. Secondo i piani la release 6 supporter Unicode, ma non l'UTF-16 character encoding come inizialmente deciso, bens UTF-8, che richiede meno memoria (la met) ed un minor numero di conversioni, da cui deriva un uso pi limitato dei cicli di CPU.

Rasmus Lerdorf, il creatore di PHP, ha scelto di abbandonare l'idea di migrare a UTF-16 nel 2010. Poco dopo, nel marzo del 2010, Jani Taskinen, che aveva tra l'altro annunciato il suo ritiro dal progetto nel 2006, ha creato un nuovo branch per PHP 5.4, il cui rilascio avvenuto ufficialmente il 1 marzo 2012.

PHP 5.4 introduce un nuovo costrutto chiamato Trait. Trovate una descrizione piuttosto dettagliata nel mio articolo "Properties alla C# in PHP".

Altra interessante novit costituita dalla shortened array syntax. Prima si scriveva:
  1. <?php
  2.  
  3. $array = array(
  4.   "foo" => "bar",
  5.   "bar" => "foo"
  6. );

Adesso si pu scrivere:
  1. <?php
  2.  
  3. $array = [
  4.   "foo" => "bar",
  5.   "bar" => "foo"
  6. ];

E' stato inoltre aggiunto il supporto per l'array dereferencing. Ora si pu scrivere cos:
  1. <?php
  2.  
  3. class Disney {
  4.  
  5.   $array = [
  6.     "pluto" => "",
  7.     "topolino" => "",
  8.     "paperino" => ["qui", "quo", "qua"]
  9.   ];
  10.  
  11.   function getResultAsArray() {
  12.     return $this->array;
  13.   }
  14. }
  15.  
  16.  
  17. $disney = new Disney;
  18. $disney->getResultAsArray();
  19. $disney->getResultAsArray()[0];

Rilevante l'aggiunta di un Built-in web server, il cui funzionamento viene descritto brevemente, ma con cognizione di causa, in "PHP 5.4 Built In Webserver".

Disponibile la guida alla migrazione da PHP 5.3 ed il ChangeLog. Per finire una lista pi o meno completa delle novit.
Precedente: Properties alla C# in PHP
Successiva: Microsoft Visual C# 2010 Step by Step
Commenti:  Primi  «  Meno recenti  «  11 - 14 di 14
Intervento di Filippo Fadda a.k.a. dedalo del 05-03-2012 ore 16:15, Capriata d'orba (AL)
Duca
Duca

(1994 interventi)
Iscritto il 03-04-2001
cdimauro ha scritto:
P.S. Se avessi voglia di provare qualcosa di diverso, potresti orientarti verso Python con web2py, oppure il "classico" (ormai) Django. O:-)
Ormai ho scritto l'80% della libreria per l'accesso a CouchDB in PHP, non avrei tempo per altri esperimenti. E poi se proprio dovessi sperimentare lo farei con Rust. ;-)
cdimauro ha scritto:
Se ti piacciono le cose "esotiche", invece, c' Pyjamas. 8)
Ah, questo si pu usare anche stando a letto in pigiama? :-)

Scherzi a parte, ho piuttosto tratto ispirazione da Bottle, non so se lo conosci. E' un framework minimale, elegante, senza fronzoli. Ho preso l'idea e la sto implementando in PHP. Mi piace il fatto di poter inserire nella route table una richiesta per quello che realmente. In Bottle definisci una la ruoute ad una get con il metodo get, associando poi alla route una response callback. E' trasparente e pulito.
Oltre tutto, visto che mi sono scritto un fullstack HTTP che uso nella mia libreria CouchDB, posso riusare il codice anche per la mia implementazione di Bottle.
Intervento di Cesare Di Mauro a.k.a. cdimauro del 05-03-2012 ore 16:26, San gregorio di catania ()
Marchese
Marchese

(910 interventi)
Iscritto il 22-05-2008
Conosco soltanto bottlepy, ma per sentito dire.

Non mi occupo di programmazione web (ho realizzato qualcosa nell'ex-azienda, ma con uso del web minimale e per uso interno), ma nell'ultimo periodo sto studiando qualcosa perch il web non si pu ignorare.

Pyjamas mi piaciuto perch consente di sviluppare per web con un approccio desktop. Per me che provengo da questo mondo una panacea, anche perch posso continuare a utilizzare Python. ;)
Intervento di Fulvio Esposito a.k.a. fulvio_esposito del 05-03-2012 ore 16:46, Caivano (NA)
Plebeo
Plebeo
(21 interventi)
Iscritto il 25-07-2010
cdimauro ha scritto:
Se supportano le stringhe unicode codificandole come UTF-8, come ha fatto Perl, un grossa stupidaggine.

Vero che il consumo di memoria risulter contenuto, ma l'accesso ai singoli elementi di una stringa risulter mostruosamente pi lento, perch si dovr eseguire una scansione della stringa byte per byte fino ad arrivare al code-point desiderato.

Da accesso immediato ad accesso lineare. Un bagno di sangue, insomma.

In realt su questo in molti la pensano diversamente. Anche UTF-16 ha i surrogate pairs, e in generale non si pu essere sicuri che code point = code unit! Il consiglio di molti semplicemente utilizzare il formato utilizzato sull'os su cui si gira, UTF-16 per Windows, UTF-8 per Linux, etc. almeno si evitano le conversioni ;)
Ovviamente la questione pi complicata di cos!
Intervento di Cesare Di Mauro a.k.a. cdimauro del 06-03-2012 ore 08:17, San gregorio di catania ()
Marchese
Marchese

(910 interventi)
Iscritto il 22-05-2008
E' vero, la gestione degli Unicode decisamente complessa.

Comunque su Linux gli sviluppatori di Python da tempo utilizzano UTF-32 come codifica, risolvendo alla radice ogni problema.

Su Windows il default UTF-16 perch la codifica pi diffusa, ed stato deciso di ignorare i code-point che richiedono di andare oltre i 16 bit, per una questione di efficienza.

Eventualmente sempre possibile abilitare la compilazione con UTF-32 anche per Windows (o, viceversa, UTF-16 per Linux).

Con Python 3.3 verr introdotta una particolare gestione delle stringhe che punta ancora di pi all'efficienza, utilizzando singoli byte per le stringhe Unicode che contengono soltanto caratteri ASCII, e passando a UTF-16/32 diversamente.

Utilizzare UTF-8 non ha senso per quanto scritto prima. Se vero che si risparmia sullo spazio occupato, l'accesso ai singoli caratteri / code-point della stringa passa da tempo costante a lineare.

A mio avviso si tratta di un inaccettabile peggioramento, perch spesso capita di accedere a precisi elementi, e non semplicemente per scorrere la stringa carattere dopo carattere dall'inizio alla fine.
Commenti:  Primi  «  Meno recenti  «  11 - 14 di 14
Copyright Programmazione.it™ 1999-2017. Alcuni diritti riservati. Testata giornalistica iscritta col n. 569 presso il Tribunale di Milano in data 14/10/2002. Pagina generata in 0.193 secondi.