oop (in portuguese)
DESCRIPTION
TRANSCRIPT
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