SlideShare ist ein Scribd-Unternehmen logo
1 von 87
Downloaden Sie, um offline zu lesen
O quê, porquê e como.


                         Augusto Pascutti - @augustohp
Monday, April 25, 2011                               1
O QUE É?




Monday, April 25, 2011              2
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
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 C

Monday, April 25, 2011                                          4
UM POUCO DE HISTÓRIA




Monday, April 25, 2011                     5
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
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 internet
Monday, April 25, 2011                        7
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 internet
Monday, April 25, 2011                                                8
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, SPL

Monday, April 25, 2011                                                      9
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, FileInfo

Monday, April 25, 2011                                                             10
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 Unicode

Monday, April 25, 2011                                                                    11
HTTP O QUÊ?




Monday, April 25, 2011                 12
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
E EU KIKO?




Monday, April 25, 2011                14
E EU KIKO?



    • HTTP é o protocolo utilizado por toda aplicação na internet

    • Cliente (Navegador) e Servidor




Monday, April 25, 2011                                              15
ESTE É VOCÊ



                         Você quer acessar www.google.com com o
                              navegador de sua preferência.




Monday, April 25, 2011                                            16
O SERVIDOR RECEBE



                             Um servidor HTTP processa a requisição e
                                    devolve o recurso pedido.




Monday, April 25, 2011                                                  17
ESTE É VOCÊ



                         O navegador processar a resposta do
                          servidor e exibe a página para você.




Monday, April 25, 2011                                           18
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
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 XAMPP



Monday, April 25, 2011                                         20
PORQUE USAR PHP?




Monday, April 25, 2011                      21
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 maduro



Monday, April 25, 2011                                 22
BAIXO CUSTO




Monday, April 25, 2011                 23
BAIXO CUSTO



         O PHP pode funcionar em conjunto com uma infinidade de tecnologias, a
                       grande maioria é gratuita (Open Source)




Monday, April 25, 2011                                                           24
FLEXÍVEL




Monday, April 25, 2011              25
FLEXÍVEL




Monday, April 25, 2011              26
CURVA DE APRENDIZADO




Monday, April 25, 2011                 27
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
LARGAMENTE UTILIZADA?




Monday, April 25, 2011                29
LARGAMENTE UTILIZADA?




Monday, April 25, 2011                30
CONTRIBUEM




Monday, April 25, 2011                31
CONTRIBUEM




Monday, April 25, 2011                32
ROBUSTO




Monday, April 25, 2011             33
ROBUSTO



            Concepção atual para suportar de dezenas a milhares de requisições
                               por segundo sem problemas.




Monday, April 25, 2011                                                           34
ECOSSISTEMA
    • Comunidade

    • Frameworks, Componentes, CMSs

    • Integrated Development Environment (IDEs)

    • Ferramentas de Testes (Unitários, Comportamentais e Interface)

    • Integração Contínua

    • Ferramentas de Publicação

Monday, April 25, 2011                                                 35
COMUNIDADE




Monday, April 25, 2011                36
COMUNIDADE


    • Core developers do PHP

    • Contribuidores/Líderes de Projetos

    • Líderes de Grupo

    • Desenvolvedores




Monday, April 25, 2011                                  37
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.br



Monday, April 25, 2011                                   38
FRAMEWORK




Monday, April 25, 2011               39
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
COMO É O PHP?




Monday, April 25, 2011                   41
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.php



Monday, April 25, 2011                                  42
COMO ELE PARECE?




Monday, April 25, 2011                      43
1 <html>
   2     <body>
   3         <?php echo "Hello World"; ?>
   4     </body>
   5 </html>




Monday, April 25, 2011                  44
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
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
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
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
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
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
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
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
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
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
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
MERCADO DE TRABALHO




Monday, April 25, 2011                  56
MERCADO DE TRABALHO

                         Sobrinhos         Profissionais


     •Copiou                         •Estudo constante
     •Colou                          •Valorizam o mercado
     •Funciounou                     •Em falta no mercado
     •Beleza!


Monday, April 25, 2011                                      57
PROFISSIONAIS




Monday, April 25, 2011                   58
PROFISSIONAIS

                         Sênior



                         Pleno




                         Júnior


Monday, April 25, 2011                            59
COMEÇANDO




Monday, April 25, 2011               60
COMEÇANDO


    • Controle de versões

    • Debug

    • Um ou mais frameworks

    • Testes (Unitários, Comportamentais e Interface)




Monday, April 25, 2011                                  61
ALÉM DO SÊNIOR




Monday, April 25, 2011                    62
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
5 DICAS




Monday, April 25, 2011             64
Seja ágil (metodologia)




Monday, April 25, 2011                             65
Não se importe com
                          performance




Monday, April 25, 2011                        66
Leia




Monday, April 25, 2011          67
Seja 2.0, compartilhe.




Monday, April 25, 2011                            68
Leia




Monday, April 25, 2011          69
NOTA FINAL




Monday, April 25, 2011                70
Sabe quantos anos
                         uma tecnologia demorou
                         para atingir um público
                          de 50m de pessoas?




Monday, April 25, 2011                             71
Rádio: 38 anos




Monday, April 25, 2011                    72
TV: 13 anos




Monday, April 25, 2011                 73
Internet: 4 anos




Monday, April 25, 2011                      74
iPOD: 3 anos




Monday, April 25, 2011                  75
Facebook: 2 anos




Monday, April 25, 2011                      76
Sabia que os dez
                            empregos mais
                         requisitados em 2010




Monday, April 25, 2011                          77
Não existiam em
                                 2004!
                         Mais de metade é de TI.




Monday, April 25, 2011                             78
Resumindo




Monday, April 25, 2011               79
Vocês estudam para
                         empregos que ainda
                           não existem...




Monday, April 25, 2011                        80
... para usar tecnologias
                                      que
                            serão inventadas ...




Monday, April 25, 2011                               81
... para resolver
                          problemas que nem
                         são problemas ainda.




Monday, April 25, 2011                          82
Concluindo




Monday, April 25, 2011                83
LEIAM PO*$# !!




Monday, April 25, 2011                    84
PHP PROGRAMAÇÃO PODEROSA



                         Autores: Gutmans, Bakken, Rethans

                         ISBN: 8576080818

                         Editora: Alta Books




Monday, April 25, 2011                                       85
PHP OBJETOS, PADRÕES E PRÁTICA



                         Autor: Matt Zandstra

                         ISBN: 9788576082415

                         Editora: Apress / Alta Books




Monday, April 25, 2011                                  86
PERGUNTAS?
                         @augustohp / augusto@phpsp.org.br




Monday, April 25, 2011                                       87

Weitere ähnliche Inhalte

Ähnlich wie PHP - O que, porquê e como

Pós univem - Software Livre
Pós univem - Software LivrePós univem - Software Livre
Pós univem - Software LivreLeonardo Botega
 
Utilizando web services do google, yahoo! e twitter com php
Utilizando web services do google,       yahoo! e twitter com phpUtilizando web services do google,       yahoo! e twitter com php
Utilizando web services do google, yahoo! e twitter com phpHelton Ritter
 
Criando Webservices RESTFul com CakePHP
Criando Webservices RESTFul com CakePHPCriando Webservices RESTFul com CakePHP
Criando Webservices RESTFul com CakePHPRenan Gonçalves
 
Sistemas Operacionais 11 lamp
Sistemas Operacionais 11 lampSistemas Operacionais 11 lamp
Sistemas Operacionais 11 lampMauro Duarte
 
PUC/PFC - Criando seu blog no wordpress
PUC/PFC - Criando seu blog no wordpressPUC/PFC - Criando seu blog no wordpress
PUC/PFC - Criando seu blog no wordpressMarcello Cardoso
 
Introdução ao cake php
Introdução ao cake phpIntrodução ao cake php
Introdução ao cake phpFilipe Kulinski
 
Introdução ao php
Introdução ao phpIntrodução ao php
Introdução ao phpsecomp2011
 
HTML5.pptx
HTML5.pptxHTML5.pptx
HTML5.pptxLuanDev1
 
Introdução ao php
Introdução ao phpIntrodução ao php
Introdução ao phpMiguel Pinto
 
As tecnologias fundamentais da web - EGI 2015
As tecnologias fundamentais da web - EGI 2015As tecnologias fundamentais da web - EGI 2015
As tecnologias fundamentais da web - EGI 2015Newton Calegari
 
AspNet 5 & Redis - Escalando sua performance
AspNet 5 & Redis - Escalando sua performanceAspNet 5 & Redis - Escalando sua performance
AspNet 5 & Redis - Escalando sua performanceJosé Roberto Araújo
 
Apache Flink a Quarta Geração do Big Data
Apache Flink a Quarta Geração do Big DataApache Flink a Quarta Geração do Big Data
Apache Flink a Quarta Geração do Big DataAmbiente Livre
 
TDC2018SP | Trilha BigData - Apache Flink a Quarta Geracao do Big Data
TDC2018SP | Trilha BigData - Apache Flink a Quarta Geracao do Big Data TDC2018SP | Trilha BigData - Apache Flink a Quarta Geracao do Big Data
TDC2018SP | Trilha BigData - Apache Flink a Quarta Geracao do Big Data tdc-globalcode
 

Ähnlich wie PHP - O que, porquê e como (20)

Nodejs
NodejsNodejs
Nodejs
 
Pós univem - Software Livre
Pós univem - Software LivrePós univem - Software Livre
Pós univem - Software Livre
 
Utilizando web services do google, yahoo! e twitter com php
Utilizando web services do google,       yahoo! e twitter com phpUtilizando web services do google,       yahoo! e twitter com php
Utilizando web services do google, yahoo! e twitter com php
 
Criando Webservices RESTFul com CakePHP
Criando Webservices RESTFul com CakePHPCriando Webservices RESTFul com CakePHP
Criando Webservices RESTFul com CakePHP
 
Sistemas Operacionais 11 lamp
Sistemas Operacionais 11 lampSistemas Operacionais 11 lamp
Sistemas Operacionais 11 lamp
 
Otimização MySQL
Otimização MySQLOtimização MySQL
Otimização MySQL
 
PUC/PFC - Criando seu blog no wordpress
PUC/PFC - Criando seu blog no wordpressPUC/PFC - Criando seu blog no wordpress
PUC/PFC - Criando seu blog no wordpress
 
Curso html basico_aula-001
Curso html basico_aula-001Curso html basico_aula-001
Curso html basico_aula-001
 
Introdução ao cake php
Introdução ao cake phpIntrodução ao cake php
Introdução ao cake php
 
Frameworks PHP
Frameworks PHPFrameworks PHP
Frameworks PHP
 
Introdução ao php
Introdução ao phpIntrodução ao php
Introdução ao php
 
Introdução a Frameworks
Introdução a FrameworksIntrodução a Frameworks
Introdução a Frameworks
 
HTML5.pptx
HTML5.pptxHTML5.pptx
HTML5.pptx
 
PHP: Atualidade e Tendências
PHP: Atualidade e TendênciasPHP: Atualidade e Tendências
PHP: Atualidade e Tendências
 
Primeira Aula PHP
Primeira Aula PHPPrimeira Aula PHP
Primeira Aula PHP
 
Introdução ao php
Introdução ao phpIntrodução ao php
Introdução ao php
 
As tecnologias fundamentais da web - EGI 2015
As tecnologias fundamentais da web - EGI 2015As tecnologias fundamentais da web - EGI 2015
As tecnologias fundamentais da web - EGI 2015
 
AspNet 5 & Redis - Escalando sua performance
AspNet 5 & Redis - Escalando sua performanceAspNet 5 & Redis - Escalando sua performance
AspNet 5 & Redis - Escalando sua performance
 
Apache Flink a Quarta Geração do Big Data
Apache Flink a Quarta Geração do Big DataApache Flink a Quarta Geração do Big Data
Apache Flink a Quarta Geração do Big Data
 
TDC2018SP | Trilha BigData - Apache Flink a Quarta Geracao do Big Data
TDC2018SP | Trilha BigData - Apache Flink a Quarta Geracao do Big Data TDC2018SP | Trilha BigData - Apache Flink a Quarta Geracao do Big Data
TDC2018SP | Trilha BigData - Apache Flink a Quarta Geracao do Big Data
 

Mehr von Augusto Pascutti

Melhorando sua API com DSLs
Melhorando sua API com DSLsMelhorando sua API com DSLs
Melhorando sua API com DSLsAugusto Pascutti
 
Logs: O que comem, onde vivem e como se reproduzem.
Logs: O que comem, onde vivem e como se reproduzem.Logs: O que comem, onde vivem e como se reproduzem.
Logs: O que comem, onde vivem e como se reproduzem.Augusto Pascutti
 
TDD - Test Driven Development (em PHP)
TDD - Test Driven Development (em PHP)TDD - Test Driven Development (em PHP)
TDD - Test Driven Development (em PHP)Augusto Pascutti
 
Guia do mochileiro para escalabilidade
Guia do mochileiro para escalabilidadeGuia do mochileiro para escalabilidade
Guia do mochileiro para escalabilidadeAugusto Pascutti
 
Falhando miseralvelmente com PHP
Falhando miseralvelmente com PHPFalhando miseralvelmente com PHP
Falhando miseralvelmente com PHPAugusto Pascutti
 
SfCon: Test Driven Development
SfCon: Test Driven DevelopmentSfCon: Test Driven Development
SfCon: Test Driven DevelopmentAugusto Pascutti
 
Como escalar aplicações PHP
Como escalar aplicações PHPComo escalar aplicações PHP
Como escalar aplicações PHPAugusto Pascutti
 
Testar é bom, integrar é ainda melhor
Testar é bom, integrar é ainda melhorTestar é bom, integrar é ainda melhor
Testar é bom, integrar é ainda melhorAugusto Pascutti
 
PHPSC Conference 2010 - Testar é bom, integrar é melhor ainda!
PHPSC Conference 2010 - Testar é bom, integrar é melhor ainda!PHPSC Conference 2010 - Testar é bom, integrar é melhor ainda!
PHPSC Conference 2010 - Testar é bom, integrar é melhor ainda!Augusto Pascutti
 
Orientação a Objetos com PHP
Orientação a Objetos com PHPOrientação a Objetos com PHP
Orientação a Objetos com PHPAugusto Pascutti
 
Boas Práticas, Práticas !
Boas Práticas, Práticas !Boas Práticas, Práticas !
Boas Práticas, Práticas !Augusto Pascutti
 
Mão na Massa: Orientação a Objetos na Prática
Mão na Massa: Orientação a Objetos na PráticaMão na Massa: Orientação a Objetos na Prática
Mão na Massa: Orientação a Objetos na PráticaAugusto Pascutti
 

Mehr von Augusto Pascutti (20)

Errors
ErrorsErrors
Errors
 
Melhorando sua API com DSLs
Melhorando sua API com DSLsMelhorando sua API com DSLs
Melhorando sua API com DSLs
 
Porque VIM?
Porque VIM?Porque VIM?
Porque VIM?
 
Logs: O que comem, onde vivem e como se reproduzem.
Logs: O que comem, onde vivem e como se reproduzem.Logs: O que comem, onde vivem e como se reproduzem.
Logs: O que comem, onde vivem e como se reproduzem.
 
TDD - Test Driven Development (em PHP)
TDD - Test Driven Development (em PHP)TDD - Test Driven Development (em PHP)
TDD - Test Driven Development (em PHP)
 
Guia do mochileiro para escalabilidade
Guia do mochileiro para escalabilidadeGuia do mochileiro para escalabilidade
Guia do mochileiro para escalabilidade
 
Falhando miseralvelmente com PHP
Falhando miseralvelmente com PHPFalhando miseralvelmente com PHP
Falhando miseralvelmente com PHP
 
SfCon: Test Driven Development
SfCon: Test Driven DevelopmentSfCon: Test Driven Development
SfCon: Test Driven Development
 
Orientação a objetos v2
Orientação a objetos v2Orientação a objetos v2
Orientação a objetos v2
 
Under engineer
Under engineerUnder engineer
Under engineer
 
Como escalar aplicações PHP
Como escalar aplicações PHPComo escalar aplicações PHP
Como escalar aplicações PHP
 
The small things
The small thingsThe small things
The small things
 
Somos jardineiros
Somos jardineirosSomos jardineiros
Somos jardineiros
 
Testar é bom, integrar é ainda melhor
Testar é bom, integrar é ainda melhorTestar é bom, integrar é ainda melhor
Testar é bom, integrar é ainda melhor
 
PHPSC Conference 2010 - Testar é bom, integrar é melhor ainda!
PHPSC Conference 2010 - Testar é bom, integrar é melhor ainda!PHPSC Conference 2010 - Testar é bom, integrar é melhor ainda!
PHPSC Conference 2010 - Testar é bom, integrar é melhor ainda!
 
Segurança em PHP
Segurança em PHPSegurança em PHP
Segurança em PHP
 
Orientação a Objetos com PHP
Orientação a Objetos com PHPOrientação a Objetos com PHP
Orientação a Objetos com PHP
 
Boas Práticas, Práticas !
Boas Práticas, Práticas !Boas Práticas, Práticas !
Boas Práticas, Práticas !
 
Mitos do PHP
Mitos do PHPMitos do PHP
Mitos do PHP
 
Mão na Massa: Orientação a Objetos na Prática
Mão na Massa: Orientação a Objetos na PráticaMão na Massa: Orientação a Objetos na Prática
Mão na Massa: Orientação a Objetos na Prática
 

PHP - O que, porquê e como

  • 1. O quê, porquê e como. Augusto Pascutti - @augustohp Monday, April 25, 2011 1
  • 2. O QUE É? Monday, April 25, 2011 2
  • 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. 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 C Monday, April 25, 2011 4
  • 5. UM POUCO DE HISTÓRIA Monday, April 25, 2011 5
  • 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. 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 internet Monday, April 25, 2011 7
  • 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 internet Monday, April 25, 2011 8
  • 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, SPL Monday, April 25, 2011 9
  • 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, FileInfo Monday, April 25, 2011 10
  • 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 Unicode Monday, April 25, 2011 11
  • 12. HTTP O QUÊ? Monday, April 25, 2011 12
  • 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. E EU KIKO? Monday, April 25, 2011 14
  • 15. E EU KIKO? • HTTP é o protocolo utilizado por toda aplicação na internet • Cliente (Navegador) e Servidor Monday, April 25, 2011 15
  • 16. ESTE É VOCÊ Você quer acessar www.google.com com o navegador de sua preferência. Monday, April 25, 2011 16
  • 17. O SERVIDOR RECEBE Um servidor HTTP processa a requisição e devolve o recurso pedido. Monday, April 25, 2011 17
  • 18. ESTE É VOCÊ O navegador processar a resposta do servidor e exibe a página para você. Monday, April 25, 2011 18
  • 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. 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 XAMPP Monday, April 25, 2011 20
  • 21. PORQUE USAR PHP? Monday, April 25, 2011 21
  • 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 maduro Monday, April 25, 2011 22
  • 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
  • 27. CURVA DE APRENDIZADO Monday, April 25, 2011 27
  • 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
  • 34. ROBUSTO Concepção atual para suportar de dezenas a milhares de requisições por segundo sem problemas. Monday, April 25, 2011 34
  • 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ção Monday, April 25, 2011 35
  • 37. COMUNIDADE • Core developers do PHP • Contribuidores/Líderes de Projetos • Líderes de Grupo • Desenvolvedores Monday, April 25, 2011 37
  • 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.br Monday, April 25, 2011 38
  • 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. COMO É O PHP? Monday, April 25, 2011 41
  • 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.php Monday, April 25, 2011 42
  • 43. COMO ELE PARECE? Monday, April 25, 2011 43
  • 44. 1 <html> 2 <body> 3 <?php echo "Hello World"; ?> 4 </body> 5 </html> Monday, April 25, 2011 44
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. MERCADO DE TRABALHO Monday, April 25, 2011 56
  • 57. MERCADO DE TRABALHO Sobrinhos Profissionais •Copiou •Estudo constante •Colou •Valorizam o mercado •Funciounou •Em falta no mercado •Beleza! Monday, April 25, 2011 57
  • 59. PROFISSIONAIS Sênior Pleno Júnior Monday, April 25, 2011 59
  • 61. COMEÇANDO • Controle de versões • Debug • Um ou mais frameworks • Testes (Unitários, Comportamentais e Interface) Monday, April 25, 2011 61
  • 62. ALÉM DO SÊNIOR Monday, April 25, 2011 62
  • 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. 5 DICAS Monday, April 25, 2011 64
  • 65. Seja ágil (metodologia) Monday, April 25, 2011 65
  • 66. Não se importe com performance Monday, April 25, 2011 66
  • 68. Seja 2.0, compartilhe. Monday, April 25, 2011 68
  • 71. Sabe quantos anos uma tecnologia demorou para atingir um público de 50m de pessoas? Monday, April 25, 2011 71
  • 72. Rádio: 38 anos Monday, April 25, 2011 72
  • 73. TV: 13 anos Monday, April 25, 2011 73
  • 74. Internet: 4 anos Monday, April 25, 2011 74
  • 75. iPOD: 3 anos Monday, April 25, 2011 75
  • 76. Facebook: 2 anos Monday, April 25, 2011 76
  • 77. Sabia que os dez empregos mais requisitados em 2010 Monday, April 25, 2011 77
  • 78. Não existiam em 2004! Mais de metade é de TI. Monday, April 25, 2011 78
  • 80. Vocês estudam para empregos que ainda não existem... Monday, April 25, 2011 80
  • 81. ... para usar tecnologias que serão inventadas ... Monday, April 25, 2011 81
  • 82. ... para resolver problemas que nem são problemas ainda. Monday, April 25, 2011 82
  • 84. LEIAM PO*$# !! Monday, April 25, 2011 84
  • 85. PHP PROGRAMAÇÃO PODEROSA Autores: Gutmans, Bakken, Rethans ISBN: 8576080818 Editora: Alta Books Monday, April 25, 2011 85
  • 86. PHP OBJETOS, PADRÕES E PRÁTICA Autor: Matt Zandstra ISBN: 9788576082415 Editora: Apress / Alta Books Monday, April 25, 2011 86
  • 87. PERGUNTAS? @augustohp / augusto@phpsp.org.br Monday, April 25, 2011 87