Este documento introduz conceitos básicos de programação orientada a objetos em PHP, incluindo classes, objetos, atributos, métodos, herança, encapsulamento e AJAX. O documento explica como o objeto XMLHttpRequest pode ser usado para fazer requisições assíncronas e atualizar partes de uma página sem recarregá-la completamente.
2. Orientação a Objetos
Classe Abstração
Objetos Interface
Herança
Métodos
Encapsulamento
Atributos
Polimorfismo
Visibilidade
Construtores Destrutores
Introdução ao PHP orientado a objetos com AJAX
2
<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
}
Introdução ao PHP orientado a objetos com AJAX
3
<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.
Introdução ao PHP orientado a objetos com AJAX
4
<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();
Introdução ao PHP orientado a objetos com AJAX
5
<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”;
Introdução ao PHP orientado a objetos com AJAX
6
<Otávio Calaça Xavier>
7. Métodos
Ações de um objeto definidas na classe
que o abstrai.
Ex: darPartida(), acelerar(), frear().
class Veiculo {
// atributos
Em PHP:
public function acelerar() {
//algorítimo para acelerar
}
}
$corsa = new Veiculo();
$corsa->acelerar();
Introdução ao PHP orientado a objetos com AJAX
7
<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!
Introdução ao PHP orientado a objetos com AJAX
8
<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 quot;Criando veiculo quot;.$this->nome.quot;nquot;;
}
function __destruct() {
echo quot;Destruindo veiculo quot;.$this->nome.quot;nquot;;
}
}
Introdução ao PHP orientado a objetos com AJAX
9
<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.
Introdução ao PHP orientado a objetos com AJAX
10
<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!
Introdução ao PHP orientado a objetos com AJAX
11
<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
Introdução ao PHP orientado a objetos com AJAX
12
<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.
Introdução ao PHP orientado a objetos com AJAX
13
<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;
}
}
Introdução ao PHP orientado a objetos com AJAX
14
<Otávio Calaça Xavier>
15. Polimorfismo
Um mesmo método pode apresentar várias
formas, de acordo com seu contexto.
Abstrato
Veiculo
acelerar()
Carro Submarino Avião
acelerar() acelerar() acelerar()
Introdução ao PHP orientado a objetos com AJAX
15
<Otávio Calaça Xavier>
16. Interfaces
Classe Avião estende a classe Veiculo
Classe Urubu estende a classe Animal
Veiculo Animal
Carro Submarino 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
<Otávio Calaça Xavier>
17. Interfaces(II)
Define um comportamento para classes de
diferentes escopos.
Interface: Voadores
Veiculo Animal
Carro Submarino 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
<Otávio Calaça Xavier>
18. AJAX
Asynchronous Javascript And XML
Maior interação com o usuário.
Introdução ao PHP orientado a objetos com AJAX
18
<Otávio Calaça Xavier>
19. AJAX
Sem AJAX Com AJAX
● ●
Navegador Navegador
Pag. WEB
Pag. WEB
Servidor da Servidor da
Pag. WEB Aplicação Aplicação
Página
WEB WEB
da WEB
Pag. WEB
Pag. WEB
Pag. WEB
Introdução ao PHP orientado a objetos com AJAX
19
<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.
Introdução ao PHP orientado a objetos com AJAX
20
<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:
xmlHttp = new ActiveXObject(quot;Msxml2.XMLHTTPquot;); ou
xmlHttp = new ActiveXObject(quot;Microsoft.XMLHTTPquot;);
Outros navegadores:
xmlHttp = new XMLHttpRequest();
Introdução ao PHP orientado a objetos com AJAX
21
<Otávio Calaça Xavier>
22. Métodos do XHR
abort();
getAllResponseHeaders() ;
getResponseHeader(quot;headernamequot;);
open(quot;metodoquot;,quot;URLquot;,async,quot;usuarioquot;,“senhaquot;);
send(content);
setRequestHeader(quot;labelquot;,quot;valuequot;);
Introdução ao PHP orientado a objetos com AJAX
22
<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.
Introdução ao PHP orientado a objetos com AJAX
23
<Otávio Calaça Xavier>
24. 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
<Otávio Calaça Xavier>
25. Métodos de Cabeçalho
getResponseHeader(quot;headernamequot;);
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(quot;labelquot;,quot;valuequot;);
Seta um parâmetro do cabeçalho de envio.
Introdução ao PHP orientado a objetos com AJAX
25
<Otávio Calaça Xavier>
26. Propriedades do XHR
onreadystatechange
readyState
responseText
responseXML
status
statusText
Introdução ao PHP orientado a objetos com AJAX
26
<Otávio Calaça Xavier>
27. 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
<Otávio Calaça Xavier>
28. 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
<Otávio Calaça Xavier>
29. 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
<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(quot;Msxml2.XMLHTTPquot;);
}
catch (e)
{
xmlHttp=new
ActiveXObject(quot;Microsoft.XMLHTTPquot;);
}
}
Introdução ao PHP orientado a objetos com AJAX
30
<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(quot;Content-lengthquot;, 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
<Otávio Calaça Xavier>