oop (in portuguese)

40
OOP Bruno Pedro <[email protected] > PHP Advanced - 15 de Setembro de 2008

Upload: bruno-pedro

Post on 08-Dec-2014

1.913 views

Category:

Technology


5 download

DESCRIPTION

 

TRANSCRIPT

Page 1: OOP (in portuguese)

OOP

Bruno Pedro <[email protected]>

PHP Advanced - 15 de Setembro de 2008

Page 2: OOP (in portuguese)

OOP

PHP Advanced

Conteúdo

• Excepções

• Serialização

• Three-tier model

• Projecto

• Resumo

2

Page 3: OOP (in portuguese)

OOP

PHP Advanced

Gestão de erros

• error_log()

• set_error_handler()

• trigger_error()

• debug_backtrace()

3

Page 4: OOP (in portuguese)

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

Page 5: OOP (in portuguese)

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

Page 6: OOP (in portuguese)

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

Page 7: OOP (in portuguese)

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

Page 8: OOP (in portuguese)

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

Page 9: OOP (in portuguese)

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

Page 10: OOP (in portuguese)

OOP

PHP Advanced

throw

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

10

Page 11: OOP (in portuguese)

OOP

PHP Advanced

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

ligando o tratamento de qualquer excepção gerada

11

Page 12: OOP (in portuguese)

OOP

PHP Advanced

catch()

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

12

Page 13: OOP (in portuguese)

OOP

PHP Advanced

Exemplo

13

Page 14: OOP (in portuguese)

OOP

PHP Advanced

Extensões

14

Exception

+ __construct()~ save()

SQLException+ __construct()~ send()

EMailException+ __construct()~ save()

LogException

Page 15: OOP (in portuguese)

OOP

PHP Advanced

Extensões

15

Page 16: OOP (in portuguese)

OOP

PHP Advanced

Extensões

16

Page 17: OOP (in portuguese)

OOP

PHP Advanced

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

gerar excepções

17

Page 18: OOP (in portuguese)

OOP

PHP Advanced

Captura de erros

• Mais tarde, é possível capturar os erros

18

Page 19: OOP (in portuguese)

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

Page 20: OOP (in portuguese)

OOP

PHP Advanced

Automatismos

20

Page 21: OOP (in portuguese)

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

Page 22: OOP (in portuguese)

OOP

PHP Advanced

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

um determinado valor

22

Page 23: OOP (in portuguese)

OOP

PHP Advanced

serialize()

23

Page 24: OOP (in portuguese)

OOP

PHP Advanced

unserialize()• Converte uma string serializada na

respectiva variável PHP

24

Page 25: OOP (in portuguese)

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

Page 26: OOP (in portuguese)

OOP

PHP Advanced

Serialização de objectos

26

Page 27: OOP (in portuguese)

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

Page 28: OOP (in portuguese)

OOP

PHP Advanced

De-serialização de objectos

28

Page 29: OOP (in portuguese)

OOP

PHP Advanced

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

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

29

Page 30: OOP (in portuguese)

OOP

PHP Advanced

__sleep()

30

Page 31: OOP (in portuguese)

OOP

PHP Advanced

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

• Tem acesso a todos os atributos

31

Page 32: OOP (in portuguese)

OOP

PHP Advanced

__wakeup()

32

Page 33: OOP (in portuguese)

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

Page 34: OOP (in portuguese)

OOP

PHP Advanced

Modelo three-tier

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

• Apresentação

• Lógica

• Acesso aos dados

34

Page 35: OOP (in portuguese)

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

Page 36: OOP (in portuguese)

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

Page 37: OOP (in portuguese)

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

Page 38: OOP (in portuguese)

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

Page 39: OOP (in portuguese)

OOP em PHP

PHP Summer School

Questões?

39

Page 40: OOP (in portuguese)

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