0
Despertando para
                   o PHP Rafael Dohms
Friday, January 29, 2010
PHP
       abbr PHP [ˌpiː eitʃ ˈpiː]
      Abreviatura de PHP HyperText Preprocessor; 1.
      Linguagem Server-Side focad...
PHP
       abbr PHP [ˌpiː eitʃ ˈpiː]
      Abreviatura de PHP HyperText Preprocessor;

      1. Linguagem Server-Side foca...
Quem é Rafael Dohms?
                Rafael Dohms é graduado Engenheiro da Computação
                pelo UniCEUB, com MB...
Arquitetura
        de um acesso




Friday, January 29, 2010
Arquitetura
        de um acesso




Friday, January 29, 2010
Arquitetura
        de um acesso

               http://www.php.net




Friday, January 29, 2010
Arquitetura
        de um acesso

               http://www.php.net




Friday, January 29, 2010
Arquitetura
        de um acesso

               http://www.php.net




Friday, January 29, 2010
Arquitetura
        de um acesso

               http://www.php.net



                                    Servidor HTTP

...
Arquitetura
        de um acesso

               http://www.php.net



                                           Servidor...
Arquitetura                                  C:

        de um acesso

                                                  H...
Quem usa PHP?




Friday, January 29, 2010
A escolha
                       Por que PHP?




Friday, January 29, 2010
Cliente/Gerente
             • Custo baixo
                           • Praticamente todo ecossistema PHP é gratuito
     ...
Desenvolvedor
             • Baixa curva de Aprendizado
                           • Sintaxe simples, material amplo
     ...
PHP Fácil e Simples
                            XAMPP - www.apachefriends.org
                            Zend Server CE -...
Codando PHP
             • IDE’s
                           • Zend Studio (Eclipse)
                           • PDT (Ecli...
Rodando PHP

             • Web
                           • http://seusite.com/index.php
             • Linha de comando
...
Show me the
         code!




Friday, January 29, 2010
Sintaxe básica
          <?php                                       Hello World!
                                        ...
Sintaxe básica
          <?php                                       Hello World!
                                        ...
Sintaxe básica
          <?php                                       Hello World!
                                        ...
Sintaxe básica
          <?php                                       Hello World!
                                        ...
Sintaxe básica
          <?php                                       Hello World!
                                        ...
Sintaxe básica
          <?php                                       Hello World!
                                        ...
Sintaxe básica
          <?php                                       Hello World!
                                        ...
Sintaxe básica
          <?php                                       Hello World!
                                        ...
Tipagem fraca
            <?php

            $a = "2";                              $a => 2/string
            echo '$a =>...
Tipagem fraca
            <?php
                            Tipos do PHP:
            $a = "2";                           ...
Tipos: Array e Hashes
              <?php                                 Array
                                          ...
Condicionais: If
            <?php

            $a = true;
            $b = false;

            if ($a){
                e...
Condicionais: If
            <?php

            $a = true;
            $b = false;
                           O que é fals...
Condicionais: Switch
          <?php
                                               Cuidados com Tipagem Fraca
          $...
Loops: For e Foreach

             <?php

             $a = array('a', 'b', 'c');

             for ($i = 0; $i < count($a...
Paradigmas: Estrutural
           <?php                          3
                                          3
           ...
Paradigmas: OO
           <?php                                                       Scott
                              ...
Manipulação de
                               Strings
         <?php                                        HELLO WORLD!
 ...
Database

          <?php

          $db = new PDO('mysql:dbname=testdb;host=127.0.0.1', 'user', 'passwd');

          $qr...
File System

             <?php

             $file = 'exemplo.txt';

             file_put_contents($file, 'conteudo do a...
SuperGlobals e
                            Formulários
                           <form action"" method="POST">
          ...
SuperGlobals e
                            Formulários
                           <form action"" method="POST">
          ...
Procure evitar!

             • Código spaghetti
                           • Misturar lógica de negócio e código HTML
   ...
O Mercado




                                 http://www.flickr.com/photos/manuelpichler/
          como ganhar dinheiro

...
Iniciante

        $




                                 $$$$$
                           Jedi Master
Friday, January 29,...
Iniciante

        $




                                 $$$$$
                           Jedi Master
Friday, January 29,...
Iniciante

        $

                           Controle de Versão




                                                $$...
Iniciante                Debugging


        $

                           Controle de Versão




                        ...
Iniciante                           Debugging


        $

                                      Controle de Versão




  ...
Iniciante                                        Debugging


        $

                                                  ...
Iniciante                                             Debugging


        $

                           OO                ...
Iniciante                                             Debugging


        $

                           OO                ...
Iniciante                                             Debugging


        $

                           OO                ...
Os dois lados
             • “Sobrinhos”
                           • Desvalorização do mercado
                          ...
Certificação
                                   Zend Certified Engineer - PHP 5

             • Pode ser um critério de dese...
Construa o seu nome


             • Escreva! (blog, artigos, revistas)
             • Participe! (GU, Eventos)
          ...
Ecossistema




                                         http://www.flickr.com/photos/hlegius/
                           F...
O servidor
                                  Escolha seu sabor

       LAMP                LAPP       WAMP        WIPP   W...
Misture e Combine...
             • Multiplataforma
                           • *Nix, BSD, Windows, ...
             • Ba...
Frameworks

             • Abstraem camadas inferiores
             • Evitam que você se repita (DRY)
             • Aumen...
Não deixe de estudar
             • XDebug
                           • debugging / profiling
             • Controle de ve...
Comunidade




                                   http://www.flickr.com/photos/skoop/
              sempre pronta para
    ...
Movido à Comunidade
             • Core Developers
                           • Escutam a comunidade e desenvolvem o PHP
 ...
Os Canais

             • Grupos de Usuários (GU)
                           • Presentes em 20 dos 26 estados brasileiros
...
Quero aprender!
             • Procure o GU mais perto de você: www.php.org.br
                           • Em São Paulo: ...
dúvidas?




Friday, January 29, 2010
Twitter: @rdohms




                           Obrigado!

                                        Rafael Dohms
          ...
Upcoming SlideShare
Loading in...5
×

Despertando para o PHP

3,420

Published on

Um a breve introdução ao mundo PHP, sintaxe, mercado e ecossistema

Published in: Technology
2 Comments
6 Likes
Statistics
Notes
No Downloads
Views
Total Views
3,420
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
123
Comments
2
Likes
6
Embeds 0
No embeds

No notes for slide

Transcript of "Despertando para o PHP"

  1. 1. Despertando para o PHP Rafael Dohms Friday, January 29, 2010
  2. 2. PHP abbr PHP [ˌpiː eitʃ ˈpiː] Abreviatura de PHP HyperText Preprocessor; 1. Linguagem Server-Side focada em criação de sistemas para a web; 2. Criada por Rasmus Ledorf em 94 e apoiada pelos fundadores da Zend; 3. Sintaxe simples com influências fortes de C, Perl e Java; 4. Linguagem dominante na internet moderna utilizada em mais de 21M domínios; 5. Terceira colocada do Ranking TIOBE; 6. Fácil de aprender, díficil de dominar. Friday, January 29, 2010
  3. 3. PHP abbr PHP [ˌpiː eitʃ ˈpiː] Abreviatura de PHP HyperText Preprocessor; 1. Linguagem Server-Side focada em criação de sistemas para a web; 2. Criada por Rasmus Ledorf em 94 e apoiada pelos fundadores da Zend; 3. Sintaxe simples com influências fortes de C, Perl e Java; 4. Linguagem dominante na internet moderna utilizada em mais de 21M domínios; 5. Terceira colocada do Ranking TIOBE; 6. Fácil de aprender, díficil de dominar. Friday, January 29, 2010
  4. 4. Quem é Rafael Dohms? Rafael Dohms é graduado Engenheiro da Computação pelo UniCEUB, com MBA em Projetos pela FGV. Tem 9 anos de experiência no mercado PHP e atualmente ocupa o cargo de Desenvolvedor Sênior e Especialista em PHP na empresa sul-africana SWAT/MIH. É certificado ZCE PHP5. Grande agitador da comunidade PHP é co-fundador do PHPDF e atual coordenador do PHPSP. Contribui ativamente na área de testes do PHP e é Host do PHPSPCast, o primeiro podcast sobre PHP do Brazil. Friday, January 29, 2010
  5. 5. Arquitetura de um acesso Friday, January 29, 2010
  6. 6. Arquitetura de um acesso Friday, January 29, 2010
  7. 7. Arquitetura de um acesso http://www.php.net Friday, January 29, 2010
  8. 8. Arquitetura de um acesso http://www.php.net Friday, January 29, 2010
  9. 9. Arquitetura de um acesso http://www.php.net Friday, January 29, 2010
  10. 10. Arquitetura de um acesso http://www.php.net Servidor HTTP Friday, January 29, 2010
  11. 11. Arquitetura de um acesso http://www.php.net Servidor HTTP HTML Friday, January 29, 2010
  12. 12. Arquitetura C: de um acesso HTML http://www.php.net Servidor HTTP HTML Friday, January 29, 2010
  13. 13. Quem usa PHP? Friday, January 29, 2010
  14. 14. A escolha Por que PHP? Friday, January 29, 2010
  15. 15. Cliente/Gerente • Custo baixo • Praticamente todo ecossistema PHP é gratuito • Mão-de-obra • Programadores iniciantes e intermediários não faltam • Performance e Escalabilidade • Testado e provado Friday, January 29, 2010
  16. 16. Desenvolvedor • Baixa curva de Aprendizado • Sintaxe simples, material amplo • Oportunidades • O mercado tem abundância de vagas • Robusta • Flexível e mutante, pode fazer tudo que você imaginar Friday, January 29, 2010
  17. 17. PHP Fácil e Simples XAMPP - www.apachefriends.org Zend Server CE -http://www.zend.com/ XAMPP - www.apachefriends.org WAMP - www.wampserver.com Zend Server CE -http://www.zend.com/ MAMP -www.mamp.info XAMPP - www.apachefriends.org Zend Server CE -http://www.zend.com/ Friday, January 29, 2010
  18. 18. Codando PHP • IDE’s • Zend Studio (Eclipse) • PDT (Eclipse) • Aptana (Eclipse) • Komodo • NetBeans Vantagens de uma IDE • Text Editors - Autocomplete • TextMate (PHP Bundle) - Integração com VCS • VIM - Debugging e profiling integrado - Ferramentas em geral • EMACS Friday, January 29, 2010
  19. 19. Rodando PHP • Web • http://seusite.com/index.php • Linha de comando • php arquivo.php Friday, January 29, 2010
  20. 20. Show me the code! Friday, January 29, 2010
  21. 21. Sintaxe básica <?php Hello World! Hello Campus Party! Hello Campus Party! $string = "Hello World! n"; Como vai? echo $string; # Substituir World por Campus Party $string = str_replace("World", "Campus Party", $string); echo $string; // Adicionar um "Como vai?" $string = $string . "Como vai? n"; echo $string; ?> Friday, January 29, 2010
  22. 22. Sintaxe básica <?php Hello World! Hello Campus Party! Hello Campus Party! $string = "Hello World! n"; Como vai? echo $string; # Substituir World por Campus Party $string = str_replace("World", "Campus Party", $string); echo $string; // Adicionar um "Como vai?" $string = $string . "Como vai? n"; echo $string; ?> Friday, January 29, 2010
  23. 23. Sintaxe básica <?php Hello World! Hello Campus Party! Hello Campus Party! $string = "Hello World! n"; Como vai? echo $string; # Substituir World por Campus Party $string = str_replace("World", "Campus Party", $string); echo $string; // Adicionar um "Como vai?" $string = $string . "Como vai? n"; echo $string; ?> Friday, January 29, 2010
  24. 24. Sintaxe básica <?php Hello World! Hello Campus Party! Hello Campus Party! $string = "Hello World! n"; Como vai? echo $string; # Substituir World por Campus Party $string = str_replace("World", "Campus Party", $string); echo $string; // Adicionar um "Como vai?" $string = $string . "Como vai? n"; echo $string; ?> Friday, January 29, 2010
  25. 25. Sintaxe básica <?php Hello World! Hello Campus Party! Hello Campus Party! $string = "Hello World! n"; Como vai? echo $string; # Substituir World por Campus Party $string = str_replace("World", "Campus Party", $string); echo $string; // Adicionar um "Como vai?" $string = $string . "Como vai? n"; echo $string; ?> Friday, January 29, 2010
  26. 26. Sintaxe básica <?php Hello World! Hello Campus Party! Hello Campus Party! $string = "Hello World! n"; Como vai? echo $string; # Substituir World por Campus Party $string = str_replace("World", "Campus Party", $string); echo $string; // Adicionar um "Como vai?" $string = $string . "Como vai? n"; echo $string; ?> Friday, January 29, 2010
  27. 27. Sintaxe básica <?php Hello World! Hello Campus Party! Hello Campus Party! $string = "Hello World! n"; Como vai? echo $string; # Substituir World por Campus Party $string = str_replace("World", "Campus Party", $string); echo $string; // Adicionar um "Como vai?" $string = $string . "Como vai? n"; echo $string; ?> Friday, January 29, 2010
  28. 28. Sintaxe básica <?php Hello World! Hello Campus Party! Hello Campus Party! $string = "Hello World! n"; Como vai? echo $string; # Substituir World por Campus Party $string = str_replace("World", "Campus Party", $string); echo $string; // Adicionar um "Como vai?" $string = $string . "Como vai? n"; echo $string; ?> Friday, January 29, 2010
  29. 29. Tipagem fraca <?php $a = "2"; $a => 2/string echo '$a => ' . $a . '/' . gettype($a) . PHP_EOL; $a = "2" + 1; $a => 3/integer echo '$a => ' . $a . '/' . gettype($a) . PHP_EOL; $a = 1; $a => 1/integer echo '$a => ' . $a . '/' . gettype($a) . PHP_EOL; $a = 1 . "2"; $a => 12/string echo '$a => ' . $a . '/' . gettype($a) . PHP_EOL; ?> Friday, January 29, 2010
  30. 30. Tipagem fraca <?php Tipos do PHP: $a = "2"; $a => 2/string echo '$a => ' . $a . '/' . gettype($a) . PHP_EOL; Boolean $a = "2" + 1; Integer $a => 3/integer echo '$a => ' . $a . '/' . gettype($a) . PHP_EOL; Float (ou double) $a = 1; String $a => 1/integer echo '$a => ' Array . $a . '/' . gettype($a) . PHP_EOL; Object $a = 1 . "2"; $a => 12/string echo '$a => ' Resource . $a . '/' . gettype($a) . PHP_EOL; NULL ?> Friday, January 29, 2010
  31. 31. Tipos: Array e Hashes <?php Array ( // Um array [0] => a $a = array('a', 'b', 'c'); [1] => b [2] => c print_r($a); ) Array ( //Um Hash [a] => b $b = array('a' => 'b', 'c' => 'd'); ) [c] => d print_r($b); a d // Acessando dados Array echo $a[0] . PHP_EOL; ( echo $b['c'] . PHP_EOL; [0] => c [1] => b [2] => a //Funções ) rsort($a); c print_r($a); Array ( [0] => b echo array_shift($a) . PHP_EOL; [1] => a print_r($a); ) Friday, January 29, 2010
  32. 32. Condicionais: If <?php $a = true; $b = false; if ($a){ echo "A" . PHP_EOL; } if ($b){ echo "B" . PHP_EOL; }else{ echo "B?" . PHP_EOL; } if ($a || $b){ echo "A || B"; } if ($a && $b){ echo "A && B"; } Friday, January 29, 2010
  33. 33. Condicionais: If <?php $a = true; $b = false; O que é falso no PHP: if ($a){ echo "A" . FALSE PHP_EOL; } 0 (zero) (integer) if ($b){ 0.0 (zero) (float) echo "B" . PHP_EOL; “0” (zero) (string) }else{ echo "B?" . PHP_EOL; vazia (“”) String } Array Vazio NULL || B"; } if ($a || $b){ echo "A if ($a && $b){ echo "A && B"; } Friday, January 29, 2010
  34. 34. Condicionais: Switch <?php Cuidados com Tipagem Fraca $a = "joao"; switch($a){ “string” => integer == 0 case 'jose': echo "jose?" . PHP_EOL; break; case 0: echo "zero?" . PHP_EOL; break; case true: echo "verdadeiro?" . PHP_EOL; break; case 'joao': echo "joao!" . PHP_EOL; default: echo "qualquer um?!" . PHP_EOL; } zero? Friday, January 29, 2010
  35. 35. Loops: For e Foreach <?php $a = array('a', 'b', 'c'); for ($i = 0; $i < count($a); $i++){ echo $a[$i] . PHP_EOL; } a b c foreach( $a as $key => $letra){ echo $key . " => " . $letra. PHP_EOL; 0 => a 1 => b } 2 => c Friday, January 29, 2010
  36. 36. Paradigmas: Estrutural <?php 3 3 50 function add($a, $b){ return $a + $b; } echo add(1,2) . PHP_EOL; function divide($a, $b = 2){ return $a/$b; } echo divide(6) . PHP_EOL; function multiply(&$a, $b){ $a = $a * $b; } $a = 10; multiply($a, 5); echo $a . PHP_EOL; Friday, January 29, 2010
  37. 37. Paradigmas: OO <?php Scott HAL Model 2.34 class HAL // extends Computer // implements UserInterface { public $nome; public function __construct($nome) { $this->nome = $nome; } public function whoareyou() { echo $this->nome . PHP_EOL; } public static function version() { echo __CLASS__ . " Model 2.34" . PHP_EOL; } } $a = new HAL('Scott'); $a->whoareyou(); HAL::version(); Friday, January 29, 2010
  38. 38. Manipulação de Strings <?php HELLO WORLD! Hello World!Hello World!Hello World! Uryyb Jbeyq! $a = "Hello World!"; 12 !dlroW olleH echo strtoupper($a) . PHP_EOL; echo str_repeat($a, 3) . PHP_EOL; echo str_rot13($a) . PHP_EOL; echo strlen($a) . PHP_EOL; echo strrev($a) . PHP_EOL; Friday, January 29, 2010
  39. 39. Database <?php $db = new PDO('mysql:dbname=testdb;host=127.0.0.1', 'user', 'passwd'); $qry = $db->prepare('SELECT * FROM tabela WHERE id = ?'); $res = $qry->execute(array(22)); //SELECT * FROM tabela WHERE id = 22 foreach($res as $linha){ echo $linha->id . PHP_EOL; } Friday, January 29, 2010
  40. 40. File System <?php $file = 'exemplo.txt'; file_put_contents($file, 'conteudo do arquivo'); echo file_get_contents($file) . PHP_EOL; chmod($file, "777"); Friday, January 29, 2010
  41. 41. SuperGlobals e Formulários <form action"" method="POST"> <input id="nome" name="nome"> </form> <?php $nome = filterInput($_POST['nome']); Friday, January 29, 2010
  42. 42. SuperGlobals e Formulários <form action"" method="POST"> <input id="nome" name="nome"> </form> <?php SuperGlobals $nome = filterInput($_POST['nome']); $_GET $_POST $_COOKIE $_SESSION Friday, January 29, 2010
  43. 43. Procure evitar! • Código spaghetti • Misturar lógica de negócio e código HTML • Consumir Super Globals sem filtrar • $_POST/GET... não devem ser confiadas, sempre filtre seu conteudo • “Filtre entradas, Escape saídas” Friday, January 29, 2010
  44. 44. O Mercado http://www.flickr.com/photos/manuelpichler/ como ganhar dinheiro Friday, January 29, 2010
  45. 45. Iniciante $ $$$$$ Jedi Master Friday, January 29, 2010
  46. 46. Iniciante $ $$$$$ Jedi Master Friday, January 29, 2010
  47. 47. Iniciante $ Controle de Versão $$$$$ Jedi Master Friday, January 29, 2010
  48. 48. Iniciante Debugging $ Controle de Versão $$$$$ Jedi Master Friday, January 29, 2010
  49. 49. Iniciante Debugging $ Controle de Versão Profiling $$$$$ Jedi Master Friday, January 29, 2010
  50. 50. Iniciante Debugging $ Controle de Versão Frameworks Profiling $$$$$ Jedi Master Friday, January 29, 2010
  51. 51. Iniciante Debugging $ OO Controle de Versão Frameworks Profiling $$$$$ Jedi Master Friday, January 29, 2010
  52. 52. Iniciante Debugging $ OO Controle de Versão Testes Frameworks Profiling $$$$$ Jedi Master Friday, January 29, 2010
  53. 53. Iniciante Debugging $ OO Controle de Versão Design Patterns Testes Frameworks Profiling $$$$$ Jedi Master Friday, January 29, 2010
  54. 54. Os dois lados • “Sobrinhos” • Desvalorização do mercado • Média de salários menor • Estagnado. • O Desenvolvedor • Procuram valorizar o mercado • Salários melhores • Faltam profissionais Friday, January 29, 2010
  55. 55. Certificação Zend Certified Engineer - PHP 5 • Pode ser um critério de desempate • Polêmica: decoreba X qualidade do dev. • Não é fácil, possui muitos detalhes • Prova com peguinhas • Estudar casos extraordinários e parâmetros incomuns • De uma forma geral: Vale a pena! Friday, January 29, 2010
  56. 56. Construa o seu nome • Escreva! (blog, artigos, revistas) • Participe! (GU, Eventos) • Contribua! (Frameworks, PHP, OSS ...) Friday, January 29, 2010
  57. 57. Ecossistema http://www.flickr.com/photos/hlegius/ Ferramentas Friday, January 29, 2010
  58. 58. O servidor Escolha seu sabor LAMP LAPP WAMP WIPP WIMP Friday, January 29, 2010
  59. 59. Misture e Combine... • Multiplataforma • *Nix, BSD, Windows, ... • Banco de Dados • Oracle, SQL Server, MySQL, PostGresSQL, ... • Servidores • Apache, IIS, LightHTTP... Friday, January 29, 2010
  60. 60. Frameworks • Abstraem camadas inferiores • Evitam que você se repita (DRY) • Aumentam a produtividade da equipe • Use moderadamente e adequadamente Friday, January 29, 2010
  61. 61. Não deixe de estudar • XDebug • debugging / profiling • Controle de versão (Subversion, git...) • phpDoc - Documentação intra-código • Design Patterns - como montar seu código • PHPUnit - Testes unitários Friday, January 29, 2010
  62. 62. Comunidade http://www.flickr.com/photos/skoop/ sempre pronta para ajudar Friday, January 29, 2010
  63. 63. Movido à Comunidade • Core Developers • Escutam a comunidade e desenvolvem o PHP • Líderes da Comunidade • Promovem o PHP em seu ambiente • Contribuidores • Constróem todo resto (Frameworks, ferramentas..) • Desenvolvedores Friday, January 29, 2010
  64. 64. Os Canais • Grupos de Usuários (GU) • Presentes em 20 dos 26 estados brasileiros • Freenode • #phpc (en), #php-avancado, #php-br, #phpsp • Listas de discussão, twitter ... Friday, January 29, 2010
  65. 65. Quero aprender! • Procure o GU mais perto de você: www.php.org.br • Em São Paulo: www.phpsp.org.br • Site do PHP: www.php.net • Google: PHP • Comece! Escolha um projeto pequeno e aproveite seu tempo livre Fique ligado na programação do Campus Party/PHPSP Friday, January 29, 2010
  66. 66. dúvidas? Friday, January 29, 2010
  67. 67. Twitter: @rdohms Obrigado! Rafael Dohms www.rafaeldohms.com.br rafael@rafaeldohms.com.br Friday, January 29, 2010
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×