Facebook XHP
Giovedì 11 Febbraio 2010 - 14:12
di Alessandro Nuzzo

Marcel Laverdet, ingegnere di Facebook, ha annunciato il rilascio di un nuovo progetto, XHP, molto importante per lo sviluppo del frontend di Facebook.
Molto spesso quando si sviluppa il frontend di un’applicazione si mischia codice HTML e codice PHP in maniera poco ordinata o gestibile. L’alternativa è quella di utilizzare dei motori di templating, il più famoso dei quali è Smarty, per separare la logica dalla presentazione.
XHP è un’estensione per PHP che permette da una parte di scrivere codice per i vostri frontend in maniera più semplice e comprensibile, e dall’altra di proteggere i vostri form da attacchi cross-site scripting.
Con XHP, PHP sarà in grado di comprendere ed interpretare correttamente frammenti di codice XML.
Ma vediamo alcuni esempi. Questo è del classico codice HTML/PHP:
<?php
if ($_POST['name']) {
?>
<span>Hello, <?=$_POST['name']?>.</span>
<?php
} else {
?>
<form method="post">
What is your name?<br>
<input type="text" name="name">
<input type="submit">
</form>
<?php
}
mentre questo è il codice utilizzando l’estensione XHP:
<?php
// note: includes omitted
if ($_POST['name']) {
echo <span>Hello, {$_POST['name']}</span>;
} else {
echo
<form method="post">
What is your name?<br />
<input type="text" name="name" />
<input type="submit" />
</form>;
}
Una cosa interessante da notare è che XHP comprende che le variabili di $_POST, potenzialmente pericolose, verranno utilizzate all’interno della presentazione HTML e le tratta nella maniera corretta, occupandosi automaticamente di rimuovere possibili caratteri indesiderati.
Tra gli sviluppatori PHP c’è anche chi sostiene che questa estensione sia di gran lunga più interessante rispetto a HipHop, e che questa soluzione possa mettere fine alla diatriba templates vs. puro PHP. Io non ne sono così convinto, voi che ne pensate?
E a proposito di HipHop. Dopo l’annuncio di settimana scorsa da parte di Facebook è arrivato anche il primo commit sul repository ospitato da Github.
Per ora poco più che un file readme, ma a breve verranno pubblicati i primi sorgenti del progetto.
Why HipHop
One of the explicit design goals leading into HipHop was the ability to continue writing complex logic directly within PHP. Companies with large PHP codebases will generally rewrite their complex functionality directly as PHP extensions in either C or C++. Doing so ends up reducing the number of people who are able to work on the company’s entire codebase.
HipHop is not the right solution for everyone deploying PHP. We think it will be useful to companies running very large PHP infrastructures who do not wish to rewrite complex logic within C or C++.
Intanto potete guardare la registrazione del tech talk della scorsa settimana.
Categoria: PHP e Open Source | Permalink
Commenti
1
Non mi ispira molta fiducia…
Ma questo è solo un banale esempio, bisognerebbe vederlo all’opera su applicazioni vere
2
qualcuno mi spieghi cosa cambia?
Hello, ‘.$_POST[’name’].'’;
} else {
echo ‘What is your name?
‘;
}
?># - postato da Alien - 11 Febbraio 2010 - 14:52
3
Nessuno sembra minimamente preoccupato dal fatto che PHP, per quanto lo si voglia riscrivere, rimane una tecnologia non adatta a un sistema dell’enormità di Facebook.
# - postato da William Ghelfi - 11 Febbraio 2010 - 15:10
4
#3
L’esistenza di facebook ti contraddice in pieno# - postato da rollsappletree - 11 Febbraio 2010 - 15:15
5
@William a quanto pare il team di Facebook non la pensa come te. Ultimamente ha addirittura deciso di prendersi un po’ di tempo e ottimizzare il runtime di PHP invece di usare il tempo per migrare ad altre tecnologie.
6
@3:
ma per piacere.
# - postato da emmebì - 11 Febbraio 2010 - 16:06
7
@William:
spero che tu non sia uno sviluppatore/programmatore perchè non capisci veramente niente…
ma lol fai ridere…
# - postato da Mario - 11 Febbraio 2010 - 16:36
8
Io invece sono d’accordo con William e il fatto che il team di sviluppo si stia riscrivendo le librerie RunTime è la conferma secondo me dell’ineguatezza di PHP cosi come è disponibile, per progetti di ampie dimensioni. E poi questo concetto mi sembra riportato anche nel readme riportato nell’articolo. IMHO
# - postato da vivamau - 11 Febbraio 2010 - 17:47
9
@8:
Appunto :)
Grazie per avermi aiutato a spiegare a tutti gli altri come stanno le cose :)# - postato da William Ghelfi - 11 Febbraio 2010 - 17:56
10
non mi sembra che XHP aiuti tanto nella separazione di codice (X)HTML da codice PHP, anzi fa esattametne l’opposto.
Preferisco di gran lunga template engine come PHPTAL, forse saranno inferiori a livello di performance pure ma come livello di separazione tra logica e presentazione credo sia il massimo# - postato da ndo - 11 Febbraio 2010 - 23:39
11
PHP ha delle caratteristiche di sicurezza che in effetti danno pienamente ragione a William. Il fatto per esempio che usi ancora array globali per gestire le risorse HTTP non mi sembra che diano la stessa affidabilità di una soluzione OO come quella di Python o Perl. Speravo che con le nuove versioni questa cosa venisse cambiata.. ed invece nisba! :-) E io sono uno di quelli che ha deciso di consacrare a PHP il 90% del suo tempo, quindi… cmq, niente polemiche. :-)
# - postato da Gabriele Romanato - 12 Febbraio 2010 - 03:03
12
Sarò obsoleto, ma la flessibilità non deve minare le prestazioni, nemmeno di un sito minuscolo.
Quindi, mano al caro vecchio php e html separati :)# - postato da PiccoloSocrate - 12 Febbraio 2010 - 08:12
13
comincio a stufarmi di vedere ogni post che riguarda PHP oggetto di polemiche da parte di sedicenti saputelli che ce l’hanno duro. loro si. mica quei perdenti di facebook.
# - postato da devsmt - 12 Febbraio 2010 - 13:22
14
Resto dell’idea che il supporto inline a xml sia controproducente e in contro tendenza, soprattutto oggi che si fa un gran parlare di MVC e separazione della logica dalla presentazione…condivido inoltre quanto dice William ma credo sia proprio per il suddetto motivo che gli sviluppatori FB abbiano deciso di intraprendere questa strada…
# - postato da Simone - 12 Febbraio 2010 - 14:54
15
@8: Attenzione, hai detto una cosa diversa. William ha parlato indipendentemente dall’implementazione.
@11: Sei tu che decidi come usare i dati. Non ci vuole nulla a realizzare un sistema alternativo, e gran parte dei framework lo fanno già.In ogni caso, il filtering nativo di $_POST non è poi una grande novità. Lo si usa da anni.
# - postato da Francesco Ciracì - 12 Febbraio 2010 - 15:16
16
@15:
Io veramente ho scritto che PHP, per quanto lo si voglia riscrivere, ovvero nonostante gli sforzi di chi si mette a riscrivere PHP (Il PHP, non una applicazione scritta in PHP), rimane una tecnologia non adatta a un sistema dell’enormità di Facebook.E se proprio lo volete sapere, il mio parere è che Facebook per quanto è enorme dovrebbe girare con un core in C e delle funzionalità modulari in J2EE.
Poi se sapete di cosa si parla, bene. Se invece volete trollare parlando di saputelli e bimbominkiate varie, fate pure :)
Bau,
Wiz# - postato da William Ghelfi - 12 Febbraio 2010 - 16:32
17
@William Ghelfi:
tu conosci molti siti che hanno un core in C e delle funzionalità modulari in J2EE?
# - postato da Pino - 13 Febbraio 2010 - 17:49
18
@William
Facebook, tre anni fa ha tentato di migrare il codice da PHP a Python (con 2 team diversi) e a Java (1 team). I tentativi sono falliti. Tra tutti i vari tentativi per accelerare Facebook (i precedenti ed altri), Hip Hop for PHP è quello che ha dati i risultati migliori in quanto a performance.“There have been many attempts to migrate away from PHP at Facebook over the years.
Since 2007 alone, Haiping named four failed attempts: to Python (twice), to Java, to C++.”
19
@18:
Ok, ammettiamo che il team Java fosse in grado di svolgere il compito e che abbia avuto carta bianca per svolgerlo al meglio, e che nonostante questo abbia fallito.
Rimangono sempre problemi di stabilità, scalabilità, estensibilità, e manutenibilità che rapportati alla già citata enormità di Facebook, mi fanno immediatamente tornare su J2EE come soluzione ottimale tutto sommato.
Per non lasciare #17 senza feed per troll, posso anche aggiungere che il core in C l’ho inserito semplicemente come probabile esempio per tirare al massimo le prestazioni. Per quanto mi riguarda, per sistemi del livello del più grande social netowork del mondo, J2EE è l’unica opzione possibile.
Bau,
Wiz# - postato da William Ghelfi - 15 Febbraio 2010 - 14:29
20
> Per quanto mi riguarda, per sistemi del livello del più grande social netowork del mondo, J2EE è l’unica opzione possibile.
Per quanto riguarda Facebook invece no (e questo qualcosa vorrà pur dire…).
Punto.# - postato da emmebì - 15 Febbraio 2010 - 15:18
21
@emmebì senza nome e riferimenti:
Capisco l’irresistibile tentazione alla trollata sempre in agguato da queste ed altre parti… ma devo dire che la tua risposta piccata alla mia opinione appare quantomento fuori luogo.
Manco fossi il patron di Facebook in persona :)Bau,
Wiz# - postato da William Ghelfi - 15 Febbraio 2010 - 16:43
22
@21,
beh, se vuoi accomodarti, contraddici pure la mia affermazione.
Nel caso non vi riuscissi, probabilmente i troll ti farebbero compagnia al fine di perorare la TUA (e solo tua) tesi.# - postato da emmebì - 15 Febbraio 2010 - 17:06
23
Contraddire la tua affermazione?
“Per quanto riguarda Facebook invece no (e questo qualcosa vorrà pur dire…).
Punto.”E cosa ci sarebbe mai da contraddire?
Ti auguro di piazzarti bene alle olimpiadi della trollata in solitario, io esco dal topic :)
Bau,
Wiz# - postato da William Ghelfi - 15 Febbraio 2010 - 17:24
24
c.v.d.
Ciao ciao, rimani in buona compagnia.
# - postato da emmebì - 15 Febbraio 2010 - 17:39
25
A me francamente non sembra che xhp tenga controller e view molto separati. Anzi, si ha un risultato ibrido decisamente controtendenza oggi nel 2010 (risparmiatemi la storia che le idee geniali sono sempre controtendenza)!
Per inserirmi pacificamente nel vostro flaming che mi auguro sia finito, io ritengo che php sia sufficientemente solido per il frontend di FB. Per gestire l’enorme mole di dati sarebbe certamente più furbo usare un core in un linguaggio più performante, ma credo che questo avvenga già.# - postato da Diego - 16 Febbraio 2010 - 12:27
26
Quoto pienamente Diego.
Quello che fa questo XHP è già fattibile senza uscire da php, con qualche virgoletta, qualche variabile o al limite con la sintassi heredoc. Non capisco quali vantaggi effettivi porterebbe.
Se poi è esiste solo per rendere semplificare la sintassi rendendo più veloce la scrittura del codice, codice che poi verrà trasformato in altro … è interessante, ma non una bomba.
HipHop mi sembra decisamente più interessante ed utile. (E non perché php non è in grado, ma perché un risparmio di risorse è sempre cosa buona e giusta).
# - postato da scienzedellevanghe - 16 Febbraio 2010 - 16:12
27
@William:
“Io veramente ho scritto che PHP, per quanto lo si voglia riscrivere, ovvero nonostante gli sforzi di chi si mette a riscrivere PHP (Il PHP, non una applicazione scritta in PHP), rimane una tecnologia non adatta a un sistema dell’enormità di Facebook.”
Il che, stando alla lingua italiana, è esattamente ciò che ti ho attribuito ed è diverso da ciò che ha detto vivaman.Ti dirò, in parte concordo con te. Non scriverei un’applicazione di queste dimensioni in PHP. Però se attualmente Facebook lo usa evidentemente ci si trovano bene.
Non mi piace J2EE sinceramente, ma sarebbe con tutta probabilità la best option per un sistema simile.# - postato da Francesco Ciracì - 16 Febbraio 2010 - 18:21
28
@William Ghelfi:
trovo offensivo il riferimento al “troll”.
Io ti ho solo chiesto se conosci molti siti fatti in quel modo: poiché, come si nota dalle tue parole, non ti è mai capitato di fare una cosa simile (né di vederla), io direi che le tue parole vanno prese come le parole di un teorico, cioè le parole di uno che non ha mai fatto questa cosa e magari sogna di farla (e nel frattempo suggerisce a Facebook -che di sicuro ha affrontato il problema prima di lui, meglio e con problematiche che lui non conosce- di applicare la sua tecnica). Andiamo bene…
# - postato da Pino - 20 Febbraio 2010 - 18:47







