SlideShare a Scribd company logo
1 of 63
Download to read offline
Alexandre Gomes Gaigalas
http://about.me/alganet




5 de Novembro             PHP'n Rio 2011   1
Hoje você vai ver...

 ●
     Como são alguns dos paradigmas de
     programação.

 ●
     PHP funcionando em múltiplos paradigmas.

 ●
     Recursos MUITO FODA da linguagem.



5 de Novembro          PHP'n Rio 2011           2
PHP Maroto




5 de Novembro   PHP'n Rio 2011   3
PHP Imperativo, Procedural




5 de Novembro   PHP'n Rio 2011   4
Ordens para o
                interpretador




PHP Imperativo, Procedural




5 de Novembro             PHP'n Rio 2011   5
Ordens para o
                interpretador




PHP Imperativo, Procedural
                                           Reuso de
                                           subrotinas




5 de Novembro             PHP'n Rio 2011                6
PHP Orientado a Objetos




5 de Novembro   PHP'n Rio 2011   7
PHP Orientado a Objetos

                Agrupamento de
                responsabilidades




5 de Novembro   PHP'n Rio 2011      8
PHP Reflexivo




5 de Novembro   PHP'n Rio 2011   9
PHP Reflexivo

                 Sabe sobre si mesmo
                em tempo de execução




5 de Novembro           PHP'n Rio 2011   10
É daqui que vem
                a mágica do PHP!


PHP Reflexivo

                 Sabe sobre si mesmo
                em tempo de execução




5 de Novembro           PHP'n Rio 2011   11
PHP Funcional




5 de Novembro   PHP'n Rio 2011   12
PHP Funcional
                Funções como recurso
                  de primeira-classe




5 de Novembro             PHP'n Rio 2011   13
Closures!


PHP Funcional
                Funções como recurso
                  de primeira-classe




5 de Novembro             PHP'n Rio 2011   14
PHP Multi-Paradigma




5 de Novembro   PHP'n Rio 2011   15
Pelo menos 4 paradigmas!


PHP Multi-Paradigma




5 de Novembro      PHP'n Rio 2011          16
Pelo menos 4 paradigmas!


PHP Multi-Paradigma
                Por que só focar em OOP? :(




5 de Novembro                        PHP'n Rio 2011         17
Assembly
                (apenas pra curiosidade da galera)




5 de Novembro               PHP'n Rio 2011           18
A maioria dos programadores
   nunca viu Assembly code na vida.




5 de Novembro   PHP'n Rio 2011        19
A maioria dos programadores
   nunca viu Assembly code na vida.
                Por mais que insistam que tenham visto, não acredite!




5 de Novembro                        PHP'n Rio 2011                     20
Assembly
                (apenas pra curiosidade da galera)

 ●
     Assembler == Montador
 ●
     Assembly == Montagem
 ●
     Vários Assemblers!
     ●
         AS86
     ●
         MASM
     ●
         GAS
     ●
         etc
 ●
     Depende da arquitetura do processador

5 de Novembro               PHP'n Rio 2011           21
Procedural / Imperativo

 ●
     Chamadas de sub-rotinas

 ●
     Estruturas de controle

 ●
     Variáveis com estado




5 de Novembro            PHP'n Rio 2011   22
Procedural / Imperativo

 ●
     Chamadas de sub-rotinas
                        mysql_connect(), mysql_last_insert_id(), etc.

 ●
     Estruturas de controle
                            If, else, for, while, switch, foreach, et..

 ●
     Variáveis com estado
                                          $oi = “Tudo bem”;




5 de Novembro            PHP'n Rio 2011                                   23
Procedural / Imperativo




5 de Novembro            PHP'n Rio 2011   24
Procedural / Imperativo / OO




5 de Novembro       PHP'n Rio 2011      25
OOP não substitui outros
                     paradigmas.




5 de Novembro            PHP'n Rio 2011    26
OOP complementa outros
                  paradigmas.




5 de Novembro        PHP'n Rio 2011   27
Smalltalk?




5 de Novembro     PHP'n Rio 2011   28
Smalltalk?
                    O resultado da comparação
                       é um objeto booleano




5 de Novembro     PHP'n Rio 2011                29
Smalltalk?
                    O resultado da comparação
                       é um objeto booleano



                    IfTrue e ifFalse
                      são métodos




5 de Novembro     PHP'n Rio 2011                30
Smalltalk?
                                        O resultado da comparação
                                           é um objeto booleano



                                        IfTrue e ifFalse
                                          são métodos
                  Mas a condição
                ainda é imperativa!




5 de Novembro                         PHP'n Rio 2011                31
OOP pura é impraticável.




5 de Novembro            PHP'n Rio 2011    32
OOP pura é impraticável.
         (e não existe definição formal de “oop pura”)




5 de Novembro              PHP'n Rio 2011                33
Orientação a Objetos

 ●
     Agrupamento de sub-rotinas
                            PDO->query(), PDO->lastInsertId()

 ●
     Organização de responsabilidades
                                 PDO, DateTime, SimpleXML
 ●
     Abstração
                         ZendDbAdapterPdoMySql extends ...




5 de Novembro          PHP'n Rio 2011                            34
Reflexão
                                  Função nativa




5 de Novembro    PHP'n Rio 2011                   35
Reflexão



                                    Função do usuário




                Chamada em tempo de execução
                    para qualquer função




5 de Novembro      PHP'n Rio 2011                       36
Reflexão




5 de Novembro    PHP'n Rio 2011   37
Reflexão




5 de Novembro    PHP'n Rio 2011   38
Reflexão

 ●
     ReflectionClass
 ●
     ReflectionMethod
 ●
     ReflectionParameter
 ●
     ReflectionFunction
 ●
     ReflectionProperty


     http://php.net/reflection (tem mais aqui!)

5 de Novembro           PHP'n Rio 2011            39
Reflexão – Quem, como?
 ●
     Doctrine ORM
     ●
         Conhecer as entidades e criar os proxies
     ●
         Tornar atributos privados acessíveis
 ●
     Zend DI
     ●
         Saber quais as dependências entre as classes
 ●
     Zend Server Reflection
     ●
         Mapear métodos para serviços
 ●
     Muita Gente =)
     ●
         Chamadas dinâmicas para construtores

5 de Novembro                PHP'n Rio 2011             40
Um mundo sem mágica =/




5 de Novembro           PHP'n Rio 2011   41
Mágica!




5 de Novembro    PHP'n Rio 2011   42
MongoDB sem mágica




5 de Novembro          PHP'n Rio 2011   43
MongoDB com mágica =D




5 de Novembro           PHP'n Rio 2011   44
Mágica no PHP

●   __get          - Obter propriedades
●   __set          - Definir propriedades
●   __isset        - Checar existência de propriedades
●   __unset        - Remover propriedades
●   __call         - Chamar métodos
●   __callStatic   - Chamar métodos estáticos
●   __invoke       - Chamar a classe como uma função
●   __toString     - Converter a classe para string


    http://php.net/oop5.magic (tem mais aqui!)
5 de Novembro               PHP'n Rio 2011               45
Mágica no PHP

 ●
     O problema não está na mágica, está no que
     você coloca dentro dela.

 ●
     Forneça sempre uma versão não-mágica.

 ●
     Documente sua mágica.



5 de Novembro          PHP'n Rio 2011             46
Funcional




5 de Novembro     PHP'n Rio 2011   47
Funcional




5 de Novembro     PHP'n Rio 2011   48
Funcional




5 de Novembro     PHP'n Rio 2011   49
Funcional




5 de Novembro     PHP'n Rio 2011   50
Funcional




5 de Novembro     PHP'n Rio 2011   51
Funcional




5 de Novembro     PHP'n Rio 2011   52
Funcional




5 de Novembro     PHP'n Rio 2011   53
Funcional




5 de Novembro     PHP'n Rio 2011   54
Imperativo




5 de Novembro   PHP'n Rio 2011                55
OOP
                                 (só estrutura!)




5 de Novembro   PHP'n Rio 2011                     56
Bônus!




5 de Novembro   PHP'n Rio 2011   57
Bônus!




5 de Novembro   PHP'n Rio 2011   58
Bônus!




5 de Novembro   PHP'n Rio 2011   59
PHP: The Good Parts
                 (na humilde opinião de @alganet)
●   Arrays http://php.net/book.array
●   Streams http://php.net/streams
    ●   http, sockets, arquivos, buffers
●   Batteries Included
    ●   PDO, SimpleXML, json_*, SOAPClient/Server, MongoDB, mail()
    ●   Simples de criar extensões
●   Excelente retrocompatibilidade
●   O menor Hello World do mundo
●   A melhor documentação online
●   Excelente comunidade no mundo inteiro


5 de Novembro                     PHP'n Rio 2011                     60
Hoje você viu...

 ●
     Como são alguns dos paradigmas de
     programação.

 ●
     PHP funcionando em múltiplos paradigmas.

 ●
     Recursos MUITO FODA da linguagem.



5 de Novembro         PHP'n Rio 2011            61
Perguntas?




5 de Novembro   PHP'n Rio 2011   62
Obrigado!




5 de Novembro   PHP'n Rio 2011   63

More Related Content

What's hot

Comandos gerais do PHP
Comandos gerais do PHPComandos gerais do PHP
Comandos gerais do PHPPaulo Dayvson
 
PHP para aplicações Web de grande porte
PHP para aplicações Web  de grande portePHP para aplicações Web  de grande porte
PHP para aplicações Web de grande porteFelipe Ribeiro
 
Aula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHPAula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHPDaniel Brandão
 
TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...
TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...
TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...Rogério Moraes de Carvalho
 
Curso de PHP Básico ao Avançado
Curso de PHP Básico ao AvançadoCurso de PHP Básico ao Avançado
Curso de PHP Básico ao AvançadoLuiz Junior
 

What's hot (9)

Comandos gerais do PHP
Comandos gerais do PHPComandos gerais do PHP
Comandos gerais do PHP
 
EVOLUÇÃO DA LINGUAGEM DELPHI - ARTIGO
EVOLUÇÃO DA LINGUAGEM DELPHI - ARTIGOEVOLUÇÃO DA LINGUAGEM DELPHI - ARTIGO
EVOLUÇÃO DA LINGUAGEM DELPHI - ARTIGO
 
Linguagem PHP
Linguagem PHPLinguagem PHP
Linguagem PHP
 
PHP para aplicações Web de grande porte
PHP para aplicações Web  de grande portePHP para aplicações Web  de grande porte
PHP para aplicações Web de grande porte
 
PHP 7 - A Maioridade do PHP
PHP 7 - A Maioridade do PHPPHP 7 - A Maioridade do PHP
PHP 7 - A Maioridade do PHP
 
Aula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHPAula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHP
 
PHP Além da universidade
PHP Além da universidadePHP Além da universidade
PHP Além da universidade
 
TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...
TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...
TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...
 
Curso de PHP Básico ao Avançado
Curso de PHP Básico ao AvançadoCurso de PHP Básico ao Avançado
Curso de PHP Básico ao Avançado
 

Similar to PHP paradigmas programação multi-funcional reflexivo

TDC2016POA | Trilha PHP - Por que utilizar o Laravel?
TDC2016POA | Trilha PHP - Por que utilizar o Laravel?TDC2016POA | Trilha PHP - Por que utilizar o Laravel?
TDC2016POA | Trilha PHP - Por que utilizar o Laravel?tdc-globalcode
 
Prepare-se para o próximo estágio da evolução PHP
Prepare-se para o próximo estágio da evolução PHPPrepare-se para o próximo estágio da evolução PHP
Prepare-se para o próximo estágio da evolução PHPRaphael Almeida
 
Dicas para sua carreira de Desenvolvedor PHP
Dicas para sua carreira de Desenvolvedor PHPDicas para sua carreira de Desenvolvedor PHP
Dicas para sua carreira de Desenvolvedor PHPDouglas V. Pasqua
 
Oficina Mergulhando no Plone 4
Oficina Mergulhando no Plone 4Oficina Mergulhando no Plone 4
Oficina Mergulhando no Plone 4Tania Andrea
 
Doctrine 2 camada de persistência para php
Doctrine 2   camada de persistência para phpDoctrine 2   camada de persistência para php
Doctrine 2 camada de persistência para phpFabio B. Silva
 
Orientação a Aspectos em PHP
Orientação a Aspectos em PHPOrientação a Aspectos em PHP
Orientação a Aspectos em PHPFlávio Lisboa
 
TDC2016POA | Trilha Python - Python Assíncrono: tudo ao mesmo tempo agora
TDC2016POA | Trilha Python - Python Assíncrono: tudo ao mesmo tempo agoraTDC2016POA | Trilha Python - Python Assíncrono: tudo ao mesmo tempo agora
TDC2016POA | Trilha Python - Python Assíncrono: tudo ao mesmo tempo agoratdc-globalcode
 
Introdução ao Drupal 7
Introdução ao Drupal 7Introdução ao Drupal 7
Introdução ao Drupal 7Gedvan Dias
 
A Evolução do PHP - 4º Dev In Santos
A Evolução do PHP - 4º Dev In SantosA Evolução do PHP - 4º Dev In Santos
A Evolução do PHP - 4º Dev In SantosEvaldo Junior
 
Muito prazer, eu sou PHP
Muito prazer, eu sou PHPMuito prazer, eu sou PHP
Muito prazer, eu sou PHPLuís Cobucci
 
Trilhando o caminho PHP [2.0]
Trilhando o caminho PHP [2.0]Trilhando o caminho PHP [2.0]
Trilhando o caminho PHP [2.0]Rafael Dohms
 
Introdução ao drupal 7
Introdução ao drupal 7Introdução ao drupal 7
Introdução ao drupal 7Sander Fortuna
 
Curso PHP UNIFACS 2014.1 – 1a Aula
Curso PHP UNIFACS 2014.1 – 1a AulaCurso PHP UNIFACS 2014.1 – 1a Aula
Curso PHP UNIFACS 2014.1 – 1a AulaJonata Weber
 

Similar to PHP paradigmas programação multi-funcional reflexivo (20)

Webinar php extreme 5.3
Webinar php extreme 5.3Webinar php extreme 5.3
Webinar php extreme 5.3
 
TDC2016POA | Trilha PHP - Por que utilizar o Laravel?
TDC2016POA | Trilha PHP - Por que utilizar o Laravel?TDC2016POA | Trilha PHP - Por que utilizar o Laravel?
TDC2016POA | Trilha PHP - Por que utilizar o Laravel?
 
Prepare-se para o próximo estágio da evolução PHP
Prepare-se para o próximo estágio da evolução PHPPrepare-se para o próximo estágio da evolução PHP
Prepare-se para o próximo estágio da evolução PHP
 
PHP e banco de dados
PHP e banco de dadosPHP e banco de dados
PHP e banco de dados
 
PHP, Mercado e Certificações
PHP, Mercado e CertificaçõesPHP, Mercado e Certificações
PHP, Mercado e Certificações
 
Dicas para sua carreira de Desenvolvedor PHP
Dicas para sua carreira de Desenvolvedor PHPDicas para sua carreira de Desenvolvedor PHP
Dicas para sua carreira de Desenvolvedor PHP
 
Oficina Mergulhando no Plone 4
Oficina Mergulhando no Plone 4Oficina Mergulhando no Plone 4
Oficina Mergulhando no Plone 4
 
Guia php
Guia phpGuia php
Guia php
 
Doctrine 2 camada de persistência para php
Doctrine 2   camada de persistência para phpDoctrine 2   camada de persistência para php
Doctrine 2 camada de persistência para php
 
Orientação a Aspectos em PHP
Orientação a Aspectos em PHPOrientação a Aspectos em PHP
Orientação a Aspectos em PHP
 
TDC2016POA | Trilha Python - Python Assíncrono: tudo ao mesmo tempo agora
TDC2016POA | Trilha Python - Python Assíncrono: tudo ao mesmo tempo agoraTDC2016POA | Trilha Python - Python Assíncrono: tudo ao mesmo tempo agora
TDC2016POA | Trilha Python - Python Assíncrono: tudo ao mesmo tempo agora
 
Mini Curso de PHP
Mini Curso de PHPMini Curso de PHP
Mini Curso de PHP
 
Introdução ao Drupal 7
Introdução ao Drupal 7Introdução ao Drupal 7
Introdução ao Drupal 7
 
A Evolução do PHP - 4º Dev In Santos
A Evolução do PHP - 4º Dev In SantosA Evolução do PHP - 4º Dev In Santos
A Evolução do PHP - 4º Dev In Santos
 
Muito prazer, eu sou PHP
Muito prazer, eu sou PHPMuito prazer, eu sou PHP
Muito prazer, eu sou PHP
 
Muito prazer, eu sou PHP
Muito prazer, eu sou PHPMuito prazer, eu sou PHP
Muito prazer, eu sou PHP
 
Trilhando o caminho PHP [2.0]
Trilhando o caminho PHP [2.0]Trilhando o caminho PHP [2.0]
Trilhando o caminho PHP [2.0]
 
Introdução ao drupal 7
Introdução ao drupal 7Introdução ao drupal 7
Introdução ao drupal 7
 
Php m18
Php m18Php m18
Php m18
 
Curso PHP UNIFACS 2014.1 – 1a Aula
Curso PHP UNIFACS 2014.1 – 1a AulaCurso PHP UNIFACS 2014.1 – 1a Aula
Curso PHP UNIFACS 2014.1 – 1a Aula
 

More from Alexandre Gaigalas

Domine Validação de Dados em 45min
Domine Validação de Dados em 45minDomine Validação de Dados em 45min
Domine Validação de Dados em 45minAlexandre Gaigalas
 
REST: Faça o Serviço Direito - TDC Goiânia
REST: Faça o Serviço Direito - TDC GoiâniaREST: Faça o Serviço Direito - TDC Goiânia
REST: Faça o Serviço Direito - TDC GoiâniaAlexandre Gaigalas
 
Mágica com Manipulação de Imagens - TDC 2011 Goiânia
Mágica com Manipulação de Imagens - TDC 2011 GoiâniaMágica com Manipulação de Imagens - TDC 2011 Goiânia
Mágica com Manipulação de Imagens - TDC 2011 GoiâniaAlexandre Gaigalas
 
assertTrue($tdd) - Latinoware 2011
assertTrue($tdd) - Latinoware 2011assertTrue($tdd) - Latinoware 2011
assertTrue($tdd) - Latinoware 2011Alexandre Gaigalas
 
REST: Faça o Serviço Direito
REST: Faça o Serviço DireitoREST: Faça o Serviço Direito
REST: Faça o Serviço DireitoAlexandre Gaigalas
 
Autoloaders Universais + Microframeworks em PHP - Trilha de PHP do TDC 2011
Autoloaders Universais + Microframeworks em PHP - Trilha de PHP do TDC 2011Autoloaders Universais + Microframeworks em PHP - Trilha de PHP do TDC 2011
Autoloaders Universais + Microframeworks em PHP - Trilha de PHP do TDC 2011Alexandre Gaigalas
 
HTTP: A Base do Desenvolvimento Web - FISL 12
HTTP: A Base do Desenvolvimento Web - FISL 12HTTP: A Base do Desenvolvimento Web - FISL 12
HTTP: A Base do Desenvolvimento Web - FISL 12Alexandre Gaigalas
 

More from Alexandre Gaigalas (9)

Domine Validação de Dados em 45min
Domine Validação de Dados em 45minDomine Validação de Dados em 45min
Domine Validação de Dados em 45min
 
REST: Faça o Serviço Direito - TDC Goiânia
REST: Faça o Serviço Direito - TDC GoiâniaREST: Faça o Serviço Direito - TDC Goiânia
REST: Faça o Serviço Direito - TDC Goiânia
 
Mágica com Manipulação de Imagens - TDC 2011 Goiânia
Mágica com Manipulação de Imagens - TDC 2011 GoiâniaMágica com Manipulação de Imagens - TDC 2011 Goiânia
Mágica com Manipulação de Imagens - TDC 2011 Goiânia
 
assertTrue($tdd) - Latinoware 2011
assertTrue($tdd) - Latinoware 2011assertTrue($tdd) - Latinoware 2011
assertTrue($tdd) - Latinoware 2011
 
REST: Faça o Serviço Direito
REST: Faça o Serviço DireitoREST: Faça o Serviço Direito
REST: Faça o Serviço Direito
 
Autoloaders Universais + Microframeworks em PHP - Trilha de PHP do TDC 2011
Autoloaders Universais + Microframeworks em PHP - Trilha de PHP do TDC 2011Autoloaders Universais + Microframeworks em PHP - Trilha de PHP do TDC 2011
Autoloaders Universais + Microframeworks em PHP - Trilha de PHP do TDC 2011
 
HTTP: A Base do Desenvolvimento Web - FISL 12
HTTP: A Base do Desenvolvimento Web - FISL 12HTTP: A Base do Desenvolvimento Web - FISL 12
HTTP: A Base do Desenvolvimento Web - FISL 12
 
GET /conceitos HTTP/1.1
GET /conceitos HTTP/1.1GET /conceitos HTTP/1.1
GET /conceitos HTTP/1.1
 
assertTrue($tdd)
assertTrue($tdd)assertTrue($tdd)
assertTrue($tdd)
 

PHP paradigmas programação multi-funcional reflexivo

  • 2. Hoje você vai ver... ● Como são alguns dos paradigmas de programação. ● PHP funcionando em múltiplos paradigmas. ● Recursos MUITO FODA da linguagem. 5 de Novembro PHP'n Rio 2011 2
  • 3. PHP Maroto 5 de Novembro PHP'n Rio 2011 3
  • 4. PHP Imperativo, Procedural 5 de Novembro PHP'n Rio 2011 4
  • 5. Ordens para o interpretador PHP Imperativo, Procedural 5 de Novembro PHP'n Rio 2011 5
  • 6. Ordens para o interpretador PHP Imperativo, Procedural Reuso de subrotinas 5 de Novembro PHP'n Rio 2011 6
  • 7. PHP Orientado a Objetos 5 de Novembro PHP'n Rio 2011 7
  • 8. PHP Orientado a Objetos Agrupamento de responsabilidades 5 de Novembro PHP'n Rio 2011 8
  • 9. PHP Reflexivo 5 de Novembro PHP'n Rio 2011 9
  • 10. PHP Reflexivo Sabe sobre si mesmo em tempo de execução 5 de Novembro PHP'n Rio 2011 10
  • 11. É daqui que vem a mágica do PHP! PHP Reflexivo Sabe sobre si mesmo em tempo de execução 5 de Novembro PHP'n Rio 2011 11
  • 12. PHP Funcional 5 de Novembro PHP'n Rio 2011 12
  • 13. PHP Funcional Funções como recurso de primeira-classe 5 de Novembro PHP'n Rio 2011 13
  • 14. Closures! PHP Funcional Funções como recurso de primeira-classe 5 de Novembro PHP'n Rio 2011 14
  • 15. PHP Multi-Paradigma 5 de Novembro PHP'n Rio 2011 15
  • 16. Pelo menos 4 paradigmas! PHP Multi-Paradigma 5 de Novembro PHP'n Rio 2011 16
  • 17. Pelo menos 4 paradigmas! PHP Multi-Paradigma Por que só focar em OOP? :( 5 de Novembro PHP'n Rio 2011 17
  • 18. Assembly (apenas pra curiosidade da galera) 5 de Novembro PHP'n Rio 2011 18
  • 19. A maioria dos programadores nunca viu Assembly code na vida. 5 de Novembro PHP'n Rio 2011 19
  • 20. A maioria dos programadores nunca viu Assembly code na vida. Por mais que insistam que tenham visto, não acredite! 5 de Novembro PHP'n Rio 2011 20
  • 21. Assembly (apenas pra curiosidade da galera) ● Assembler == Montador ● Assembly == Montagem ● Vários Assemblers! ● AS86 ● MASM ● GAS ● etc ● Depende da arquitetura do processador 5 de Novembro PHP'n Rio 2011 21
  • 22. Procedural / Imperativo ● Chamadas de sub-rotinas ● Estruturas de controle ● Variáveis com estado 5 de Novembro PHP'n Rio 2011 22
  • 23. Procedural / Imperativo ● Chamadas de sub-rotinas mysql_connect(), mysql_last_insert_id(), etc. ● Estruturas de controle If, else, for, while, switch, foreach, et.. ● Variáveis com estado $oi = “Tudo bem”; 5 de Novembro PHP'n Rio 2011 23
  • 24. Procedural / Imperativo 5 de Novembro PHP'n Rio 2011 24
  • 25. Procedural / Imperativo / OO 5 de Novembro PHP'n Rio 2011 25
  • 26. OOP não substitui outros paradigmas. 5 de Novembro PHP'n Rio 2011 26
  • 27. OOP complementa outros paradigmas. 5 de Novembro PHP'n Rio 2011 27
  • 28. Smalltalk? 5 de Novembro PHP'n Rio 2011 28
  • 29. Smalltalk? O resultado da comparação é um objeto booleano 5 de Novembro PHP'n Rio 2011 29
  • 30. Smalltalk? O resultado da comparação é um objeto booleano IfTrue e ifFalse são métodos 5 de Novembro PHP'n Rio 2011 30
  • 31. Smalltalk? O resultado da comparação é um objeto booleano IfTrue e ifFalse são métodos Mas a condição ainda é imperativa! 5 de Novembro PHP'n Rio 2011 31
  • 32. OOP pura é impraticável. 5 de Novembro PHP'n Rio 2011 32
  • 33. OOP pura é impraticável. (e não existe definição formal de “oop pura”) 5 de Novembro PHP'n Rio 2011 33
  • 34. Orientação a Objetos ● Agrupamento de sub-rotinas PDO->query(), PDO->lastInsertId() ● Organização de responsabilidades PDO, DateTime, SimpleXML ● Abstração ZendDbAdapterPdoMySql extends ... 5 de Novembro PHP'n Rio 2011 34
  • 35. Reflexão Função nativa 5 de Novembro PHP'n Rio 2011 35
  • 36. Reflexão Função do usuário Chamada em tempo de execução para qualquer função 5 de Novembro PHP'n Rio 2011 36
  • 37. Reflexão 5 de Novembro PHP'n Rio 2011 37
  • 38. Reflexão 5 de Novembro PHP'n Rio 2011 38
  • 39. Reflexão ● ReflectionClass ● ReflectionMethod ● ReflectionParameter ● ReflectionFunction ● ReflectionProperty http://php.net/reflection (tem mais aqui!) 5 de Novembro PHP'n Rio 2011 39
  • 40. Reflexão – Quem, como? ● Doctrine ORM ● Conhecer as entidades e criar os proxies ● Tornar atributos privados acessíveis ● Zend DI ● Saber quais as dependências entre as classes ● Zend Server Reflection ● Mapear métodos para serviços ● Muita Gente =) ● Chamadas dinâmicas para construtores 5 de Novembro PHP'n Rio 2011 40
  • 41. Um mundo sem mágica =/ 5 de Novembro PHP'n Rio 2011 41
  • 42. Mágica! 5 de Novembro PHP'n Rio 2011 42
  • 43. MongoDB sem mágica 5 de Novembro PHP'n Rio 2011 43
  • 44. MongoDB com mágica =D 5 de Novembro PHP'n Rio 2011 44
  • 45. Mágica no PHP ● __get - Obter propriedades ● __set - Definir propriedades ● __isset - Checar existência de propriedades ● __unset - Remover propriedades ● __call - Chamar métodos ● __callStatic - Chamar métodos estáticos ● __invoke - Chamar a classe como uma função ● __toString - Converter a classe para string http://php.net/oop5.magic (tem mais aqui!) 5 de Novembro PHP'n Rio 2011 45
  • 46. Mágica no PHP ● O problema não está na mágica, está no que você coloca dentro dela. ● Forneça sempre uma versão não-mágica. ● Documente sua mágica. 5 de Novembro PHP'n Rio 2011 46
  • 47. Funcional 5 de Novembro PHP'n Rio 2011 47
  • 48. Funcional 5 de Novembro PHP'n Rio 2011 48
  • 49. Funcional 5 de Novembro PHP'n Rio 2011 49
  • 50. Funcional 5 de Novembro PHP'n Rio 2011 50
  • 51. Funcional 5 de Novembro PHP'n Rio 2011 51
  • 52. Funcional 5 de Novembro PHP'n Rio 2011 52
  • 53. Funcional 5 de Novembro PHP'n Rio 2011 53
  • 54. Funcional 5 de Novembro PHP'n Rio 2011 54
  • 55. Imperativo 5 de Novembro PHP'n Rio 2011 55
  • 56. OOP (só estrutura!) 5 de Novembro PHP'n Rio 2011 56
  • 57. Bônus! 5 de Novembro PHP'n Rio 2011 57
  • 58. Bônus! 5 de Novembro PHP'n Rio 2011 58
  • 59. Bônus! 5 de Novembro PHP'n Rio 2011 59
  • 60. PHP: The Good Parts (na humilde opinião de @alganet) ● Arrays http://php.net/book.array ● Streams http://php.net/streams ● http, sockets, arquivos, buffers ● Batteries Included ● PDO, SimpleXML, json_*, SOAPClient/Server, MongoDB, mail() ● Simples de criar extensões ● Excelente retrocompatibilidade ● O menor Hello World do mundo ● A melhor documentação online ● Excelente comunidade no mundo inteiro 5 de Novembro PHP'n Rio 2011 60
  • 61. Hoje você viu... ● Como são alguns dos paradigmas de programação. ● PHP funcionando em múltiplos paradigmas. ● Recursos MUITO FODA da linguagem. 5 de Novembro PHP'n Rio 2011 61
  • 62. Perguntas? 5 de Novembro PHP'n Rio 2011 62
  • 63. Obrigado! 5 de Novembro PHP'n Rio 2011 63