Successfully reported this slideshow.
Alexandre Gomes Gaigalashttp://about.me/alganet5 de Novembro             PHPn Rio 2011   1
Hoje você vai ver... ●     Como são alguns dos paradigmas de     programação. ●     PHP funcionando em múltiplos paradigma...
PHP Maroto5 de Novembro   PHPn Rio 2011   3
PHP Imperativo, Procedural5 de Novembro   PHPn Rio 2011   4
Ordens para o                interpretadorPHP Imperativo, Procedural5 de Novembro             PHPn Rio 2011   5
Ordens para o                interpretadorPHP Imperativo, Procedural                                           Reuso de   ...
PHP Orientado a Objetos5 de Novembro   PHPn Rio 2011   7
PHP Orientado a Objetos                Agrupamento de                responsabilidades5 de Novembro   PHPn Rio 2011      8
PHP Reflexivo5 de Novembro   PHPn Rio 2011   9
PHP Reflexivo                 Sabe sobre si mesmo                em tempo de execução5 de Novembro           PHPn Rio 2011...
É daqui que vem                a mágica do PHP!PHP Reflexivo                 Sabe sobre si mesmo                em tempo d...
PHP Funcional5 de Novembro   PHPn Rio 2011   12
PHP Funcional                Funções como recurso                  de primeira-classe5 de Novembro             PHPn Rio 20...
Closures!PHP Funcional                Funções como recurso                  de primeira-classe5 de Novembro             PH...
PHP Multi-Paradigma5 de Novembro   PHPn Rio 2011   15
Pelo menos 4 paradigmas!PHP Multi-Paradigma5 de Novembro      PHPn Rio 2011          16
Pelo menos 4 paradigmas!PHP Multi-Paradigma                Por que só focar em OOP? :(5 de Novembro                       ...
Assembly                (apenas pra curiosidade da galera)5 de Novembro               PHPn Rio 2011           18
A maioria dos programadores   nunca viu Assembly code na vida.5 de Novembro   PHPn Rio 2011        19
A maioria dos programadores   nunca viu Assembly code na vida.                Por mais que insistam que tenham visto, não ...
Assembly                (apenas pra curiosidade da galera) ●     Assembler == Montador ●     Assembly == Montagem ●     Vá...
Procedural / Imperativo ●     Chamadas de sub-rotinas ●     Estruturas de controle ●     Variáveis com estado5 de Novembro...
Procedural / Imperativo ●     Chamadas de sub-rotinas                        mysql_connect(), mysql_last_insert_id(), etc....
Procedural / Imperativo5 de Novembro            PHPn Rio 2011   24
Procedural / Imperativo / OO5 de Novembro       PHPn Rio 2011      25
OOP não substitui outros                     paradigmas.5 de Novembro            PHPn Rio 2011    26
OOP complementa outros                  paradigmas.5 de Novembro        PHPn Rio 2011   27
Smalltalk?5 de Novembro     PHPn Rio 2011   28
Smalltalk?                    O resultado da comparação                       é um objeto booleano5 de Novembro     PHPn R...
Smalltalk?                    O resultado da comparação                       é um objeto booleano                    IfTr...
Smalltalk?                                        O resultado da comparação                                           é um...
OOP pura é impraticável.5 de Novembro            PHPn Rio 2011    32
OOP pura é impraticável.         (e não existe definição formal de “oop pura”)5 de Novembro              PHPn Rio 2011    ...
Orientação a Objetos ●     Agrupamento de sub-rotinas                            PDO->query(), PDO->lastInsertId() ●     O...
Reflexão                                  Função nativa5 de Novembro    PHPn Rio 2011                   35
Reflexão                                    Função do usuário                Chamada em tempo de execução                 ...
Reflexão5 de Novembro    PHPn Rio 2011   37
Reflexão5 de Novembro    PHPn Rio 2011   38
Reflexão ●     ReflectionClass ●     ReflectionMethod ●     ReflectionParameter ●     ReflectionFunction ●     ReflectionP...
Reflexão – Quem, como? ●     Doctrine ORM     ●         Conhecer as entidades e criar os proxies     ●         Tornar atri...
Um mundo sem mágica =/5 de Novembro           PHPn Rio 2011   41
Mágica!5 de Novembro    PHPn Rio 2011   42
MongoDB sem mágica5 de Novembro          PHPn Rio 2011   43
MongoDB com mágica =D5 de Novembro           PHPn Rio 2011   44
Mágica no PHP●   __get          - Obter propriedades●   __set          - Definir propriedades●   __isset        - Checar e...
Mágica no PHP ●     O problema não está na mágica, está no que     você coloca dentro dela. ●     Forneça sempre uma versã...
Funcional5 de Novembro     PHPn Rio 2011   47
Funcional5 de Novembro     PHPn Rio 2011   48
Funcional5 de Novembro     PHPn Rio 2011   49
Funcional5 de Novembro     PHPn Rio 2011   50
Funcional5 de Novembro     PHPn Rio 2011   51
Funcional5 de Novembro     PHPn Rio 2011   52
Funcional5 de Novembro     PHPn Rio 2011   53
Funcional5 de Novembro     PHPn Rio 2011   54
Imperativo5 de Novembro   PHPn Rio 2011                55
OOP                                 (só estrutura!)5 de Novembro   PHPn Rio 2011                     56
Bônus!5 de Novembro   PHPn Rio 2011   57
Bônus!5 de Novembro   PHPn Rio 2011   58
Bônus!5 de Novembro   PHPn Rio 2011   59
PHP: The Good Parts                 (na humilde opinião de @alganet)●   Arrays http://php.net/book.array●   Streams http:/...
Hoje você viu... ●     Como são alguns dos paradigmas de     programação. ●     PHP funcionando em múltiplos paradigmas. ●...
Perguntas?5 de Novembro   PHPn Rio 2011   62
Obrigado!5 de Novembro   PHPn Rio 2011   63
Upcoming SlideShare
Loading in …5
×

PHP Maroto

1,303 views

Published on

PHP é uma linguagem multi-paradigma. Muitas pessoas esquecem disso e acabam desenvolvendo nela como se ela fosse puramente orientada a objetos. Aprenda a utilizar os vários paradigmas que o PHP suporta e como uma combinação de orientação a objetos, programação funcional e imperativa podem transformar as peculiaridades da linguagem em poderosas ferramentas sem cometer nenhum assassinato a boas práticas.

Published in: Technology
  • Be the first to comment

PHP Maroto

  1. 1. Alexandre Gomes Gaigalashttp://about.me/alganet5 de Novembro PHPn Rio 2011 1
  2. 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 PHPn Rio 2011 2
  3. 3. PHP Maroto5 de Novembro PHPn Rio 2011 3
  4. 4. PHP Imperativo, Procedural5 de Novembro PHPn Rio 2011 4
  5. 5. Ordens para o interpretadorPHP Imperativo, Procedural5 de Novembro PHPn Rio 2011 5
  6. 6. Ordens para o interpretadorPHP Imperativo, Procedural Reuso de subrotinas5 de Novembro PHPn Rio 2011 6
  7. 7. PHP Orientado a Objetos5 de Novembro PHPn Rio 2011 7
  8. 8. PHP Orientado a Objetos Agrupamento de responsabilidades5 de Novembro PHPn Rio 2011 8
  9. 9. PHP Reflexivo5 de Novembro PHPn Rio 2011 9
  10. 10. PHP Reflexivo Sabe sobre si mesmo em tempo de execução5 de Novembro PHPn Rio 2011 10
  11. 11. É daqui que vem a mágica do PHP!PHP Reflexivo Sabe sobre si mesmo em tempo de execução5 de Novembro PHPn Rio 2011 11
  12. 12. PHP Funcional5 de Novembro PHPn Rio 2011 12
  13. 13. PHP Funcional Funções como recurso de primeira-classe5 de Novembro PHPn Rio 2011 13
  14. 14. Closures!PHP Funcional Funções como recurso de primeira-classe5 de Novembro PHPn Rio 2011 14
  15. 15. PHP Multi-Paradigma5 de Novembro PHPn Rio 2011 15
  16. 16. Pelo menos 4 paradigmas!PHP Multi-Paradigma5 de Novembro PHPn Rio 2011 16
  17. 17. Pelo menos 4 paradigmas!PHP Multi-Paradigma Por que só focar em OOP? :(5 de Novembro PHPn Rio 2011 17
  18. 18. Assembly (apenas pra curiosidade da galera)5 de Novembro PHPn Rio 2011 18
  19. 19. A maioria dos programadores nunca viu Assembly code na vida.5 de Novembro PHPn Rio 2011 19
  20. 20. A maioria dos programadores nunca viu Assembly code na vida. Por mais que insistam que tenham visto, não acredite!5 de Novembro PHPn Rio 2011 20
  21. 21. Assembly (apenas pra curiosidade da galera) ● Assembler == Montador ● Assembly == Montagem ● Vários Assemblers! ● AS86 ● MASM ● GAS ● etc ● Depende da arquitetura do processador5 de Novembro PHPn Rio 2011 21
  22. 22. Procedural / Imperativo ● Chamadas de sub-rotinas ● Estruturas de controle ● Variáveis com estado5 de Novembro PHPn Rio 2011 22
  23. 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 PHPn Rio 2011 23
  24. 24. Procedural / Imperativo5 de Novembro PHPn Rio 2011 24
  25. 25. Procedural / Imperativo / OO5 de Novembro PHPn Rio 2011 25
  26. 26. OOP não substitui outros paradigmas.5 de Novembro PHPn Rio 2011 26
  27. 27. OOP complementa outros paradigmas.5 de Novembro PHPn Rio 2011 27
  28. 28. Smalltalk?5 de Novembro PHPn Rio 2011 28
  29. 29. Smalltalk? O resultado da comparação é um objeto booleano5 de Novembro PHPn Rio 2011 29
  30. 30. Smalltalk? O resultado da comparação é um objeto booleano IfTrue e ifFalse são métodos5 de Novembro PHPn Rio 2011 30
  31. 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 PHPn Rio 2011 31
  32. 32. OOP pura é impraticável.5 de Novembro PHPn Rio 2011 32
  33. 33. OOP pura é impraticável. (e não existe definição formal de “oop pura”)5 de Novembro PHPn Rio 2011 33
  34. 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 PHPn Rio 2011 34
  35. 35. Reflexão Função nativa5 de Novembro PHPn Rio 2011 35
  36. 36. Reflexão Função do usuário Chamada em tempo de execução para qualquer função5 de Novembro PHPn Rio 2011 36
  37. 37. Reflexão5 de Novembro PHPn Rio 2011 37
  38. 38. Reflexão5 de Novembro PHPn Rio 2011 38
  39. 39. Reflexão ● ReflectionClass ● ReflectionMethod ● ReflectionParameter ● ReflectionFunction ● ReflectionProperty http://php.net/reflection (tem mais aqui!)5 de Novembro PHPn Rio 2011 39
  40. 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 construtores5 de Novembro PHPn Rio 2011 40
  41. 41. Um mundo sem mágica =/5 de Novembro PHPn Rio 2011 41
  42. 42. Mágica!5 de Novembro PHPn Rio 2011 42
  43. 43. MongoDB sem mágica5 de Novembro PHPn Rio 2011 43
  44. 44. MongoDB com mágica =D5 de Novembro PHPn Rio 2011 44
  45. 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 PHPn Rio 2011 45
  46. 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 PHPn Rio 2011 46
  47. 47. Funcional5 de Novembro PHPn Rio 2011 47
  48. 48. Funcional5 de Novembro PHPn Rio 2011 48
  49. 49. Funcional5 de Novembro PHPn Rio 2011 49
  50. 50. Funcional5 de Novembro PHPn Rio 2011 50
  51. 51. Funcional5 de Novembro PHPn Rio 2011 51
  52. 52. Funcional5 de Novembro PHPn Rio 2011 52
  53. 53. Funcional5 de Novembro PHPn Rio 2011 53
  54. 54. Funcional5 de Novembro PHPn Rio 2011 54
  55. 55. Imperativo5 de Novembro PHPn Rio 2011 55
  56. 56. OOP (só estrutura!)5 de Novembro PHPn Rio 2011 56
  57. 57. Bônus!5 de Novembro PHPn Rio 2011 57
  58. 58. Bônus!5 de Novembro PHPn Rio 2011 58
  59. 59. Bônus!5 de Novembro PHPn Rio 2011 59
  60. 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 inteiro5 de Novembro PHPn Rio 2011 60
  61. 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 PHPn Rio 2011 61
  62. 62. Perguntas?5 de Novembro PHPn Rio 2011 62
  63. 63. Obrigado!5 de Novembro PHPn Rio 2011 63

×