El documento describe las ventajas y desventajas de diferentes librerías y frameworks para desarrollar aplicaciones Ajax con PHP, incluyendo XAjax, SAjax y PHPAjax. El autor argumenta que PHPAjax 3 podría ser la solución ideal al abstraer Javascript y el DOM, optimizar el método de transporte, y permitir la generación de código Javascript desde PHP.
3. Quien les habla?
Participante Google Summer of Code 2008
• Plug-in para WordPress
Ganador del PHP Innovation award 2007
4. Quien les habla?
Participante Google Summer of Code 2008
• Plug-in para WordPress
Ganador del PHP Innovation award 2007
Centro Nacional de Computacion
5. Quien les habla?
Participante Google Summer of Code 2008
• Plug-in para WordPress
Ganador del PHP Innovation award 2007
Centro Nacional de Computacion
www.CesaRodas.com
6. Quien les habla?
Participante Google Summer of Code 2008
• Plug-in para WordPress
Ganador del PHP Innovation award 2007
Centro Nacional de Computacion
www.CesaRodas.com
Cesar D. Rodas, http://cesar.la/ - L EX
AT 2
9. Porque utilizar AJAX?
Es la tendencia (web 2.0)
Desarrollo de quot;Aplicacionesquot; webs.
Reducción de ancho de banda.
10. Porque utilizar AJAX?
Es la tendencia (web 2.0)
Desarrollo de quot;Aplicacionesquot; webs.
Reducción de ancho de banda.
...
Cesar D. Rodas, http://cesar.la/ - L EX
AT 3
12. Porqué AJAX es complicado
Doble programación.
• Servidor (PHP).
• Cliente (Javascript).
Las implementaciones de Javascript no son estándares.
13. Porqué AJAX es complicado
Doble programación.
• Servidor (PHP).
• Cliente (Javascript).
Las implementaciones de Javascript no son estándares.
Liberías de PHP complicadas o incompletas.
14. Porqué AJAX es complicado
Doble programación.
• Servidor (PHP).
• Cliente (Javascript).
Las implementaciones de Javascript no son estándares.
Liberías de PHP complicadas o incompletas.
• Montón de códigos para cosas sencillas.
• Se necesita escribir javascript.
• Casi todas las librerías PHP sólo relizan RPC.
15. Porqué AJAX es complicado
Doble programación.
• Servidor (PHP).
• Cliente (Javascript).
Las implementaciones de Javascript no son estándares.
Liberías de PHP complicadas o incompletas.
• Montón de códigos para cosas sencillas.
• Se necesita escribir javascript.
• Casi todas las librerías PHP sólo relizan RPC.
Las librerías Javascript son muy grandes.
16. Porqué AJAX es complicado
Doble programación.
• Servidor (PHP).
• Cliente (Javascript).
Las implementaciones de Javascript no son estándares.
Liberías de PHP complicadas o incompletas.
• Montón de códigos para cosas sencillas.
• Se necesita escribir javascript.
• Casi todas las librerías PHP sólo relizan RPC.
Las librerías Javascript son muy grandes.
Cesar D. Rodas, http://cesar.la/ - L EX
AT 4
19. Algunas soluciones...
Simple librería de Javascript.
Método de transporte.
• XML
• JSON
• ...
Buenas librerías y/o frameworks quot;AJAXquot; en PHP.
20. Algunas soluciones...
Simple librería de Javascript.
Método de transporte.
• XML
• JSON
• ...
Buenas librerías y/o frameworks quot;AJAXquot; en PHP.
Cesar D. Rodas, http://cesar.la/ - L EX
AT 5
25. XAjax - Desventajas
Utiliza solo XML para el transporte.
Genera mucho código.
API débil.
• No hay forma de crear elementos en la repuesta.
• Cosas complicadas requieren de escritura de javascript.
Cesar D. Rodas, http://cesar.la/ - L EX
AT 8
26. SAjax
<?php
function multiply($x, $y) {
return $x * $y;
}
sajax init();
sajax export(quot;multiplyquot;);
sajax handle client request();
?>
<script>
<?php sajax show javascript(); ?>
function do multiply cb(z) {
document.getElementById(quot;zquot;).value = z;
}
function do multiply() {
x = document.getElementById(quot;xquot;).value;
y = document.getElementById(quot;yquot;).value;
x multiply(x, y, do multiply cb);
}
</script>
Cesar D. Rodas, http://cesar.la/ - L EX
AT 9
30. SAjax - Desventajas
Genera mucho javascript.
Poca documentacion.
API débil.
Se necesita escribir código Javascript.
31. SAjax - Desventajas
Genera mucho javascript.
Poca documentacion.
API débil.
Se necesita escribir código Javascript.
Solo realiza el quot;RPCquot;.
Cesar D. Rodas, http://cesar.la/ - L EX
AT 10
32. Cual sería la solución
perfecta?
Lo que todo PHPero necesita...
11
33. La solución
La parte importante.
Abstracción de Javascript.
Abstracción de los Objetos HTML (DOM API).
Método optimizado de transporte.
Cesar D. Rodas, http://cesar.la/ - L EX
AT 12
39. PHPAJAX
PHPClasses, Open source (BSD License).
Es la versión (re-escritura) 3.
Extensible.
Método de transporte.
Genera código javascript desde el PHP.
40. PHPAJAX
PHPClasses, Open source (BSD License).
Es la versión (re-escritura) 3.
Extensible.
Método de transporte.
Genera código javascript desde el PHP.
Subir (upload) archivos al servidor usando quot;ajaxquot;.
41. PHPAJAX
PHPClasses, Open source (BSD License).
Es la versión (re-escritura) 3.
Extensible.
Método de transporte.
Genera código javascript desde el PHP.
Subir (upload) archivos al servidor usando quot;ajaxquot;.
Cesar D. Rodas, http://cesar.la/ - L EX
AT 14
42. PHPAJAX - Un poco de historia
<?php
class chat put extends phpajax {
var $hotkeys=array(quot;ctrl-mquot;,quot;alt-yquot;);
var $inputs=array(quot;textquot;,quot;usr idquot;);
function loading() {
aprint('loading', 'Sending...');
ashow('loading');
ahide('send');
}
function main() {
global $mysql;
$a = $this->text;
aprint('chat-text',quot;me $aquot;,false);
aprint('text','');ashow('send');
js(quot;getObject('chat-text').scrollTop = getObject('chat-text').scrollHeight;quot;);
}
}
?>
Cesar D. Rodas, http://cesar.la/ - L EX
AT 15
49. PHPAJAX 3
Método de transporte.
• XML, JSON, ... ?
• Código Javascript.
Posible método alternativo de AJAX sin XMLHttpRequest().
50. PHPAJAX 3
Método de transporte.
• XML, JSON, ... ?
• Código Javascript.
Posible método alternativo de AJAX sin XMLHttpRequest().
Genera código Javascript a partir de PHP.
51. PHPAJAX 3
Método de transporte.
• XML, JSON, ... ?
• Código Javascript.
Posible método alternativo de AJAX sin XMLHttpRequest().
Genera código Javascript a partir de PHP.
Funciones comunes para evitar escritura de Javascript.
• Filtros.
• Operaciones Matematicas.
52. PHPAJAX 3
Método de transporte.
• XML, JSON, ... ?
• Código Javascript.
Posible método alternativo de AJAX sin XMLHttpRequest().
Genera código Javascript a partir de PHP.
Funciones comunes para evitar escritura de Javascript.
• Filtros.
• Operaciones Matematicas.
Creacion de elementos HTML en el RPC.
53. PHPAJAX 3
Método de transporte.
• XML, JSON, ... ?
• Código Javascript.
Posible método alternativo de AJAX sin XMLHttpRequest().
Genera código Javascript a partir de PHP.
Funciones comunes para evitar escritura de Javascript.
• Filtros.
• Operaciones Matematicas.
Creacion de elementos HTML en el RPC.
quot;Hooksquot; a eventos.
Cesar D. Rodas, http://cesar.la/ - L EX
AT 17
55. PHPAJAX 3 - PHP2JS
<?php
class MyButton extends HtmlButtons {
#
function onClick() {
#
$text = js::GetObject(quot;algun inputquot;);
$numero = js::GetObject(quot;algun numeroquot;I );
js::alert(quot;El valor del input es quot;, $text->value);
56. PHPAJAX 3 - PHP2JS
<?php
class MyButton extends HtmlButtons {
#
function onClick() {
#
$text = js::GetObject(quot;algun inputquot;);
$numero = js::GetObject(quot;algun numeroquot;I );
js::alert(quot;El valor del input es quot;, $text->value);
/* filtro */
jfilt::number($numero->value,quot;Tiene que ser un numeroquot;);a
57. PHPAJAX 3 - PHP2JS
<?php
class MyButton extends HtmlButtons {
#
function onClick() {
#
$text = js::GetObject(quot;algun inputquot;);
$numero = js::GetObject(quot;algun numeroquot;I );
js::alert(quot;El valor del input es quot;, $text->value);
/* filtro */
jfilt::number($numero->value,quot;Tiene que ser un numeroquot;);a
/* matematica, suma */
$numero->value = jnum::add(5,$numero->value);
}
}
?>
Cesar D. Rodas, http://cesar.la/ - L EX
AT 18