Você está na página 1de 32

Introduo ao PHP

orientado a objetos
com AJAX
Otvio Calaa Xavier
otavio@javacerrado.org

Orientao a Objetos
Classe
Objetos
Mtodos
Atributos
Visibilidade
Construtores

Abstrao
Interface
Herana
Encapsulamento
Polimorfismo
Destrutores
Introduo ao PHP orientado a objetos com AJAX
<Otvio Calaa Xavier>

Classe
Representao abstrata de objetos com
caractersticas afins.
Define e Descreve as aes providas pelos
seus objetos, bem como as informaes
que esses podem conter.
Ex: Veculo
class Veiculo {
Em PHP:
// atributos

// mtodos

}
Introduo ao PHP orientado a objetos com AJAX
<Otvio Calaa Xavier>

Abstrao

Habilidade de se concentrar nas partes


principais de um determinado contexto
desprezando as caractersticas menos
importantes ou acidentais.

Introduo ao PHP orientado a objetos com AJAX


<Otvio Calaa Xavier>

Objetos
Instancia de uma classe
Implementao de uma classe que prove
as aes (mtodos) e informaes
(atributos) que esta classe define e
descreve.
Ex: Corsa
Em PHP: $corsa = new Veiculo();

Introduo ao PHP orientado a objetos com AJAX


<Otvio Calaa Xavier>

Atributos
Caractersticas ou informaes dos objetos
Ex: cor, ano, modelo, marca.

Em PHP:

class Veiculo {
public $cor;
public $modelo;
// mtodos
}
$corsa = new Veiculo();
$corsa->cor = Branco;
$corsa->modelo = Sedan;
Introduo ao PHP orientado a objetos com AJAX
<Otvio Calaa Xavier>

Mtodos
Aes de um objeto definidas na classe
que o abstrai.
Ex: darPartida(), acelerar(), frear().

Em PHP:

class Veiculo {
// atributos
public function acelerar() {
//algortimo para acelerar
}
}
$corsa = new Veiculo();
$corsa->acelerar();
Introduo ao PHP orientado a objetos com AJAX
<Otvio Calaa Xavier>

Mtodo Construtor
Ao 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!

Introduo ao PHP orientado a objetos com AJAX


<Otvio Calaa Xavier>

Mtodo Destrutor
Mtodo que ser chamado assim que
todas as referncias a um objeto particular
forem removidas ou quando o objeto for
explicitamente destrudo.
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";
}

Introduo ao PHP orientado a objetos com AJAX


<Otvio Calaa Xavier>

Classe e Mtodo Abstrato


Descreve um comportamento geral para as
sub-classes de uma classe.
Somente o que faro e no como faro.
A classe que tem um mtodo abstrato
tambm deve ser declarada como abstrata.
Todas as sub-classes da classe abstrata
devem
sobrescrever
seus
mtodo
abstratos.

Introduo ao PHP orientado a objetos com AJAX


<Otvio Calaa Xavier>

10

Atributos e Mtodos estticos


Se referem a classe e no aos objetos
desta.
No 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!
Introduo ao PHP orientado a objetos com AJAX
<Otvio Calaa Xavier>

11

Herana
Mecanismo pelo qual uma classe (subclasse) pode estender uma outra classe
(super-classe) visando menos repetio de
codigo.
Ex: classe Moto estende classe Veculo.
Em PHP: class Moto extends Veiculo {
//metodos e atributos da classe Moto.

}
$cgTitan = new Moto();
=> $cgTitan contem todos os mtodos e atributos dos veculos
Introduo ao PHP orientado a objetos com AJAX
<Otvio Calaa Xavier>

12

Visibilidade
Modificadores de acesso.
Public => pode ser acessado em todo o
escopo do programa
Protected => acessvel apenas na classe
em que foi declarado e em suas filhas
(sub-classes)
Private => acessvel apenas na classe
onde foi declarado.

Introduo ao PHP orientado a objetos com AJAX


<Otvio Calaa Xavier>

13

Encapsulamento
Separao dos aspectos internos e
externos dos objetos.
Atributos
s podem ser acessados
indiretamente atravs de mtodos.
Em PHP: class Veiculo {
private $nome;

public function getNome() {


return $this->nome;
}
public function setNome($nome) {
$this->nome = $nome;
}
Introduo ao PHP orientado a objetos com AJAX
<Otvio Calaa Xavier>

14

Polimorfismo

Um mesmo mtodo pode apresentar vrias


formas, de acordo com seu contexto.
Abstrato

Veiculo
acelerar()
Carro
acelerar()

Submarino
acelerar()

Avio
acelerar()

Introduo ao PHP orientado a objetos com AJAX


<Otvio Calaa Xavier>

15

Interfaces
Classe Avio estende a classe Veiculo
Classe Urubu estende a classe Animal

Veiculo
Carro

Submarino

Animal
Avio

Lobo

Baleia

Urubu

Como definir o comportamento comum voar - entre Urubu e Avio?


Introduo ao PHP orientado a objetos com AJAX
<Otvio Calaa Xavier>

16

Interfaces(II)

Define um comportamento para classes de


diferentes escopos.
Interface:

Voadores

Veiculo
Carro

Submarino

Animal
Avio

Lobo

Baleia

Urubu

Todos os mtodos so pblicos e abstratos


Introduo ao PHP orientado a objetos com AJAX
<Otvio Calaa Xavier>

17

AJAX

Asynchronous Javascript And XML

Maior interao com o usurio.

Introduo ao PHP orientado a objetos com AJAX


<Otvio Calaa Xavier>

18

AJAX
Sem AJAX

Navegador
Pag. WEB
Pag. WEB
Pag. WEB
Pag. WEB

Servidor da
Aplicao
WEB

Com AJAX

Navegador

Pgina
da WEB

Servidor da
Aplicao
WEB

Pag. WEB
Pag. WEB

Introduo ao PHP orientado a objetos com AJAX


<Otvio Calaa Xavier>

19

O Objeto XMLHttpRequest
Faz uma requisio assncrona para o
servidor da aplicao.
Pode atualizar o contedo da pagina sem
que esta seja recarregada.
Ainda
no uma recomendao
padronizada pela W3C e sim um esboo
ou Working Draft.

Introduo ao PHP orientado a objetos com AJAX


<Otvio Calaa Xavier>

20

O Objeto XMLHttpRequest (II)


Tambm chamado de XHR
Por no 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();

Introduo ao PHP orientado a objetos com AJAX


<Otvio Calaa Xavier>

21

Mtodos do XHR

abort();
getAllResponseHeaders() ;
getResponseHeader("headername");
open("metodo","URL",async,"usuario",senha");
send(content);
setRequestHeader("label","value");

Introduo ao PHP orientado a objetos com AJAX


<Otvio Calaa Xavier>

22

open()

Especifica alguns atributos da requisio.


5 argumentos: 3 obrigatrios e 2 opcionais.
1 Arg: Mtodo de envio: GET ou POST
2 Arg: URL que ser requisitada.
3 Arg: Assncrono? true ou false.
4 Arg: Usurio para acesso ao servidor.
5 Arg: Senha para acesso ao servidor.
Introduo ao PHP orientado a objetos com AJAX
<Otvio Calaa Xavier>

23

send() e abort()

send();
Envia a requisio.
Passa os parmetros (POST).

abort();
Cancela a requisio.

Introduo ao PHP orientado a objetos com AJAX


<Otvio Calaa Xavier>

24

Mtodos de Cabealho

getResponseHeader("headername");
Pega um parmetro do cabealho de resposta.

getAllResponseHeaders();
Pega todos os parmetros do cabealho de
resposta em forma de string.

setRequestHeader("label","value");
Seta um parmetro do cabealho de envio.
Introduo ao PHP orientado a objetos com AJAX
<Otvio Calaa Xavier>

25

Propriedades do XHR
onreadystatechange
readyState
responseText
responseXML
status
statusText

Introduo ao PHP orientado a objetos com AJAX


<Otvio Calaa Xavier>

26

Propriedades do XHR

onreadystatechange
Handler de um evento chamado em cada mudana de estado.

readyState
Estado atual do objeto. Pode ser:
0 = uninitialized
1 = loading
2 = loaded
3 = interactive
4 = complete

Introduo ao PHP orientado a objetos com AJAX


<Otvio Calaa Xavier>

27

Propriedades do XHR

responseText
Resposta da requisio em formato texto ( string ).

responseXML
Resposta da requisio em formato de XML (XML
document object).

Introduo ao PHP orientado a objetos com AJAX


<Otvio Calaa Xavier>

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...

Introduo ao PHP orientado a objetos com AJAX


<Otvio Calaa Xavier>

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");
}
}
Introduo ao PHP orientado a objetos com AJAX
<Otvio Calaa Xavier>

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;
}
}
}
Introduo ao PHP orientado a objetos com AJAX
<Otvio Calaa Xavier>

31

FIM
Otvio Calaa Xavier
otavio@javacerrado.org

Introduo ao PHP orientado a objetos com AJAX


<Otvio Calaa Xavier>

32