introdução ao php orientado a objetos com ajax

32
Introdução ao PHP orientado a objetos com AJAX Otávio Calaça Xavier [email protected]

Upload: otavio-calaca-xavier

Post on 06-Jun-2015

6.612 views

Category:

Technology


6 download

DESCRIPTION

Slides de oficina sobre o desenvolvimento orientado a objetos com PHP, ministrado em abril de 2007 no FLISOL-GO. São apresentados conceitos como Classes, Objetos, Abstração, Herança, Polimorfismo, Encapsulamento e Interfaces, entre outros.

TRANSCRIPT

Page 1: Introdução ao PHP Orientado a Objetos com Ajax

Introdução ao PHP orientado a objetos com AJAX

Otávio Calaça [email protected]

Page 2: Introdução ao PHP Orientado a Objetos com Ajax

Introdução ao PHP orientado a objetos com AJAX<Otávio Calaça Xavier> 2

Orientação a Objetos

Classe Objetos Métodos Atributos Visibilidade Construtores

AbstraçãoInterfaceHerançaEncapsulamentoPolimorfismoDestrutores

Page 3: Introdução ao PHP Orientado a Objetos com Ajax

Introdução ao PHP orientado a objetos com AJAX<Otávio Calaça Xavier> 3

Classe

Representação abstrata de objetos com características afins.

Define e Descreve as ações providas pelos seus objetos, bem como as informações que esses podem conter.

Ex: Veículo Em PHP: class Veiculo {

// atributos// métodos

}

Page 4: Introdução ao PHP Orientado a Objetos com Ajax

Introdução ao PHP orientado a objetos com AJAX<Otávio Calaça Xavier> 4

Abstração

Habilidade de se concentrar nas partes principais de um determinado contexto desprezando as características menos importantes ou acidentais.

Page 5: Introdução ao PHP Orientado a Objetos com Ajax

Introdução ao PHP orientado a objetos com AJAX<Otávio Calaça Xavier> 5

Objetos

Instancia de uma classe Implementação de uma classe que prove

as ações (métodos) e informações (atributos) que esta classe define e descreve.

Ex: Corsa Em PHP: $corsa = new Veiculo();

Page 6: Introdução ao PHP Orientado a Objetos com Ajax

Introdução ao PHP orientado a objetos com AJAX<Otávio Calaça Xavier> 6

Atributos

Características ou informações dos objetos Ex: cor, ano, modelo, marca.

Em PHP: class Veiculo {public $cor;public $modelo;// métodos

}

$corsa = new Veiculo();$corsa->cor = “Branco”;$corsa->modelo = “Sedan”;

Page 7: Introdução ao PHP Orientado a Objetos com Ajax

Introdução ao PHP orientado a objetos com AJAX<Otávio Calaça Xavier> 7

Métodos

Ações de um objeto definidas na classe que o abstrai.

Ex: darPartida(), acelerar(), frear().

Em PHP: class Veiculo {

// atributospublic function acelerar() {

//algorítimo para acelerar}

}

$corsa = new Veiculo();$corsa->acelerar();

Page 8: Introdução ao PHP Orientado a Objetos com Ajax

Introdução ao PHP orientado a objetos com AJAX<Otávio Calaça Xavier> 8

Método Construtor

Ação realizada no momento em que é criada uma nova instancia (objeto) de uma classe.

Em PHP: class Veiculo {__construct($nome) {

echo “veiculo ”.$nome.” criado!”;}

}

$corsa = new Veiculo('Corsa');Saida:veiculo Corsa criado!

Page 9: Introdução ao PHP Orientado a Objetos com Ajax

Introdução ao PHP orientado a objetos com AJAX<Otávio Calaça Xavier> 9

Método Destrutor

Método que será chamado assim que todas as referências a um objeto particular forem removidas ou quando o objeto for explicitamente destruído.

Em PHP: class Veiculo {private $nome;function __construct($nome) {

$this->nome = $nome;echo "Criando veiculo ".$this->nome."\n";

}function __destruct() {

echo "Destruindo veiculo ".$this->nome."\n";}

}

Page 10: Introdução ao PHP Orientado a Objetos com Ajax

Introdução ao PHP orientado a objetos com AJAX<Otávio Calaça Xavier> 10

Classe e Método Abstrato

Descreve um comportamento geral para as sub-classes de uma classe.

Somente o que farão e não como farão. A classe que tem um método abstrato

também deve ser declarada como abstrata. Todas as sub-classes da classe abstrata

devem sobrescrever seus método abstratos.

Page 11: Introdução ao PHP Orientado a Objetos com Ajax

Introdução ao PHP orientado a objetos com AJAX<Otávio Calaça Xavier> 11

Atributos e Métodos estáticos

Se referem a classe e não aos objetos desta.

Não precisa de instanciar a classe. Em PHP: class Veiculo {

public static $quantidade = “1”;}echo Veiculo::$quantidade;Saida: 1

$corsa = new Veiculo();echo $corsa->quantidade;Saida: Erro!

Page 12: Introdução ao PHP Orientado a Objetos com Ajax

Introdução ao PHP orientado a objetos com AJAX<Otávio Calaça Xavier> 12

Herança

Mecanismo pelo qual uma classe (sub-classe) pode estender uma outra classe (super-classe) visando menos repetição de codigo.

Ex: classe Moto estende classe Veículo. Em PHP: class Moto extends Veiculo {

//metodos e atributos da classe Moto.}$cgTitan = new Moto();

=> $cgTitan contem todos os métodos e atributos dos veículos

Page 13: Introdução ao PHP Orientado a Objetos com Ajax

Introdução ao PHP orientado a objetos com AJAX<Otávio Calaça Xavier> 13

Visibilidade

Modificadores de acesso. Public => pode ser acessado em todo o

escopo do programa Protected => acessível apenas na classe

em que foi declarado e em suas filhas (sub-classes)

Private => acessível apenas na classe onde foi declarado.

Page 14: Introdução ao PHP Orientado a Objetos com Ajax

Introdução ao PHP orientado a objetos com AJAX<Otávio Calaça Xavier> 14

Encapsulamento

Separação dos aspectos internos e externos dos objetos.

Atributos só podem ser acessados indiretamente através de métodos.

Em PHP: class Veiculo {private $nome;public function getNome() {

return $this->nome;}public function setNome($nome) {

$this->nome = $nome;}

}

Page 15: Introdução ao PHP Orientado a Objetos com Ajax

Introdução ao PHP orientado a objetos com AJAX<Otávio Calaça Xavier> 15

Polimorfismo

Um mesmo método pode apresentar várias formas, de acordo com seu contexto.

Veiculoacelerar()

Carroacelerar()

Submarinoacelerar()

Aviãoacelerar()

Abstrato

Page 16: Introdução ao PHP Orientado a Objetos com Ajax

Introdução ao PHP orientado a objetos com AJAX<Otávio Calaça Xavier> 16

Interfaces

Classe Avião estende a classe Veiculo Classe Urubu estende a classe Animal

Como definir o comportamento comum -voar - entre Urubu e Avião?

Veiculo

Carro Submarino Avião

Animal

Lobo Baleia Urubu

Page 17: Introdução ao PHP Orientado a Objetos com Ajax

Introdução ao PHP orientado a objetos com AJAX<Otávio Calaça Xavier> 17

Interfaces(II)

Define um comportamento para classes de diferentes escopos.

Todos os métodos são públicos e abstratos

Veiculo

Carro Submarino Avião

Animal

Lobo Baleia Urubu

VoadoresInterface:

Page 18: Introdução ao PHP Orientado a Objetos com Ajax

Introdução ao PHP orientado a objetos com AJAX<Otávio Calaça Xavier> 18

AJAX

Asynchronous Javascript And XML

Maior interação com o usuário.

Page 19: Introdução ao PHP Orientado a Objetos com Ajax

Introdução ao PHP orientado a objetos com AJAX<Otávio Calaça Xavier> 19

AJAX

Servidor da Aplicação

WEB

NavegadorPag. WEB

Pag. WEB

Pag. WEB

Pag. WEB

Pag. WEB

Pag. WEB

Servidor da Aplicação

WEB

Navegador

Página da WEB

● Sem AJAX ● Com AJAX

Page 20: Introdução ao PHP Orientado a Objetos com Ajax

Introdução ao PHP orientado a objetos com AJAX<Otávio Calaça Xavier> 20

O Objeto XMLHttpRequest Faz uma requisição assíncrona para o

servidor da aplicação. Pode atualizar o conteúdo da pagina sem

que esta seja recarregada. Ainda não é uma recomendação

padronizada pela W3C e sim um ‘esboço’ ou Working Draft.

Page 21: Introdução ao PHP Orientado a Objetos com Ajax

Introdução ao PHP orientado a objetos com AJAX<Otávio Calaça Xavier> 21

O Objeto XMLHttpRequest (II) Também chamado de XHR Por não estar padronizado, pode ser

instanciado de formas diferentes de acordo com o navegador.

Internet Explorer:

Outros navegadores:xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); ouxmlHttp = new ActiveXObject("Microsoft.XMLHTTP");

xmlHttp = new XMLHttpRequest();

Page 22: Introdução ao PHP Orientado a Objetos com Ajax

Introdução ao PHP orientado a objetos com AJAX<Otávio Calaça Xavier> 22

Métodos do XHR abort(); getAllResponseHeaders() ; getResponseHeader("headername"); open("metodo","URL",async,"usuario",“senha"); send(content); setRequestHeader("label","value");

Page 23: Introdução ao PHP Orientado a Objetos com Ajax

Introdução ao PHP orientado a objetos com AJAX<Otávio Calaça Xavier> 23

open() Especifica alguns atributos da requisição. 5 argumentos: 3 obrigatórios e 2 opcionais.

1º Arg: Método de envio: “GET” ou “POST” 2º Arg: URL que será requisitada. 3º Arg: Assíncrono? true ou false. 4º Arg: Usuário para acesso ao servidor. 5º Arg: Senha para acesso ao servidor.

Page 24: Introdução ao PHP Orientado a Objetos com Ajax

Introdução ao PHP orientado a objetos com AJAX<Otávio Calaça Xavier> 24

send() e abort() send();

abort();

Envia a requisição.

Passa os parâmetros (POST).

Cancela a requisição.

Page 25: Introdução ao PHP Orientado a Objetos com Ajax

Introdução ao PHP orientado a objetos com AJAX<Otávio Calaça Xavier> 25

Métodos de Cabeçalho

getResponseHeader("headername");

getAllResponseHeaders();

setRequestHeader("label","value");

Pega um parâmetro do cabeçalho de resposta.

Pega todos os parâmetros do cabeçalho de resposta em forma de string.

Seta um parâmetro do cabeçalho de envio.

Page 26: Introdução ao PHP Orientado a Objetos com Ajax

Introdução ao PHP orientado a objetos com AJAX<Otávio Calaça Xavier> 26

Propriedades do XHR onreadystatechange readyState responseText responseXML status statusText

Page 27: Introdução ao PHP Orientado a Objetos com Ajax

Introdução ao PHP orientado a objetos com AJAX<Otávio Calaça Xavier> 27

Propriedades do XHR onreadystatechange

readyState

Handler de um evento chamado em cada mudança de estado.

Estado atual do objeto. Pode ser:

0 = uninitialized1 = loading2 = loaded3 = interactive4 = complete

Page 28: Introdução ao PHP Orientado a Objetos com Ajax

Introdução ao PHP orientado a objetos com AJAX<Otávio Calaça Xavier> 28

Propriedades do XHR responseText

responseXML

Resposta da requisição em formato texto ( string ).

Resposta da requisição em formato de XML (XML document object).

Page 29: Introdução ao PHP Orientado a Objetos com Ajax

Introdução ao PHP orientado a objetos com AJAX<Otávio Calaça Xavier> 29

Propriedades do XHR status

statusText

Retorna o status como um numero. Ex: 200 para “OK”, 404 para “Not Found”...

Retorna o status em formato texto (string)Ex: “OK”, “Not Found”...

Page 30: Introdução ao PHP Orientado a Objetos com Ajax

Introdução ao PHP orientado a objetos com AJAX<Otávio Calaça Xavier> 30

Criando Objeto XHR Exemplo: try

{ // Firefox, Opera 8.0+, Safari, etc... xmlHttp=new XMLHttpRequest(); } catch (e) { // Internet Explorer try { xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); } }

Page 31: Introdução ao PHP Orientado a Objetos com Ajax

Introdução ao PHP orientado a objetos com AJAX<Otávio Calaça Xavier> 31

Requisitando com XHR Exemplo:

function ajax(url, metodo, parametros) { xmlHttp.onreadystatechange = mudouEstado; xmlHttp.open(metodo,url,true); xmlHttp.setRequestHeader("Content-length", parametros.length); xmlHttp.send(parametros); }

function mudouEstado() { if (xmlHttp.readyState==4 && xmlHttp.status == 200) {

texto = xmlHttp.responseText;xml = xmlHttp.responseXML;if(divNome) {

document.getElementById(divNome).innerHTML = texto;}

}}

Page 32: Introdução ao PHP Orientado a Objetos com Ajax

Introdução ao PHP orientado a objetos com AJAX<Otávio Calaça Xavier> 32

FIM

Otávio Calaça [email protected]