OOP (in portuguese)

Post on 08-Dec-2014

1.913 views 5 download

description

 

Transcript of OOP (in portuguese)

OOP

Bruno Pedro <bpedro@tarpipe.com>

PHP Advanced - 15 de Setembro de 2008

OOP

PHP Advanced

Conteúdo

• Excepções

• Serialização

• Three-tier model

• Projecto

• Resumo

2

OOP

PHP Advanced

Gestão de erros

• error_log()

• set_error_handler()

• trigger_error()

• debug_backtrace()

3

OOP

PHP Advanced

error_log()

• Captura um erro e envia os seus detalhes para um destino específico:

• logs do servidor Web

• Endereço de e-mail

• Debugger remoto

• Um ficheiro arbitrário

4

OOP

PHP Advanced

set_error_handler()

• Define qual a função que vai gerir todos os erros:

• Útil quando se pretende executar código antes de um erro ser apresentado

• Errors críticos e de interpretação não são capturados (E_PARSE, E_ERROR, E_CORE)

5

OOP

PHP Advanced

trigger_error()

• Gera um erro de aplicação e passa o controlo à gestão de erros:

• É possível definir uma mensagem de erro específica

• Só é possível gerar erros do tipo E_USER

6

OOP

PHP Advanced

debug_backtrace()• Gera um array associativo com informação

de backtrace:

• Nomes de funções

• Números de linhas

• Nomes de ficheiros

• Nomes de classes

• ...

7

OOP

PHP Advanced

Exceptions

• Geração e gestão de erros simplificada

• Filosofia orientada a objectos

• Extensível

• Simples de implementar

• Afasta a gestão de erros da lógica da aplicação

8

OOP

PHP Advanced

Exceptions

9

+ __construct(message : string = null, code : int = 0)~ getMessage() : string~ getCode() : int~ getFile() : string~ getLine() : int~ getTrace() : array~ getTraceAsString() : string+ __toString() : string

# message : string# code : int = 0# file : string# line : int

Exception

OOP

PHP Advanced

throw

• Gera uma excepção que poderá ser interpretada mais tarde

10

OOP

PHP Advanced

try• Tenta executar um pedaço de código

ligando o tratamento de qualquer excepção gerada

11

OOP

PHP Advanced

catch()

• Captura uma excepção gerada anteriormente e executa código arbitrário

12

OOP

PHP Advanced

Exemplo

13

OOP

PHP Advanced

Extensões

14

Exception

+ __construct()~ save()

SQLException+ __construct()~ send()

EMailException+ __construct()~ save()

LogException

OOP

PHP Advanced

Extensões

15

OOP

PHP Advanced

Extensões

16

OOP

PHP Advanced

Captura de erros• Fazer com que o default error handler possa

gerar excepções

17

OOP

PHP Advanced

Captura de erros

• Mais tarde, é possível capturar os erros

18

OOP

PHP Advanced

Automatismos

• É possível definir um default exception handler que será chamado sempre que for gerada uma excepção

• A execução será terminada sempre que uma excepção for gerada fora de um bloco try

19

OOP

PHP Advanced

Automatismos

20

OOP

PHP Advanced

Serialização

• Representação storable de um valor

• literais, arrays e até mesmo objectos

• os valores serializados são na verdade strings

• Permite gravar o conteúdo de uma variável para posterior utilização

• Bastante usado em gestão de sessões

21

OOP

PHP Advanced

serialize()• Devolve uma representação serializada de

um determinado valor

22

OOP

PHP Advanced

serialize()

23

OOP

PHP Advanced

unserialize()• Converte uma string serializada na

respectiva variável PHP

24

OOP

PHP Advanced

Serialização de objectos

• Serializa todos os atributos

• Não grava ligações a bases de dados nem ficheiros abertos

• Não executa tarefas de limpeza de objectos

• Não executa o destructor do objecto

25

OOP

PHP Advanced

Serialização de objectos

26

OOP

PHP Advanced

De-serialização de objectos

• Cria um objecto PHP com todos os atributos que foram serializados

• Não executa o constructor do objecto

27

OOP

PHP Advanced

De-serialização de objectos

28

OOP

PHP Advanced

__sleep()• É executado antes da serialização

• Deve devolver um array com todos os atributos a serem serializados

29

OOP

PHP Advanced

__sleep()

30

OOP

PHP Advanced

__wakeup()• É executado depois da de-serialização

• Tem acesso a todos os atributos

31

OOP

PHP Advanced

__wakeup()

32

OOP

PHP Advanced

Aplicações

• Utilização de um objecto como parâmetro de um Web Service

• Recepção de um objecto como parâmetro POST

• ...

33

OOP

PHP Advanced

Modelo three-tier

• Separação da aplicação em três camadas:

• Apresentação

• Lógica

• Acesso aos dados

34

OOP

PHP Advanced

Modelo three-tier

• Vantagens:

• Modularização da aplicação

• Fácil actualização de qualquer uma das camadas

• Divisão do trabalho por equipas diferentes

• Divisão de responsabilidades

35

OOP

PHP Advanced

Projecto

• Objectivo

• Criação de um leitor RSS Web

• Aplicação multi-utilizador

• Permite a gestão dos feeds RSS

• Grava estado dos itens já lidos

36

OOP

PHP Advanced

Discussão

• Por onde começar?

• O que se deve definir?

• Como implementar as funcionalidades?

• Existe código já feito que ajude?

37

OOP

PHP Advanced

Resumo

• Gestão de erros

• Excepções e gestão automática de erros

• Serialização e de-serialização

• Modelo three-tier

• Discussão sobre o projecto

38

OOP em PHP

PHP Summer School

Questões?

39

OOP

PHP Advanced

Mais informação

40

• O meu blog: http://unfoldingtheweb.com/

• Manual de PHP: http://www.php.net/

• Three-tier architecture:

http://tinyurl.com/threetier