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




Friday, January 29, 2010
Arquitetura
        de um acesso

               http://www.php.net



                                           Servidor HTTP
                                    HTML




Friday, January 29, 2010
Arquitetura                                  C:

        de um acesso

                                                  HTML
               http://www.php.net



                                           Servidor HTTP
                                    HTML




Friday, January 29, 2010
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
             • Mão-de-obra
                           • Programadores iniciantes e intermediários não
                             faltam
             • Performance e Escalabilidade
                           • Testado e provado


Friday, January 29, 2010
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
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
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
Rodando PHP

             • Web
                           • http://seusite.com/index.php
             • Linha de comando
                           • php arquivo.php




Friday, January 29, 2010
Show me the
         code!




Friday, January 29, 2010
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
SuperGlobals e
                            Formulários
                           <form action"" method="POST">
                               <input id="nome" name="nome">
                           </form>

                           <?php

                           $nome = filterInput($_POST['nome']);




Friday, January 29, 2010
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
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
O Mercado




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




Friday, January 29, 2010
Iniciante

        $




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

        $




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

        $

                           Controle de Versão




                                                $$$$$
                                     Jedi Master
Friday, January 29, 2010
Iniciante                Debugging


        $

                           Controle de Versão




                                                $$$$$
                                     Jedi Master
Friday, January 29, 2010
Iniciante                           Debugging


        $

                                      Controle de Versão




                           Profiling                        $$$$$
                                                Jedi Master
Friday, January 29, 2010
Iniciante                                        Debugging


        $

                                                   Controle de Versão




                           Frameworks



                                        Profiling                        $$$$$
                                                             Jedi Master
Friday, January 29, 2010
Iniciante                                             Debugging


        $

                           OO                           Controle de Versão




                                Frameworks



                                             Profiling                        $$$$$
                                                                  Jedi Master
Friday, January 29, 2010
Iniciante                                             Debugging


        $

                           OO                           Controle de Versão




                                                               Testes

                                Frameworks



                                             Profiling                        $$$$$
                                                                  Jedi Master
Friday, January 29, 2010
Iniciante                                             Debugging


        $

                           OO                           Controle de Versão
                                 Design Patterns




                                                               Testes

                                Frameworks



                                             Profiling                        $$$$$
                                                                  Jedi Master
Friday, January 29, 2010
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
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
Construa o seu nome


             • Escreva! (blog, artigos, revistas)
             • Participe! (GU, Eventos)
             • Contribua! (Frameworks, PHP, OSS ...)



Friday, January 29, 2010
Ecossistema




                                         http://www.flickr.com/photos/hlegius/
                           Ferramentas




Friday, January 29, 2010
O servidor
                                  Escolha seu sabor

       LAMP                LAPP       WAMP        WIPP   WIMP




Friday, January 29, 2010
Misture e Combine...
             • Multiplataforma
                           • *Nix, BSD, Windows, ...
             • Banco de Dados
                           • Oracle, SQL Server, MySQL, PostGresSQL, ...
             • Servidores
                           • Apache, IIS, LightHTTP...


Friday, January 29, 2010
Frameworks

             • Abstraem camadas inferiores
             • Evitam que você se repita (DRY)
             • Aumentam a produtividade da equipe
             • Use moderadamente e
               adequadamente



Friday, January 29, 2010
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
Comunidade




                                   http://www.flickr.com/photos/skoop/
              sempre pronta para
                   ajudar




Friday, January 29, 2010
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
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
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
dúvidas?




Friday, January 29, 2010
Twitter: @rdohms




                           Obrigado!

                                        Rafael Dohms
                                www.rafaeldohms.com.br
                              rafael@rafaeldohms.com.br
Friday, January 29, 2010

Despertando para o PHP

  • 1.
    Despertando para o PHP Rafael Dohms Friday, January 29, 2010
  • 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.
    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.
    Quem é RafaelDohms? 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.
    Arquitetura de um acesso Friday, January 29, 2010
  • 6.
    Arquitetura de um acesso Friday, January 29, 2010
  • 7.
    Arquitetura de um acesso http://www.php.net Friday, January 29, 2010
  • 8.
    Arquitetura de um acesso http://www.php.net Friday, January 29, 2010
  • 9.
    Arquitetura de um acesso http://www.php.net Friday, January 29, 2010
  • 10.
    Arquitetura de um acesso http://www.php.net Servidor HTTP Friday, January 29, 2010
  • 11.
    Arquitetura de um acesso http://www.php.net Servidor HTTP HTML Friday, January 29, 2010
  • 12.
    Arquitetura C: de um acesso HTML http://www.php.net Servidor HTTP HTML Friday, January 29, 2010
  • 13.
    Quem usa PHP? Friday,January 29, 2010
  • 14.
    A escolha Por que PHP? Friday, January 29, 2010
  • 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.
    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.
    PHP Fácil eSimples 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.
    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.
    Rodando PHP • Web • http://seusite.com/index.php • Linha de comando • php arquivo.php Friday, January 29, 2010
  • 20.
    Show me the code! Friday, January 29, 2010
  • 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.
    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.
    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.
    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.
    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.
    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.
    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.
    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.
    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.
    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.
    Tipos: Array eHashes <?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.
    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.
    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.
    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.
    Loops: For eForeach <?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.
    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.
    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.
    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.
    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.
    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.
    SuperGlobals e Formulários <form action"" method="POST"> <input id="nome" name="nome"> </form> <?php $nome = filterInput($_POST['nome']); Friday, January 29, 2010
  • 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.
    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.
    O Mercado http://www.flickr.com/photos/manuelpichler/ como ganhar dinheiro Friday, January 29, 2010
  • 45.
    Iniciante $ $$$$$ Jedi Master Friday, January 29, 2010
  • 46.
    Iniciante $ $$$$$ Jedi Master Friday, January 29, 2010
  • 47.
    Iniciante $ Controle de Versão $$$$$ Jedi Master Friday, January 29, 2010
  • 48.
    Iniciante Debugging $ Controle de Versão $$$$$ Jedi Master Friday, January 29, 2010
  • 49.
    Iniciante Debugging $ Controle de Versão Profiling $$$$$ Jedi Master Friday, January 29, 2010
  • 50.
    Iniciante Debugging $ Controle de Versão Frameworks Profiling $$$$$ Jedi Master Friday, January 29, 2010
  • 51.
    Iniciante Debugging $ OO Controle de Versão Frameworks Profiling $$$$$ Jedi Master Friday, January 29, 2010
  • 52.
    Iniciante Debugging $ OO Controle de Versão Testes Frameworks Profiling $$$$$ Jedi Master Friday, January 29, 2010
  • 53.
    Iniciante Debugging $ OO Controle de Versão Design Patterns Testes Frameworks Profiling $$$$$ Jedi Master Friday, January 29, 2010
  • 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.
    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.
    Construa o seunome • Escreva! (blog, artigos, revistas) • Participe! (GU, Eventos) • Contribua! (Frameworks, PHP, OSS ...) Friday, January 29, 2010
  • 57.
    Ecossistema http://www.flickr.com/photos/hlegius/ Ferramentas Friday, January 29, 2010
  • 58.
    O servidor Escolha seu sabor LAMP LAPP WAMP WIPP WIMP Friday, January 29, 2010
  • 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.
    Frameworks • Abstraem camadas inferiores • Evitam que você se repita (DRY) • Aumentam a produtividade da equipe • Use moderadamente e adequadamente Friday, January 29, 2010
  • 61.
    Não deixe deestudar • 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.
    Comunidade http://www.flickr.com/photos/skoop/ sempre pronta para ajudar Friday, January 29, 2010
  • 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.
    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.
    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.
  • 67.
    Twitter: @rdohms Obrigado! Rafael Dohms www.rafaeldohms.com.br rafael@rafaeldohms.com.br Friday, January 29, 2010