Slide 1

Slide 1 text

5 de Novembro PHP'n Rio 2011 1 Alexandre Gomes Gaigalas http://about.me/alganet

Slide 2

Slide 2 text

5 de Novembro PHP'n Rio 2011 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.

Slide 3

Slide 3 text

5 de Novembro PHP'n Rio 2011 3 PHP Maroto

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

5 de Novembro PHP'n Rio 2011 6 PHP Imperativo, Procedural Ordens para o interpretador Reuso de subrotinas

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

5 de Novembro PHP'n Rio 2011 8 PHP Orientado a Objetos Agrupamento de responsabilidades

Slide 9

Slide 9 text

5 de Novembro PHP'n Rio 2011 9 PHP Reflexivo

Slide 10

Slide 10 text

5 de Novembro PHP'n Rio 2011 10 PHP Reflexivo Sabe sobre si mesmo em tempo de execução

Slide 11

Slide 11 text

5 de Novembro PHP'n Rio 2011 11 PHP Reflexivo Sabe sobre si mesmo em tempo de execução É daqui que vem a mágica do PHP!

Slide 12

Slide 12 text

5 de Novembro PHP'n Rio 2011 12 PHP Funcional

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

5 de Novembro PHP'n Rio 2011 17 PHP Multi-Paradigma Pelo menos 4 paradigmas! Por que só focar em OOP? :(

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

5 de Novembro PHP'n Rio 2011 21 Assembly (apenas pra curiosidade da galera) ● Assembler == Montador ● Assembly == Montagem ● Vários Assemblers! ● AS86 ● MASM ● GAS ● etc ● Depende da arquitetura do processador

Slide 22

Slide 22 text

5 de Novembro PHP'n Rio 2011 22 Procedural / Imperativo ● Chamadas de sub-rotinas ● Estruturas de controle ● Variáveis com estado

Slide 23

Slide 23 text

5 de Novembro PHP'n Rio 2011 23 Procedural / Imperativo ● Chamadas de sub-rotinas ● Estruturas de controle ● Variáveis com estado mysql_connect(), mysql_last_insert_id(), etc. If, else, for, while, switch, foreach, et.. $oi = “Tudo bem”;

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

5 de Novembro PHP'n Rio 2011 28 Smalltalk?

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

5 de Novembro PHP'n Rio 2011 30 Smalltalk? O resultado da comparação é um objeto booleano IfTrue e ifFalse são métodos

Slide 31

Slide 31 text

5 de Novembro PHP'n Rio 2011 31 Smalltalk? O resultado da comparação é um objeto booleano Mas a condição ainda é imperativa! IfTrue e ifFalse são métodos

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

5 de Novembro PHP'n Rio 2011 34 Orientação a Objetos ● Agrupamento de sub-rotinas ● Organização de responsabilidades ● Abstração PDO->query(), PDO->lastInsertId() PDO, DateTime, SimpleXML Zend\Db\Adapter\Pdo\MySql extends ...

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

5 de Novembro PHP'n Rio 2011 36 Reflexão Função do usuário Chamada em tempo de execução para qualquer função

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

5 de Novembro PHP'n Rio 2011 39 Reflexão ● ReflectionClass ● ReflectionMethod ● ReflectionParameter ● ReflectionFunction ● ReflectionProperty http://php.net/reflection (tem mais aqui!)

Slide 40

Slide 40 text

5 de Novembro PHP'n Rio 2011 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

Slide 41

Slide 41 text

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

Slide 42

Slide 42 text

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

Slide 43

Slide 43 text

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

Slide 44

Slide 44 text

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

Slide 45

Slide 45 text

5 de Novembro PHP'n Rio 2011 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!)

Slide 46

Slide 46 text

5 de Novembro PHP'n Rio 2011 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.

Slide 47

Slide 47 text

5 de Novembro PHP'n Rio 2011 47 Funcional

Slide 48

Slide 48 text

5 de Novembro PHP'n Rio 2011 48 Funcional

Slide 49

Slide 49 text

5 de Novembro PHP'n Rio 2011 49 Funcional

Slide 50

Slide 50 text

5 de Novembro PHP'n Rio 2011 50 Funcional

Slide 51

Slide 51 text

5 de Novembro PHP'n Rio 2011 51 Funcional

Slide 52

Slide 52 text

5 de Novembro PHP'n Rio 2011 52 Funcional

Slide 53

Slide 53 text

5 de Novembro PHP'n Rio 2011 53 Funcional

Slide 54

Slide 54 text

5 de Novembro PHP'n Rio 2011 54 Funcional

Slide 55

Slide 55 text

5 de Novembro PHP'n Rio 2011 55 Imperativo

Slide 56

Slide 56 text

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

Slide 57

Slide 57 text

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

Slide 58

Slide 58 text

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

Slide 59

Slide 59 text

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

Slide 60

Slide 60 text

5 de Novembro PHP'n Rio 2011 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

Slide 61

Slide 61 text

5 de Novembro PHP'n Rio 2011 61 Hoje você viu... ● Como são alguns dos paradigmas de programação. ● PHP funcionando em múltiplos paradigmas. ● Recursos MUITO FODA da linguagem.

Slide 62

Slide 62 text

5 de Novembro PHP'n Rio 2011 62 Perguntas?

Slide 63

Slide 63 text

5 de Novembro PHP'n Rio 2011 63 Obrigado!