PHP - O que, porquê e como

3,950 views

Published on

Uma breve introdução ao PHP e seu ecossistema.

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,950
On SlideShare
0
From Embeds
0
Number of Embeds
11
Actions
Shares
0
Downloads
84
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

PHP - O que, porquê e como

  1. 1. O quê, porquê e como. Augusto Pascutti - @augustohpMonday, April 25, 2011 1
  2. 2. O QUE É?Monday, April 25, 2011 2
  3. 3. O QUE É? abbr: PHP HiperText Preprocessor “PHP é uma linguagem de propósito genérico largamente utilizada e especializada para desenvolvimento Web que pode ser embutida no HTML ...” (php.net)Monday, April 25, 2011 3
  4. 4. O QUE É? • Criada em 1995 • Utilizada em mais de 21 milhões de domínios • Open Source • Interpretada e Dinamicamente tipada • Suporte aos paradigmas Procedural e Orientado a Objetos • Sintaxe objetiva (simples) com influências de Perl e CMonday, April 25, 2011 4
  5. 5. UM POUCO DE HISTÓRIAMonday, April 25, 2011 5
  6. 6. UM POUCO DE HISTÓRIA 1995 • Versão 1.0 • Rasmus Lerdorf • Escrito em Perl • PHP/FI: Personal Home Pages • Open Source (Código Aberto)Monday, April 25, 2011 6
  7. 7. UM POUCO DE HISTÓRIA 1998 • Versão 3.0 • Rasmus + Zeev e Andi • Escrito em C • PHP: HyperText Preprocessor • Suporte a Orientação a Objetos • ~10% da internetMonday, April 25, 2011 7
  8. 8. UM POUCO DE HISTÓRIA 2000 • Versão 4.0 • Zend Engine (Core PHP) • Performance++ (Parse/Execute) • Suporte a vários servidores HTTP • Sessions, Output Buffering, CLI • ~20% da internetMonday, April 25, 2011 8
  9. 9. UM POUCO DE HISTÓRIA 2004 • Versão 5.0 • Zend Engine 2.0 (reescrita completa) • Novo modelo de Objetos • Performance++ (variáveis de compilação) • Streams, PDO, SPLMonday, April 25, 2011 9
  10. 10. UM POUCO DE HISTÓRIA 2009 • Versão 5.3 • Namespaces, Closures, Late Static Binding, PHAR, mysqlnd • Melhor suporte ao Microsoft Windows e IIS • Garbage Collection para Referências Cíclicas • Internacionalização, SQLite3, FileInfoMonday, April 25, 2011 10
  11. 11. UM POUCO DE HISTÓRIA • Versão 5.4 (provável) ou 6.0 • Type Hints, Traits, HTTP server • Incentivo de boas práticas (Strict Standards, PHP Standards) • Segurança (Tainted Data) • Assuntos “delicados” • Annotations • Suporte completo ao UnicodeMonday, April 25, 2011 11
  12. 12. HTTP O QUÊ?Monday, April 25, 2011 12
  13. 13. HTTP O QUÊ? • abbr: Hypertext Transfer Protocol • Protocolo de Rede (Camada de Aplicação) • Foco na troca de Informações (!= dados) distribuída e colaborativa • Inicialmente coordenado pelo IETF e W3C • Versão atual HTTP/1.1 em 1999 (RFC:2616)Monday, April 25, 2011 13
  14. 14. E EU KIKO?Monday, April 25, 2011 14
  15. 15. E EU KIKO? • HTTP é o protocolo utilizado por toda aplicação na internet • Cliente (Navegador) e ServidorMonday, April 25, 2011 15
  16. 16. ESTE É VOCÊ Você quer acessar www.google.com com o navegador de sua preferência.Monday, April 25, 2011 16
  17. 17. O SERVIDOR RECEBE Um servidor HTTP processa a requisição e devolve o recurso pedido.Monday, April 25, 2011 17
  18. 18. ESTE É VOCÊ O navegador processar a resposta do servidor e exibe a página para você.Monday, April 25, 2011 18
  19. 19. ONDE ENTRA O PHP? • Em conjunto com o servidor HTTP • O PHP acessa a dados da requisição (GET, POST, DELETE ou UPDATE) • O PHP retorna para o servidor HTTP o conteúdo da resposta (HTML)Monday, April 25, 2011 19
  20. 20. LAMP • abbr: Linux + Apache + MySQL + PHP • Arquitetura mais utilizada pelos servidores • Outras arquiteturas: WAMP (Windows), MAMP (Mac) • Kits de intalação prontos para uso: • Zend Server e XAMPPMonday, April 25, 2011 20
  21. 21. PORQUE USAR PHP?Monday, April 25, 2011 21
  22. 22. PORQUE USAR PHP? • Baixo custo e curva de aprendizado • Largamente utilizado (>20 milhões de domínios) • Ótima performance • Excelente documentação • Robusto, Flexível e Ecossistema maduroMonday, April 25, 2011 22
  23. 23. BAIXO CUSTOMonday, April 25, 2011 23
  24. 24. BAIXO CUSTO O PHP pode funcionar em conjunto com uma infinidade de tecnologias, a grande maioria é gratuita (Open Source)Monday, April 25, 2011 24
  25. 25. FLEXÍVELMonday, April 25, 2011 25
  26. 26. FLEXÍVELMonday, April 25, 2011 26
  27. 27. CURVA DE APRENDIZADOMonday, April 25, 2011 27
  28. 28. CURVA DE APRENDIZADO Melhor documentação existente (Exemplos e comentários) somada a uma extensa quantidade de informação na internet (Sites, Posts, Projetos)Monday, April 25, 2011 28
  29. 29. LARGAMENTE UTILIZADA?Monday, April 25, 2011 29
  30. 30. LARGAMENTE UTILIZADA?Monday, April 25, 2011 30
  31. 31. CONTRIBUEMMonday, April 25, 2011 31
  32. 32. CONTRIBUEMMonday, April 25, 2011 32
  33. 33. ROBUSTOMonday, April 25, 2011 33
  34. 34. ROBUSTO Concepção atual para suportar de dezenas a milhares de requisições por segundo sem problemas.Monday, April 25, 2011 34
  35. 35. ECOSSISTEMA • Comunidade • Frameworks, Componentes, CMSs • Integrated Development Environment (IDEs) • Ferramentas de Testes (Unitários, Comportamentais e Interface) • Integração Contínua • Ferramentas de PublicaçãoMonday, April 25, 2011 35
  36. 36. COMUNIDADEMonday, April 25, 2011 36
  37. 37. COMUNIDADE • Core developers do PHP • Contribuidores/Líderes de Projetos • Líderes de Grupo • DesenvolvedoresMonday, April 25, 2011 37
  38. 38. COMUNIDADE • PHP Brasil Comunidades - PHPBC • Mais de 20 grupos de usuários coordenados • Encontre o seu em www.php.org.br • PHPSP - Grupo de Usuários do Estado de São Paulo • www.phpsp.org.brMonday, April 25, 2011 38
  39. 39. FRAMEWORKMonday, April 25, 2011 39
  40. 40. FRAMEWORK Camada de abstração que reúne códigos comuns entre vários projetos promovendo uma funcionalidade genérica.Monday, April 25, 2011 40
  41. 41. COMO É O PHP?Monday, April 25, 2011 41
  42. 42. COMO É O PHP? • Linguagem interpretada (sem compilação) • Funciona plugada a um servidor HTTP • http://localhost/index.php • Funciona via linha de comando (CLI) • $php index.phpMonday, April 25, 2011 42
  43. 43. COMO ELE PARECE?Monday, April 25, 2011 43
  44. 44. 1 <html> 2 <body> 3 <?php echo "Hello World"; ?> 4 </body> 5 </html>Monday, April 25, 2011 44
  45. 45. 1 <?php 2 $variavel_1 = "Uma string"; 3 $variavel_2 = Outra string; 4 5 // Concatenando strings 6 echo $variavel_1 . $variavel_2;Monday, April 25, 2011 45
  46. 46. 1 <?php 2 $x = 1; // inteiro 3 $y = 10.99; // float (double) 4 $z = $x*$y; 5 $a = $x+"1"; // 2 (int) 6 $b = $x."1"; // 11 (string)Monday, April 25, 2011 46
  47. 47. 1 <?php 2 $x = 1; 3 if ( $x == 1 ) { 4 echo "x == 1"; 5 } else if ( $x > 1 ) { 6 echo "x maior que 1"; 7 } else { 8 echo "x menor que 1"; 9 }Monday, April 25, 2011 47
  48. 48. 1 <?php 2 for ( $i=0; $i<=9; $i++ ) { 3 echo .; 4 } 5 6 echo PHP_EOL; // Quebra de linha 7 8 while ( $i > 0 ) { 9 echo .; 10 $i--; 11 }Monday, April 25, 2011 48
  49. 49. 1 <?php 2 $a = array(); 3 $a[2009] = "Lancado PHP 5.3"; 4 $a[1995] = Criado PHP; 5 $a[2000] = "Lancado PHP 4"; 6 $a[2004] = "Lancado PHP 5"; 7 8 asort($a); 9 foreach ($a as $ano=>$texto) { 10 echo "Em {$ano}: $texto" . PHP_EOL ; 11 } 12 /* 13 Em 1995: Criado PHP 14 Em 2000: Lancado PHP 4 15 Em 2004: Lancado PHP 5 16 Em 2009: Lancado PHP 5.3 17 */Monday, April 25, 2011 49
  50. 50. 1 <?php 2 function somar($a, $b) { 3 return $a + $b; 4 } 5 6 function debug($a , $tag = [Debug] ) { 7 $tipo = gettype($a); 8 echo $tag . $a . " ({$tipo})"; 9 } 10 11 echo somar(2,3) . PHP_EOL ; // 5 12 echo debug("42"); // [Debug] 42 (string)Monday, April 25, 2011 50
  51. 51. 1 <?php 2 namespace HTTP; 3 class Request { // extends Data_Container 4 // implements HTTP_Object 5 protected $_type; 6 const TYPE_GET = GET; 7 8 public function __construct($t) { 9 $this->type = $t; 10 } 11 12 public function getType() { 13 return $this->type; 14 } 15 16 public static function getTypes() { 17 return array(self::TYPE_GET); 18 } 19 } 20 21 $o = new Request(POST); 22 echo $o->getType() . PHP_EOL; // POST 23 24 print_r( Request::getTypes() );Monday, April 25, 2011 51
  52. 52. 1 <?php 2 include /path/para/arquivo.php; 3 // include_once 4 // require 5 // require_once 6 7 $o = new Classe_Do_Arquivo();Monday, April 25, 2011 52
  53. 53. 1 <?php 2 if ( 10 == "10 vacas" ) { 3 echo "Verdade"; 4 } 5 6 if ( "falso" == true ) { 7 echo "Verdade"; 8 } 9 10 if ( 010 == 8 ) { 11 echo "Verdade"; 12 } 13 14 if ( "" == false ) { 15 echo "Verdade"; 16 }Monday, April 25, 2011 53
  54. 54. 1 <?php 2 $dsn = "mysql:dbname=test;host=localhost"; 3 $banco = new Pdo($dsn,user,pass); 4 5 $sql = "SELECT nome 6 FROM usuarios 7 WHERE id = ?"; 8 $st = $banco->prepare($sql); 9 $res = $st->execute(array(42)); 10 11 foreach ($res as $row) { 12 echo "Nome: ".$row->nome; 13 }Monday, April 25, 2011 54
  55. 55. 1 <?php 2 $produto = "Desconhecido"; 3 // $_GET, $_SESSION, $_COOKIE 4 if ( isset($_POST[produto]) ) { 5 echo $produto = filter_input(INPUT_POST, produto); 6 } 7 ?> 8 <form action="" method="POST"> 9 <input name="produto" value="<?php echo $produto ?>"> 10 <input type="submit" /> 11 </form>Monday, April 25, 2011 55
  56. 56. MERCADO DE TRABALHOMonday, April 25, 2011 56
  57. 57. MERCADO DE TRABALHO Sobrinhos Profissionais •Copiou •Estudo constante •Colou •Valorizam o mercado •Funciounou •Em falta no mercado •Beleza!Monday, April 25, 2011 57
  58. 58. PROFISSIONAISMonday, April 25, 2011 58
  59. 59. PROFISSIONAIS Sênior Pleno JúniorMonday, April 25, 2011 59
  60. 60. COMEÇANDOMonday, April 25, 2011 60
  61. 61. COMEÇANDO • Controle de versões • Debug • Um ou mais frameworks • Testes (Unitários, Comportamentais e Interface)Monday, April 25, 2011 61
  62. 62. ALÉM DO SÊNIORMonday, April 25, 2011 62
  63. 63. ALÉM DO SÊNIOR • Contribuição em projetos Open Source • Contribuição com o PHP em si • Certificação (ZCE)Monday, April 25, 2011 63
  64. 64. 5 DICASMonday, April 25, 2011 64
  65. 65. Seja ágil (metodologia)Monday, April 25, 2011 65
  66. 66. Não se importe com performanceMonday, April 25, 2011 66
  67. 67. LeiaMonday, April 25, 2011 67
  68. 68. Seja 2.0, compartilhe.Monday, April 25, 2011 68
  69. 69. LeiaMonday, April 25, 2011 69
  70. 70. NOTA FINALMonday, April 25, 2011 70
  71. 71. Sabe quantos anos uma tecnologia demorou para atingir um público de 50m de pessoas?Monday, April 25, 2011 71
  72. 72. Rádio: 38 anosMonday, April 25, 2011 72
  73. 73. TV: 13 anosMonday, April 25, 2011 73
  74. 74. Internet: 4 anosMonday, April 25, 2011 74
  75. 75. iPOD: 3 anosMonday, April 25, 2011 75
  76. 76. Facebook: 2 anosMonday, April 25, 2011 76
  77. 77. Sabia que os dez empregos mais requisitados em 2010Monday, April 25, 2011 77
  78. 78. Não existiam em 2004! Mais de metade é de TI.Monday, April 25, 2011 78
  79. 79. ResumindoMonday, April 25, 2011 79
  80. 80. Vocês estudam para empregos que ainda não existem...Monday, April 25, 2011 80
  81. 81. ... para usar tecnologias que serão inventadas ...Monday, April 25, 2011 81
  82. 82. ... para resolver problemas que nem são problemas ainda.Monday, April 25, 2011 82
  83. 83. ConcluindoMonday, April 25, 2011 83
  84. 84. LEIAM PO*$# !!Monday, April 25, 2011 84
  85. 85. PHP PROGRAMAÇÃO PODEROSA Autores: Gutmans, Bakken, Rethans ISBN: 8576080818 Editora: Alta BooksMonday, April 25, 2011 85
  86. 86. PHP OBJETOS, PADRÕES E PRÁTICA Autor: Matt Zandstra ISBN: 9788576082415 Editora: Apress / Alta BooksMonday, April 25, 2011 86
  87. 87. PERGUNTAS? @augustohp / augusto@phpsp.org.brMonday, April 25, 2011 87

×