SlideShare una empresa de Scribd logo
1 de 40
Descargar para leer sin conexión
OOP
PHP Advanced - 15 de Setembro de 2008
      Bruno Pedro <bpedro@tarpipe.com>
PHP Advanced




               Conteúdo
 • Excepções
 • Serialização
 • Three-tier model
 • Projecto
 • Resumo
OOP                   2
PHP Advanced




         Gestão de erros

  • error_log()
  • set_error_handler()
  • trigger_error()
  • debug_backtrace()

OOP                       3
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
OOP                     4
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)

OOP                      5
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
OOP                      6
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
      • ...
OOP                    7
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

OOP                   8
PHP Advanced




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



OOP                                 9
PHP Advanced




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




OOP                     10
PHP Advanced




                      try
  • Tenta executar um pedaço de código
      ligando o tratamento de qualquer excepção
      gerada




OOP                    11
PHP Advanced




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




OOP                     12
PHP Advanced




               Exemplo




OOP               13
PHP Advanced




                        Extensões

                             Exception




       SQLException       EMailException     LogException
      + __construct()     + __construct()   + __construct()
      ~ save()            ~ send()          ~ save()




OOP                             14
PHP Advanced




               Extensões




OOP                15
PHP Advanced




               Extensões




OOP                16
PHP Advanced




        Captura de erros
  • Fazer com que o default error handler possa
      gerar excepções




OOP                     17
PHP Advanced




        Captura de erros
  • Mais tarde, é possível capturar os erros




OOP                    18
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



OOP                    19
PHP Advanced




               Automatismos




OOP                 20
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
OOP                      21
PHP Advanced




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




OOP                    22
PHP Advanced




               serialize()




OOP                 23
PHP Advanced




               unserialize()
 • Converte uma string serializada na
      respectiva variável PHP




OOP                      24
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
OOP                      25
PHP Advanced




Serialização de objectos




OOP            26
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

OOP                      27
PHP Advanced




De-serialização de objectos




OOP            28
PHP Advanced




                 __sleep()
 • É executado antes da serialização
 • Deve devolver um array com todos os
      atributos a serem serializados




OOP                      29
PHP Advanced




               __sleep()




OOP                30
PHP Advanced




               __wakeup()
 • É executado depois da de-serialização
 • Tem acesso a todos os atributos




OOP                   31
PHP Advanced




               __wakeup()




OOP                32
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
 • ...

OOP                   33
PHP Advanced




         Modelo three-tier

  • Separação da aplicação em três camadas:
   • Apresentação
   • Lógica
   • Acesso aos dados

OOP                   34
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
OOP                     35
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
OOP                   36
PHP Advanced




               Discussão

  • Por onde começar?
  • O que se deve definir?
  • Como implementar as funcionalidades?
  • Existe código já feito que ajude?

OOP                  37
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
OOP                   38
PHP Summer School




                    Questões?




OOP em PHP              39
PHP Advanced




         Mais informação
  • O meu blog: http://unfoldingtheweb.com/

  • Manual de PHP: http://www.php.net/
  • Three-tier architecture:
      http://tinyurl.com/threetier


OOP                      40

Más contenido relacionado

La actualidad más candente

Debugging tips and tricks
Debugging tips and tricksDebugging tips and tricks
Debugging tips and tricksTales Andrade
 
Curso Desenvolvimento WEB com PHP - PHP (parte 1)
Curso Desenvolvimento WEB com PHP - PHP (parte 1)Curso Desenvolvimento WEB com PHP - PHP (parte 1)
Curso Desenvolvimento WEB com PHP - PHP (parte 1)Willian Magalhães
 
Programando php com mais segurança
Programando php com mais segurançaProgramando php com mais segurança
Programando php com mais segurançaMichael Douglas
 
IAsyncResult Pattern ou Asynchronous Programming Model (APM)
IAsyncResult Pattern ou Asynchronous Programming Model (APM)IAsyncResult Pattern ou Asynchronous Programming Model (APM)
IAsyncResult Pattern ou Asynchronous Programming Model (APM)Rogério Moraes de Carvalho
 
M5-Desenvolvimento-Paginas-Web
M5-Desenvolvimento-Paginas-WebM5-Desenvolvimento-Paginas-Web
M5-Desenvolvimento-Paginas-Webdiogoa21
 
PHP Day - PHP para iniciantes
PHP Day - PHP para iniciantesPHP Day - PHP para iniciantes
PHP Day - PHP para iniciantesAlmir Mendes
 
Tratamento de exceções java
Tratamento de exceções   javaTratamento de exceções   java
Tratamento de exceções javaAntonio Oliveira
 
Manual-de-php
Manual-de-phpManual-de-php
Manual-de-phpdiogoa21
 
TechEd Brasil 2011: WEB 302 - Presente e futuro da linguagem de programação J...
TechEd Brasil 2011: WEB 302 - Presente e futuro da linguagem de programação J...TechEd Brasil 2011: WEB 302 - Presente e futuro da linguagem de programação J...
TechEd Brasil 2011: WEB 302 - Presente e futuro da linguagem de programação J...Rogério Moraes de Carvalho
 
Segurança em Aplicações Web com PHP
Segurança em Aplicações Web com PHPSegurança em Aplicações Web com PHP
Segurança em Aplicações Web com PHPGedvan Dias
 
Cya grunt.js, hello gulp.js
Cya grunt.js, hello gulp.jsCya grunt.js, hello gulp.js
Cya grunt.js, hello gulp.jsMichael Douglas
 
Introdução à biblioteca OpenCV
Introdução à biblioteca OpenCVIntrodução à biblioteca OpenCV
Introdução à biblioteca OpenCVGuto Kaberdock
 
introdução a visão compuutacional com opencv e python
introdução a visão compuutacional com opencv e pythonintrodução a visão compuutacional com opencv e python
introdução a visão compuutacional com opencv e pythonwhanderley freitas
 
Introdução ao processamento de imagens com OpenCV (cont)
Introdução ao processamento de imagens com OpenCV (cont)Introdução ao processamento de imagens com OpenCV (cont)
Introdução ao processamento de imagens com OpenCV (cont)Cristiano Rafael Steffens
 
Curso de OO com C# - Parte 06 - ADO.NET
Curso de OO com C# - Parte 06 - ADO.NETCurso de OO com C# - Parte 06 - ADO.NET
Curso de OO com C# - Parte 06 - ADO.NETLeonardo Melo Santos
 

La actualidad más candente (20)

Debugging tips and tricks
Debugging tips and tricksDebugging tips and tricks
Debugging tips and tricks
 
Curso Desenvolvimento WEB com PHP - PHP (parte 1)
Curso Desenvolvimento WEB com PHP - PHP (parte 1)Curso Desenvolvimento WEB com PHP - PHP (parte 1)
Curso Desenvolvimento WEB com PHP - PHP (parte 1)
 
Programando php com mais segurança
Programando php com mais segurançaProgramando php com mais segurança
Programando php com mais segurança
 
IAsyncResult Pattern ou Asynchronous Programming Model (APM)
IAsyncResult Pattern ou Asynchronous Programming Model (APM)IAsyncResult Pattern ou Asynchronous Programming Model (APM)
IAsyncResult Pattern ou Asynchronous Programming Model (APM)
 
M5-Desenvolvimento-Paginas-Web
M5-Desenvolvimento-Paginas-WebM5-Desenvolvimento-Paginas-Web
M5-Desenvolvimento-Paginas-Web
 
Php m18
Php m18Php m18
Php m18
 
PHP Day - PHP para iniciantes
PHP Day - PHP para iniciantesPHP Day - PHP para iniciantes
PHP Day - PHP para iniciantes
 
OpenMP
OpenMPOpenMP
OpenMP
 
Tratamento de exceções java
Tratamento de exceções   javaTratamento de exceções   java
Tratamento de exceções java
 
Manual-de-php
Manual-de-phpManual-de-php
Manual-de-php
 
Event-based Asynchronous Pattern (EAP)
Event-based Asynchronous Pattern (EAP)Event-based Asynchronous Pattern (EAP)
Event-based Asynchronous Pattern (EAP)
 
TechEd Brasil 2011: WEB 302 - Presente e futuro da linguagem de programação J...
TechEd Brasil 2011: WEB 302 - Presente e futuro da linguagem de programação J...TechEd Brasil 2011: WEB 302 - Presente e futuro da linguagem de programação J...
TechEd Brasil 2011: WEB 302 - Presente e futuro da linguagem de programação J...
 
Introdução ao PHP
Introdução ao PHPIntrodução ao PHP
Introdução ao PHP
 
Segurança em Aplicações Web com PHP
Segurança em Aplicações Web com PHPSegurança em Aplicações Web com PHP
Segurança em Aplicações Web com PHP
 
Cya grunt.js, hello gulp.js
Cya grunt.js, hello gulp.jsCya grunt.js, hello gulp.js
Cya grunt.js, hello gulp.js
 
Introdução à biblioteca OpenCV
Introdução à biblioteca OpenCVIntrodução à biblioteca OpenCV
Introdução à biblioteca OpenCV
 
PHP-CLI em 7 passos
PHP-CLI em 7 passosPHP-CLI em 7 passos
PHP-CLI em 7 passos
 
introdução a visão compuutacional com opencv e python
introdução a visão compuutacional com opencv e pythonintrodução a visão compuutacional com opencv e python
introdução a visão compuutacional com opencv e python
 
Introdução ao processamento de imagens com OpenCV (cont)
Introdução ao processamento de imagens com OpenCV (cont)Introdução ao processamento de imagens com OpenCV (cont)
Introdução ao processamento de imagens com OpenCV (cont)
 
Curso de OO com C# - Parte 06 - ADO.NET
Curso de OO com C# - Parte 06 - ADO.NETCurso de OO com C# - Parte 06 - ADO.NET
Curso de OO com C# - Parte 06 - ADO.NET
 

Destacado

Sessões (in portuguese)
Sessões (in portuguese)Sessões (in portuguese)
Sessões (in portuguese)Bruno Pedro
 
Web Services (in portuguese)
Web Services (in portuguese)Web Services (in portuguese)
Web Services (in portuguese)Bruno Pedro
 
Web Services (in portuguese)
Web Services (in portuguese)Web Services (in portuguese)
Web Services (in portuguese)Bruno Pedro
 
PotiLivre, uma comunidade de software livre voltada para você!
PotiLivre, uma comunidade de software livre voltada para você!PotiLivre, uma comunidade de software livre voltada para você!
PotiLivre, uma comunidade de software livre voltada para você!Mayron Cachina
 
Segurança (in portuguese)
Segurança (in portuguese)Segurança (in portuguese)
Segurança (in portuguese)Bruno Pedro
 
Orientação a Objetos - Conceitos
Orientação a Objetos - ConceitosOrientação a Objetos - Conceitos
Orientação a Objetos - ConceitosMayron Cachina
 
Autenticação e Autorização (in portuguese)
Autenticação e Autorização (in portuguese)Autenticação e Autorização (in portuguese)
Autenticação e Autorização (in portuguese)Bruno Pedro
 

Destacado (7)

Sessões (in portuguese)
Sessões (in portuguese)Sessões (in portuguese)
Sessões (in portuguese)
 
Web Services (in portuguese)
Web Services (in portuguese)Web Services (in portuguese)
Web Services (in portuguese)
 
Web Services (in portuguese)
Web Services (in portuguese)Web Services (in portuguese)
Web Services (in portuguese)
 
PotiLivre, uma comunidade de software livre voltada para você!
PotiLivre, uma comunidade de software livre voltada para você!PotiLivre, uma comunidade de software livre voltada para você!
PotiLivre, uma comunidade de software livre voltada para você!
 
Segurança (in portuguese)
Segurança (in portuguese)Segurança (in portuguese)
Segurança (in portuguese)
 
Orientação a Objetos - Conceitos
Orientação a Objetos - ConceitosOrientação a Objetos - Conceitos
Orientação a Objetos - Conceitos
 
Autenticação e Autorização (in portuguese)
Autenticação e Autorização (in portuguese)Autenticação e Autorização (in portuguese)
Autenticação e Autorização (in portuguese)
 

Similar a OOP (in portuguese)

PHP - Uma Pequena Introducao
PHP - Uma Pequena IntroducaoPHP - Uma Pequena Introducao
PHP - Uma Pequena Introducaojonatasoliveira
 
PHP-CLI in 7 steps - 7Masters PHP
PHP-CLI in 7 steps - 7Masters PHPPHP-CLI in 7 steps - 7Masters PHP
PHP-CLI in 7 steps - 7Masters PHPiMasters
 
User Interface (in portuguese)
User Interface (in portuguese)User Interface (in portuguese)
User Interface (in portuguese)Bruno Pedro
 
Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2PrinceGuru MS
 
Preparando-se para a prova da Certificação Zend PHP 5.3
Preparando-se para a prova da Certificação Zend PHP 5.3Preparando-se para a prova da Certificação Zend PHP 5.3
Preparando-se para a prova da Certificação Zend PHP 5.3klaussilveira
 
5 Maneiras de melhorar seu código PHP
5 Maneiras de melhorar seu código PHP5 Maneiras de melhorar seu código PHP
5 Maneiras de melhorar seu código PHPAugusto das Neves
 
Palestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAPalestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAThiago Cifani
 
Comandos gerais do PHP
Comandos gerais do PHPComandos gerais do PHP
Comandos gerais do PHPPaulo Dayvson
 
Laravel 5: Entenda o ambiente e a estrutura MVC
 Laravel 5: Entenda o ambiente e a estrutura MVC Laravel 5: Entenda o ambiente e a estrutura MVC
Laravel 5: Entenda o ambiente e a estrutura MVCMichael Douglas
 
Conceitos e técnicas de programação aula 2
Conceitos e técnicas de programação aula 2Conceitos e técnicas de programação aula 2
Conceitos e técnicas de programação aula 2Robson Ferreira
 
Introdução ao PHP - Criação de sites II
Introdução ao PHP - Criação de sites IIIntrodução ao PHP - Criação de sites II
Introdução ao PHP - Criação de sites IIinfo_cimol
 
PW01 - Introdução a programação em PHPv7
PW01 - Introdução a programação em PHPv7PW01 - Introdução a programação em PHPv7
PW01 - Introdução a programação em PHPv7Silvano Oliveira
 
PHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta PerformancePHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta PerformanceFelipe Ribeiro
 
Curso Linguagem de Programação I - PHP Básico
Curso Linguagem de Programação I - PHP BásicoCurso Linguagem de Programação I - PHP Básico
Curso Linguagem de Programação I - PHP BásicoNorton Guimarães
 
Programação Web com PHP 7.x
Programação Web com PHP 7.xProgramação Web com PHP 7.x
Programação Web com PHP 7.xNorton Guimarães
 
Removendo o cheiro ruim do seu código - PHPSC Conf 2011
Removendo o cheiro ruim do seu código - PHPSC Conf 2011Removendo o cheiro ruim do seu código - PHPSC Conf 2011
Removendo o cheiro ruim do seu código - PHPSC Conf 2011Luís Cobucci
 

Similar a OOP (in portuguese) (20)

Mini Curso de PHP
Mini Curso de PHPMini Curso de PHP
Mini Curso de PHP
 
PHP(I-Bim).ppt
PHP(I-Bim).pptPHP(I-Bim).ppt
PHP(I-Bim).ppt
 
PHP - Uma Pequena Introducao
PHP - Uma Pequena IntroducaoPHP - Uma Pequena Introducao
PHP - Uma Pequena Introducao
 
PHP-CLI in 7 steps - 7Masters PHP
PHP-CLI in 7 steps - 7Masters PHPPHP-CLI in 7 steps - 7Masters PHP
PHP-CLI in 7 steps - 7Masters PHP
 
User Interface (in portuguese)
User Interface (in portuguese)User Interface (in portuguese)
User Interface (in portuguese)
 
Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2
 
Preparando-se para a prova da Certificação Zend PHP 5.3
Preparando-se para a prova da Certificação Zend PHP 5.3Preparando-se para a prova da Certificação Zend PHP 5.3
Preparando-se para a prova da Certificação Zend PHP 5.3
 
5 Maneiras de melhorar seu código PHP
5 Maneiras de melhorar seu código PHP5 Maneiras de melhorar seu código PHP
5 Maneiras de melhorar seu código PHP
 
Palestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAPalestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVA
 
Comandos gerais do PHP
Comandos gerais do PHPComandos gerais do PHP
Comandos gerais do PHP
 
Laravel 5: Entenda o ambiente e a estrutura MVC
 Laravel 5: Entenda o ambiente e a estrutura MVC Laravel 5: Entenda o ambiente e a estrutura MVC
Laravel 5: Entenda o ambiente e a estrutura MVC
 
Conceitos e técnicas de programação aula 2
Conceitos e técnicas de programação aula 2Conceitos e técnicas de programação aula 2
Conceitos e técnicas de programação aula 2
 
Introdução ao PHP - Criação de sites II
Introdução ao PHP - Criação de sites IIIntrodução ao PHP - Criação de sites II
Introdução ao PHP - Criação de sites II
 
PW01 - Introdução a programação em PHPv7
PW01 - Introdução a programação em PHPv7PW01 - Introdução a programação em PHPv7
PW01 - Introdução a programação em PHPv7
 
Jsummit 2014
Jsummit 2014Jsummit 2014
Jsummit 2014
 
PHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta PerformancePHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta Performance
 
Curso Linguagem de Programação I - PHP Básico
Curso Linguagem de Programação I - PHP BásicoCurso Linguagem de Programação I - PHP Básico
Curso Linguagem de Programação I - PHP Básico
 
Programação Web com PHP 7.x
Programação Web com PHP 7.xProgramação Web com PHP 7.x
Programação Web com PHP 7.x
 
Removendo o cheiro ruim do seu código - PHPSC Conf 2011
Removendo o cheiro ruim do seu código - PHPSC Conf 2011Removendo o cheiro ruim do seu código - PHPSC Conf 2011
Removendo o cheiro ruim do seu código - PHPSC Conf 2011
 
Ruby On Rails Regis
Ruby On Rails RegisRuby On Rails Regis
Ruby On Rails Regis
 

Más de Bruno Pedro

What are Web APIs
What are Web APIsWhat are Web APIs
What are Web APIsBruno Pedro
 
Growing your business with an API
Growing your business with an APIGrowing your business with an API
Growing your business with an APIBruno Pedro
 
Product growth with an API
Product growth with an APIProduct growth with an API
Product growth with an APIBruno Pedro
 
How to grow your business with an API
How to grow your business with an APIHow to grow your business with an API
How to grow your business with an APIBruno Pedro
 
APIs Love to Chat
APIs Love to ChatAPIs Love to Chat
APIs Love to ChatBruno Pedro
 
How to Automate API Testing
How to Automate API TestingHow to Automate API Testing
How to Automate API TestingBruno Pedro
 
Asynchronous Microservices in nodejs
Asynchronous Microservices in nodejsAsynchronous Microservices in nodejs
Asynchronous Microservices in nodejsBruno Pedro
 
How to Automate API Discovery
How to Automate API DiscoveryHow to Automate API Discovery
How to Automate API DiscoveryBruno Pedro
 
Api Design & The Paris Subway
Api Design & The Paris SubwayApi Design & The Paris Subway
Api Design & The Paris SubwayBruno Pedro
 
The importance of /me
The importance of /meThe importance of /me
The importance of /meBruno Pedro
 
Maintainable consumers
Maintainable consumersMaintainable consumers
Maintainable consumersBruno Pedro
 
API Code Generation
API Code GenerationAPI Code Generation
API Code GenerationBruno Pedro
 
Bridging the Gap Between APIs and Customers
Bridging the Gap Between APIs and CustomersBridging the Gap Between APIs and Customers
Bridging the Gap Between APIs and CustomersBruno Pedro
 
Who's using your API?
Who's using your API?Who's using your API?
Who's using your API?Bruno Pedro
 
Is OAuth Really Secure?
Is OAuth Really Secure?Is OAuth Really Secure?
Is OAuth Really Secure?Bruno Pedro
 
Link extraction and classification
Link extraction and classificationLink extraction and classification
Link extraction and classificationBruno Pedro
 
tarpipe WordPress plugin demo
tarpipe WordPress plugin demotarpipe WordPress plugin demo
tarpipe WordPress plugin demoBruno Pedro
 
Everything OAuth
Everything OAuthEverything OAuth
Everything OAuthBruno Pedro
 

Más de Bruno Pedro (20)

What are Web APIs
What are Web APIsWhat are Web APIs
What are Web APIs
 
Growing your business with an API
Growing your business with an APIGrowing your business with an API
Growing your business with an API
 
Product growth with an API
Product growth with an APIProduct growth with an API
Product growth with an API
 
How to grow your business with an API
How to grow your business with an APIHow to grow your business with an API
How to grow your business with an API
 
APIs Love to Chat
APIs Love to ChatAPIs Love to Chat
APIs Love to Chat
 
How to Automate API Testing
How to Automate API TestingHow to Automate API Testing
How to Automate API Testing
 
Asynchronous Microservices in nodejs
Asynchronous Microservices in nodejsAsynchronous Microservices in nodejs
Asynchronous Microservices in nodejs
 
How to Automate API Discovery
How to Automate API DiscoveryHow to Automate API Discovery
How to Automate API Discovery
 
Api Design & The Paris Subway
Api Design & The Paris SubwayApi Design & The Paris Subway
Api Design & The Paris Subway
 
The importance of /me
The importance of /meThe importance of /me
The importance of /me
 
Maintainable consumers
Maintainable consumersMaintainable consumers
Maintainable consumers
 
API Code Generation
API Code GenerationAPI Code Generation
API Code Generation
 
Bridging the Gap Between APIs and Customers
Bridging the Gap Between APIs and CustomersBridging the Gap Between APIs and Customers
Bridging the Gap Between APIs and Customers
 
Who's using your API?
Who's using your API?Who's using your API?
Who's using your API?
 
node-fs
node-fsnode-fs
node-fs
 
Is OAuth Really Secure?
Is OAuth Really Secure?Is OAuth Really Secure?
Is OAuth Really Secure?
 
Link extraction and classification
Link extraction and classificationLink extraction and classification
Link extraction and classification
 
tarpipe WordPress plugin demo
tarpipe WordPress plugin demotarpipe WordPress plugin demo
tarpipe WordPress plugin demo
 
OAuth checklist
OAuth checklistOAuth checklist
OAuth checklist
 
Everything OAuth
Everything OAuthEverything OAuth
Everything OAuth
 

OOP (in portuguese)

  • 1. OOP PHP Advanced - 15 de Setembro de 2008 Bruno Pedro <bpedro@tarpipe.com>
  • 2. PHP Advanced Conteúdo • Excepções • Serialização • Three-tier model • Projecto • Resumo OOP 2
  • 3. PHP Advanced Gestão de erros • error_log() • set_error_handler() • trigger_error() • debug_backtrace() OOP 3
  • 4. 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 OOP 4
  • 5. 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) OOP 5
  • 6. 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 OOP 6
  • 7. 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 • ... OOP 7
  • 8. 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 OOP 8
  • 9. PHP Advanced Exceptions Exception # message : string # code : int = 0 # file : string # line : int + __construct(message : string = null, code : int = 0) ~ getMessage() : string ~ getCode() : int ~ getFile() : string ~ getLine() : int ~ getTrace() : array ~ getTraceAsString() : string + __toString() : string OOP 9
  • 10. PHP Advanced throw • Gera uma excepção que poderá ser interpretada mais tarde OOP 10
  • 11. PHP Advanced try • Tenta executar um pedaço de código ligando o tratamento de qualquer excepção gerada OOP 11
  • 12. PHP Advanced catch() • Captura uma excepção gerada anteriormente e executa código arbitrário OOP 12
  • 13. PHP Advanced Exemplo OOP 13
  • 14. PHP Advanced Extensões Exception SQLException EMailException LogException + __construct() + __construct() + __construct() ~ save() ~ send() ~ save() OOP 14
  • 15. PHP Advanced Extensões OOP 15
  • 16. PHP Advanced Extensões OOP 16
  • 17. PHP Advanced Captura de erros • Fazer com que o default error handler possa gerar excepções OOP 17
  • 18. PHP Advanced Captura de erros • Mais tarde, é possível capturar os erros OOP 18
  • 19. 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 OOP 19
  • 20. PHP Advanced Automatismos OOP 20
  • 21. 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 OOP 21
  • 22. PHP Advanced serialize() • Devolve uma representação serializada de um determinado valor OOP 22
  • 23. PHP Advanced serialize() OOP 23
  • 24. PHP Advanced unserialize() • Converte uma string serializada na respectiva variável PHP OOP 24
  • 25. 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 OOP 25
  • 27. 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 OOP 27
  • 29. PHP Advanced __sleep() • É executado antes da serialização • Deve devolver um array com todos os atributos a serem serializados OOP 29
  • 30. PHP Advanced __sleep() OOP 30
  • 31. PHP Advanced __wakeup() • É executado depois da de-serialização • Tem acesso a todos os atributos OOP 31
  • 32. PHP Advanced __wakeup() OOP 32
  • 33. 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 • ... OOP 33
  • 34. PHP Advanced Modelo three-tier • Separação da aplicação em três camadas: • Apresentação • Lógica • Acesso aos dados OOP 34
  • 35. 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 OOP 35
  • 36. 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 OOP 36
  • 37. PHP Advanced Discussão • Por onde começar? • O que se deve definir? • Como implementar as funcionalidades? • Existe código já feito que ajude? OOP 37
  • 38. 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 OOP 38
  • 39. PHP Summer School Questões? OOP em PHP 39
  • 40. PHP Advanced Mais informação • O meu blog: http://unfoldingtheweb.com/ • Manual de PHP: http://www.php.net/ • Three-tier architecture: http://tinyurl.com/threetier OOP 40