Transcript
Introdução ao PHP orientado a objetos com AJAX Otávio Calaça Xavier
[email protected]
Orientação a Objetos Classe Objetos Métodos Atributos Visibilidade Construtores
Abstração Interface Herança Encapsulamento Polimorfismo Destrutores Introdução ao PHP orientado a objetos com AJAX
2
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 class Veiculo { Em PHP: // atributos
// métodos
} Introdução ao PHP orientado a objetos com AJAX
3
Abstração
Habilidade de se concentrar nas partes principais de um determinado contexto desprezando as características menos importantes ou acidentais.
Introdução ao PHP orientado a objetos com AJAX
4
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();
Introdução ao PHP orientado a objetos com AJAX
5
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”; Introdução ao PHP orientado a objetos com AJAX
6
Métodos Ações de um objeto definidas na classe que o abstrai. Ex: darPartida(), acelerar(), frear().
Em PHP:
class Veiculo { // atributos public function acelerar() { //algorítimo para acelerar } } $corsa = new Veiculo(); $corsa->acelerar(); Introdução ao PHP orientado a objetos com AJAX
7
Método Construtor Ação realizada no momento em que é criada uma nova instancia (objeto) de uma classe. class Veiculo { Em PHP: __construct($nome) {
echo “veiculo ”.$nome.” criado!”; }
}
$corsa = new Veiculo('Corsa'); Saida: veiculo Corsa criado!
Introdução ao PHP orientado a objetos com AJAX
8
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. class Veiculo { Em PHP: private $nome;
function __construct($nome) { $this->nome = $nome; echo "Criando veiculo ".$this->nome."\n"; } function __destruct() { echo "Destruindo veiculo ".$this->nome."\n"; }
}
Introdução ao PHP orientado a objetos com AJAX
9
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.
Introdução ao PHP orientado a objetos com AJAX
10
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! Introdução ao PHP orientado a objetos com AJAX
11
Herança Mecanismo pelo qual uma classe (subclasse) 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 Introdução ao PHP orientado a objetos com AJAX
12
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.
Introdução ao PHP orientado a objetos com AJAX
13
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; } Introdução ao PHP orientado a objetos com AJAX
14
Polimorfismo
Um mesmo método pode apresentar várias formas, de acordo com seu contexto. Abstrato
Veiculo acelerar() Carro acelerar()
Submarino acelerar()
Avião acelerar()
Introdução ao PHP orientado a objetos com AJAX
15
Interfaces Classe Avião estende a classe Veiculo Classe Urubu estende a classe Animal
Veiculo Carro
Submarino
Animal Avião
Lobo
Baleia
Urubu
Como definir o comportamento comum voar - entre Urubu e Avião? Introdução ao PHP orientado a objetos com AJAX
16
Interfaces(II)
Define um comportamento para classes de diferentes escopos. Interface:
Voadores
Veiculo Carro
Submarino
Animal Avião
Lobo
Baleia
Urubu
Todos os métodos são públicos e abstratos Introdução ao PHP orientado a objetos com AJAX
17
AJAX
Asynchronous Javascript And XML
Maior interação com o usuário.
Introdução ao PHP orientado a objetos com AJAX
18
AJAX Sem AJAX
Navegador Pag. WEB Pag. WEB Pag. WEB Pag. WEB
Servidor da Aplicação WEB
Com AJAX
Navegador
Página da WEB
Servidor da Aplicação WEB
Pag. WEB Pag. WEB
Introdução ao PHP orientado a objetos com AJAX
19
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.
Introdução ao PHP orientado a objetos com AJAX
20
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:
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); ou xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
Outros navegadores: xmlHttp = new XMLHttpRequest();
Introdução ao PHP orientado a objetos com AJAX
21
Métodos do XHR
abort(); getAllResponseHeaders() ; getResponseHeader("headername"); open("metodo","URL",async,"usuario",“senha"); send(content); setRequestHeader("label","value");
Introdução ao PHP orientado a objetos com AJAX
22
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. Introdução ao PHP orientado a objetos com AJAX
23
send() e abort()
send(); Envia a requisição. Passa os parâmetros (POST).
abort(); Cancela a requisição.
Introdução ao PHP orientado a objetos com AJAX
24
Métodos de Cabeçalho
getResponseHeader("headername"); Pega um parâmetro do cabeçalho de resposta.
getAllResponseHeaders(); Pega todos os parâmetros do cabeçalho de resposta em forma de string.
setRequestHeader("label","value"); Seta um parâmetro do cabeçalho de envio. Introdução ao PHP orientado a objetos com AJAX
25
Propriedades do XHR onreadystatechange readyState responseText responseXML status statusText
Introdução ao PHP orientado a objetos com AJAX
26
Propriedades do XHR
onreadystatechange Handler de um evento chamado em cada mudança de estado.
readyState Estado atual do objeto. Pode ser: 0 = uninitialized 1 = loading 2 = loaded 3 = interactive 4 = complete
Introdução ao PHP orientado a objetos com AJAX
27
Propriedades do XHR
responseText Resposta da requisição em formato texto ( string ).
responseXML Resposta da requisição em formato de XML (XML document object).
Introdução ao PHP orientado a objetos com AJAX
28
Propriedades do XHR
status Retorna o status como um numero. Ex: 200 para “OK”, 404 para “Not Found”...
statusText Retorna o status em formato texto (string) Ex: “OK”, “Not Found”...
Introdução ao PHP orientado a objetos com AJAX
29
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"); } } Introdução ao PHP orientado a objetos com AJAX
30
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; } } } Introdução ao PHP orientado a objetos com AJAX
31
FIM Otávio Calaça Xavier [email protected]
Introdução ao PHP orientado a objetos com AJAX
32