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.
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
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
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
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
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
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