php e ajax: do request ao framework

27
PHP e AJAX: do Request ao Framework Rafael Machado Dohms Coordenação PHPDF

Upload: rafael-dohms

Post on 10-May-2015

5.152 views

Category:

Technology


2 download

DESCRIPTION

Plaestra atualizada para o PHP Conference 2007

TRANSCRIPT

Page 1: PHP e AJAX: do Request ao Framework

PHP e AJAX: do Request ao Framework

Rafael Machado DohmsCoordenação PHPDF

Page 2: PHP e AJAX: do Request ao Framework

Rafael Dohms [[email protected]]PHP e AJAX: do Request ao Framework # 2

Licença e distribuição

Esta palestra esta disponibilizada sob a licença Creative Commons Atribuição-Uso Não-Comercial-Compartilhamento pela mesma Licença 3.0 Genérica

• Você pode:▪ copiar, distribuir, exibir e executar a obra ▪ criar obras derivadas

• Sob as seguintes condições:▪ Atribuição. Você deve dar crédito ao autor original, da forma

especificada pelo autor ou licenciante. ▪ Uso Não-Comercial. Você não pode utilizar esta obra com

finalidades comerciais. ▪ Compartilhamento pela mesma Licença. Se você alterar,

transformar, ou criar outra obra com base nesta, você somente poderá distribuir a obra resultante sob uma licença idêntica a esta.

http://creativecommons.org/licenses/by-nc-sa/3.0/

Page 3: PHP e AJAX: do Request ao Framework

Rafael Dohms [[email protected]]PHP e AJAX: do Request ao Framework # 3

Conteúdo

• Pré-Requisitos• O que é AJAX?

▪Como funciona?▪O Objeto XMLHttpRequest

• Onde devo usar?• Quem está usando?• Caminhos para o aprendizado• Prática 1: no braço• Prática 2: XAJAX• Outras soluções e comentários

Page 4: PHP e AJAX: do Request ao Framework

Rafael Dohms [[email protected]]PHP e AJAX: do Request ao Framework # 4

Pré-Requisitos

• Javascript• DOM (Document Object Model)• Javascript com XML• PHP com XML• MySQL e conexão com Banco de

Dados• Noções de OO

Page 5: PHP e AJAX: do Request ao Framework

Rafael Dohms [[email protected]]PHP e AJAX: do Request ao Framework # 5

Quem sou?

Rafael Machado Dohms é Engenheiro da

Computação (DF-13735/D) formado pelo Centro Universitário de Brasília, natural de Porto Alegre/RS. Atua na área de desenvolvimento e implementação de projetos de sistemas web-based, e é Analista de Sistemas no Ministério do Meio Ambiente.

• 8 anos de experiência em PHP• Membro da coordenação do PHPDF

Page 6: PHP e AJAX: do Request ao Framework

Rafael Dohms [[email protected]]PHP e AJAX: do Request ao Framework # 6

Objetivo

Apresentar a técnica de programação conhecida como AJAX, apresentando sua forma de trabalho e demonstrando como aproveitar a biblioteca XAJAX.

Page 7: PHP e AJAX: do Request ao Framework

Rafael Dohms [[email protected]]PHP e AJAX: do Request ao Framework # 7

AJAX- O que é?

• Não é uma tecnologia nova!▪Nova forma de se utilizar tecnologias já

consolidadas: CSS, DOM, JS e o XMLHttpRequest

• Asyncronous Javascript And XML▪Envio assíncrono de dados▪Grandes por míudos:

▫Enviar e receber dados novos sem recarregar a página (background)

Page 8: PHP e AJAX: do Request ao Framework

Rafael Dohms [[email protected]]PHP e AJAX: do Request ao Framework # 8

Como funciona AJAX?

ApacheIIS

Lighthttp...

PHPASPJSP

Ruby ...

Page 9: PHP e AJAX: do Request ao Framework

Rafael Dohms [[email protected]]PHP e AJAX: do Request ao Framework # 9

O XMLHttpRequest

• Histórico▪2000 - Criado pela Microsoft para o

Outlook WebAccess▪2002 – Incorporado no Mozilla▪2006 – Publicado o primeiro Draft na W3C

▫http://www.w3.org/TR/XMLHttpRequest/

Page 10: PHP e AJAX: do Request ao Framework

Rafael Dohms [[email protected]]PHP e AJAX: do Request ao Framework # 10

XMLHttpRequest

• Propriedades▪ readyState

▫ 0 = uninitialized (não inicializado)▫ 1 = opened (aberto)▫ 2 = headers_received (cabeçalhos recebidos)▫ 3 = loading (carregando)▫ 4 = done (pronto)

▪ responseText ▪ responseXML ▪ Status (200,404,403...)▪ statusText (Not found…)▪ onreadystatechange -- evento

Page 11: PHP e AJAX: do Request ao Framework

Rafael Dohms [[email protected]]PHP e AJAX: do Request ao Framework # 11

XMLHttpRequest

• Métodos▪open("method","URL",async,"uname","ps

wd") ▫Ex: open(“POST”,”arquivo.php”,true);

▪setRequestHeader("label","value") ▪send(content) ▪getResponseHeader("headername") ▪getAllResponseHeaders() ▪abort()

Page 12: PHP e AJAX: do Request ao Framework

Rafael Dohms [[email protected]]PHP e AJAX: do Request ao Framework # 12

Onde usar e onde não?

• Use:▪Auto-complete▪Validação complexa de dados▪Criação de subitens de um item maior▪Carregar dados externos de acordo com

parâmetros em tempo real▪Validação/Processamento de dados

confiávies

• Não use:▪Navegação

Page 13: PHP e AJAX: do Request ao Framework

Rafael Dohms [[email protected]]PHP e AJAX: do Request ao Framework # 13

Quem já usa?

• Google▪GMail▪Google Calendar▪Google Maps

• Sistemas▪De votação▪De Cálculo de Transporte

Page 14: PHP e AJAX: do Request ao Framework

Rafael Dohms [[email protected]]PHP e AJAX: do Request ao Framework # 14

Caminhos ao Aprendizado

• Sem utilizar bibliotecas/frameworks▪ Vantagens:

▫ Maio domínio da ferramenta▫ Maior controle (como e onde)

▪ Desvantagens▫ Tempo e esforço

• Utilizando bibliotecas/frameworks▪ Vantagens

▫ Produtividade acelerada▫ JavaScript opcional▫ Menos pré-requisitos

▪ Desvantagem▫ Refém da biblioteca▫ Pouco conhecimento do “por trás das cortinas”

Page 15: PHP e AJAX: do Request ao Framework

Rafael Dohms [[email protected]]PHP e AJAX: do Request ao Framework # 15

Prática 1: no braço

• Objetivo▪Mural de recados

• Funcionalidades▪Adição de mensagens▪Visualização de mensagens

• Material▪PHP▪Base de dados

O browser FireFox possui uma extensão (componente) chamado FireBug que ajuda muito a debugar sites com AJAX, pois mostra todas requisições feitas, o que foi enviado e o que foi recebido

Page 16: PHP e AJAX: do Request ao Framework

Rafael Dohms [[email protected]]PHP e AJAX: do Request ao Framework # 16

Prática 1

Page 17: PHP e AJAX: do Request ao Framework

Rafael Dohms [[email protected]]PHP e AJAX: do Request ao Framework # 17

Prática 1

• Funções Javascript▪criaRequest

▫Cria uma instância do objeto XmlHttpRequest

▪enviaDados()▫Reúne os dados▫Usa o Request para enviar os dados por POST▫Define função de retorno

▪recebeDados()▫Verifica estado▫Recebe valores▫Altera DOM

Page 18: PHP e AJAX: do Request ao Framework

Rafael Dohms [[email protected]]PHP e AJAX: do Request ao Framework # 18

Prática 1

• Funções PHP▪gravaDepoimento

▫Recebe Dados do POST▫Grava no banco

▪montaTemplate▫Monta template▫Monta XML de resposta▫Retorna dados

Page 19: PHP e AJAX: do Request ao Framework

Rafael Dohms [[email protected]]PHP e AJAX: do Request ao Framework # 19

Prática 1

• Retorno XML

<?xml version="1.0" encoding="iso-8859-1" ?>

<response>

<erro>0/1</erro>

<item id="1">Retorno em HTML ou Texto</item>

</response>

Page 20: PHP e AJAX: do Request ao Framework

Rafael Dohms [[email protected]]PHP e AJAX: do Request ao Framework # 20

Prática 1

Page 21: PHP e AJAX: do Request ao Framework

Rafael Dohms [[email protected]]PHP e AJAX: do Request ao Framework # 21

O XAJAX

• O que é?▪Biblioteca em PHP, que implementa as

funções javascript necessárias

• Onde?▪http://www.xajaxproject.org/

Page 22: PHP e AJAX: do Request ao Framework

Rafael Dohms [[email protected]]PHP e AJAX: do Request ao Framework # 22

Prática 2: XAJAX

• Objetivo▪Mural de recados

• Funcionalidades▪Adição de mensagens▪Visualização de mensagens▪Remoção

• Material▪PHP▪XAJAX▪Base de dados

Page 23: PHP e AJAX: do Request ao Framework

Rafael Dohms [[email protected]]PHP e AJAX: do Request ao Framework # 23

Prática 2

Page 24: PHP e AJAX: do Request ao Framework

Rafael Dohms [[email protected]]PHP e AJAX: do Request ao Framework # 24

Prática 2

• Funções XAJAX▪gravaDepoimento

▫Recebe os dados▫Validação dos dados▫Insere no banco▫Gera retorno

▪delDepoimento▫Recebe id do depoimento▫Deleta do banco▫Define ações javascript

Page 25: PHP e AJAX: do Request ao Framework

Rafael Dohms [[email protected]]PHP e AJAX: do Request ao Framework # 25

Outras estradas e Comentários

• Bibliotecas▪ Javascript

▫ Prototype, DoJo, JQuery

▪ PHP▫ SAJAX (http://www.modernmethod.com/sajax/)▫ PEAR::HTML_AJAX

(http://pear.php.net/package/HTML_AJAX)▫ Xajax (http://www.xajaxproject.org/)

• Soluções▪ Javascript Remote Invocation▪ XML RPC▪ Flash Remoting

• Segurança??

Page 26: PHP e AJAX: do Request ao Framework

Rafael Dohms [[email protected]]PHP e AJAX: do Request ao Framework # 26

AJAX com JSON

• JSON: Javascript Object Notation▪Ganhou muito espaço recentemente▪Implementado nativamente no PHP 5.2.1

▫json_encode e json_decode

▪Processamento mais ágil{response: {erro: 0, item: { id:1, texto: “Retorno em Texto ou HTML” } }

Leitura: alert(obj.response.erro); //Alerta 0

{response: {erro: 0, itens: [{ id:1, texto: “primeiro” }, { id:2, texto: “segundo” }] }

Leitura: alert(obj.response.itens[1].texto); //Alerta “segundo”

Page 27: PHP e AJAX: do Request ao Framework

Rafael Dohms [[email protected]]PHP e AJAX: do Request ao Framework # 27

Contato

Obrigado!Aproveitem o evento

• Blog▪ www.rafaeldohms.com.br

• Email▪ [email protected]

• Links▪ FireFox: http://www.getfirefox.com/▪ FireBug: http://www.getfirebug.com/ ▪ Xajax: http://www.xajaxproject.org/