oop (in portuguese)
DESCRIPTION
TRANSCRIPT
![Page 2: OOP (in portuguese)](https://reader033.vdocuments.site/reader033/viewer/2022052504/5484dc02b4af9fad488b4d0e/html5/thumbnails/2.jpg)
OOP
PHP Advanced
Conteúdo
• Excepções
• Serialização
• Three-tier model
• Projecto
• Resumo
2
![Page 3: OOP (in portuguese)](https://reader033.vdocuments.site/reader033/viewer/2022052504/5484dc02b4af9fad488b4d0e/html5/thumbnails/3.jpg)
OOP
PHP Advanced
Gestão de erros
• error_log()
• set_error_handler()
• trigger_error()
• debug_backtrace()
3
![Page 4: OOP (in portuguese)](https://reader033.vdocuments.site/reader033/viewer/2022052504/5484dc02b4af9fad488b4d0e/html5/thumbnails/4.jpg)
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)](https://reader033.vdocuments.site/reader033/viewer/2022052504/5484dc02b4af9fad488b4d0e/html5/thumbnails/5.jpg)
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)](https://reader033.vdocuments.site/reader033/viewer/2022052504/5484dc02b4af9fad488b4d0e/html5/thumbnails/6.jpg)
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)](https://reader033.vdocuments.site/reader033/viewer/2022052504/5484dc02b4af9fad488b4d0e/html5/thumbnails/7.jpg)
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)](https://reader033.vdocuments.site/reader033/viewer/2022052504/5484dc02b4af9fad488b4d0e/html5/thumbnails/8.jpg)
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)](https://reader033.vdocuments.site/reader033/viewer/2022052504/5484dc02b4af9fad488b4d0e/html5/thumbnails/9.jpg)
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)](https://reader033.vdocuments.site/reader033/viewer/2022052504/5484dc02b4af9fad488b4d0e/html5/thumbnails/10.jpg)
OOP
PHP Advanced
throw
• Gera uma excepção que poderá ser interpretada mais tarde
10
![Page 11: OOP (in portuguese)](https://reader033.vdocuments.site/reader033/viewer/2022052504/5484dc02b4af9fad488b4d0e/html5/thumbnails/11.jpg)
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)](https://reader033.vdocuments.site/reader033/viewer/2022052504/5484dc02b4af9fad488b4d0e/html5/thumbnails/12.jpg)
OOP
PHP Advanced
catch()
• Captura uma excepção gerada anteriormente e executa código arbitrário
12
![Page 13: OOP (in portuguese)](https://reader033.vdocuments.site/reader033/viewer/2022052504/5484dc02b4af9fad488b4d0e/html5/thumbnails/13.jpg)
OOP
PHP Advanced
Exemplo
13
![Page 14: OOP (in portuguese)](https://reader033.vdocuments.site/reader033/viewer/2022052504/5484dc02b4af9fad488b4d0e/html5/thumbnails/14.jpg)
OOP
PHP Advanced
Extensões
14
Exception
+ __construct()~ save()
SQLException+ __construct()~ send()
EMailException+ __construct()~ save()
LogException
![Page 15: OOP (in portuguese)](https://reader033.vdocuments.site/reader033/viewer/2022052504/5484dc02b4af9fad488b4d0e/html5/thumbnails/15.jpg)
OOP
PHP Advanced
Extensões
15
![Page 16: OOP (in portuguese)](https://reader033.vdocuments.site/reader033/viewer/2022052504/5484dc02b4af9fad488b4d0e/html5/thumbnails/16.jpg)
OOP
PHP Advanced
Extensões
16
![Page 17: OOP (in portuguese)](https://reader033.vdocuments.site/reader033/viewer/2022052504/5484dc02b4af9fad488b4d0e/html5/thumbnails/17.jpg)
OOP
PHP Advanced
Captura de erros• Fazer com que o default error handler possa
gerar excepções
17
![Page 18: OOP (in portuguese)](https://reader033.vdocuments.site/reader033/viewer/2022052504/5484dc02b4af9fad488b4d0e/html5/thumbnails/18.jpg)
OOP
PHP Advanced
Captura de erros
• Mais tarde, é possível capturar os erros
18
![Page 19: OOP (in portuguese)](https://reader033.vdocuments.site/reader033/viewer/2022052504/5484dc02b4af9fad488b4d0e/html5/thumbnails/19.jpg)
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)](https://reader033.vdocuments.site/reader033/viewer/2022052504/5484dc02b4af9fad488b4d0e/html5/thumbnails/20.jpg)
OOP
PHP Advanced
Automatismos
20
![Page 21: OOP (in portuguese)](https://reader033.vdocuments.site/reader033/viewer/2022052504/5484dc02b4af9fad488b4d0e/html5/thumbnails/21.jpg)
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)](https://reader033.vdocuments.site/reader033/viewer/2022052504/5484dc02b4af9fad488b4d0e/html5/thumbnails/22.jpg)
OOP
PHP Advanced
serialize()• Devolve uma representação serializada de
um determinado valor
22
![Page 23: OOP (in portuguese)](https://reader033.vdocuments.site/reader033/viewer/2022052504/5484dc02b4af9fad488b4d0e/html5/thumbnails/23.jpg)
OOP
PHP Advanced
serialize()
23
![Page 24: OOP (in portuguese)](https://reader033.vdocuments.site/reader033/viewer/2022052504/5484dc02b4af9fad488b4d0e/html5/thumbnails/24.jpg)
OOP
PHP Advanced
unserialize()• Converte uma string serializada na
respectiva variável PHP
24
![Page 25: OOP (in portuguese)](https://reader033.vdocuments.site/reader033/viewer/2022052504/5484dc02b4af9fad488b4d0e/html5/thumbnails/25.jpg)
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)](https://reader033.vdocuments.site/reader033/viewer/2022052504/5484dc02b4af9fad488b4d0e/html5/thumbnails/26.jpg)
OOP
PHP Advanced
Serialização de objectos
26
![Page 27: OOP (in portuguese)](https://reader033.vdocuments.site/reader033/viewer/2022052504/5484dc02b4af9fad488b4d0e/html5/thumbnails/27.jpg)
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)](https://reader033.vdocuments.site/reader033/viewer/2022052504/5484dc02b4af9fad488b4d0e/html5/thumbnails/28.jpg)
OOP
PHP Advanced
De-serialização de objectos
28
![Page 29: OOP (in portuguese)](https://reader033.vdocuments.site/reader033/viewer/2022052504/5484dc02b4af9fad488b4d0e/html5/thumbnails/29.jpg)
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)](https://reader033.vdocuments.site/reader033/viewer/2022052504/5484dc02b4af9fad488b4d0e/html5/thumbnails/30.jpg)
OOP
PHP Advanced
__sleep()
30
![Page 31: OOP (in portuguese)](https://reader033.vdocuments.site/reader033/viewer/2022052504/5484dc02b4af9fad488b4d0e/html5/thumbnails/31.jpg)
OOP
PHP Advanced
__wakeup()• É executado depois da de-serialização
• Tem acesso a todos os atributos
31
![Page 32: OOP (in portuguese)](https://reader033.vdocuments.site/reader033/viewer/2022052504/5484dc02b4af9fad488b4d0e/html5/thumbnails/32.jpg)
OOP
PHP Advanced
__wakeup()
32
![Page 33: OOP (in portuguese)](https://reader033.vdocuments.site/reader033/viewer/2022052504/5484dc02b4af9fad488b4d0e/html5/thumbnails/33.jpg)
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)](https://reader033.vdocuments.site/reader033/viewer/2022052504/5484dc02b4af9fad488b4d0e/html5/thumbnails/34.jpg)
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)](https://reader033.vdocuments.site/reader033/viewer/2022052504/5484dc02b4af9fad488b4d0e/html5/thumbnails/35.jpg)
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)](https://reader033.vdocuments.site/reader033/viewer/2022052504/5484dc02b4af9fad488b4d0e/html5/thumbnails/36.jpg)
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)](https://reader033.vdocuments.site/reader033/viewer/2022052504/5484dc02b4af9fad488b4d0e/html5/thumbnails/37.jpg)
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)](https://reader033.vdocuments.site/reader033/viewer/2022052504/5484dc02b4af9fad488b4d0e/html5/thumbnails/38.jpg)
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)](https://reader033.vdocuments.site/reader033/viewer/2022052504/5484dc02b4af9fad488b4d0e/html5/thumbnails/39.jpg)
OOP em PHP
PHP Summer School
Questões?
39
![Page 40: OOP (in portuguese)](https://reader033.vdocuments.site/reader033/viewer/2022052504/5484dc02b4af9fad488b4d0e/html5/thumbnails/40.jpg)
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