PHP - O que, porquê e como

Post on 05-Dec-2014

3.886 views 0 download

description

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

Transcript of PHP - O que, porquê e como

O quê, porquê e como.

Augusto Pascutti - @augustohp1Monday, April 25, 2011

O QUE É?

2Monday, April 25, 2011

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)

3Monday, April 25, 2011

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

4Monday, April 25, 2011

UM POUCO DE HISTÓRIA

5Monday, April 25, 2011

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)

6Monday, April 25, 2011

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 internet7Monday, April 25, 2011

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 internet8Monday, April 25, 2011

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

9Monday, April 25, 2011

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

10Monday, April 25, 2011

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

11Monday, April 25, 2011

HTTP O QUÊ?

12Monday, April 25, 2011

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)

13Monday, April 25, 2011

E EU KIKO?

14Monday, April 25, 2011

E EU KIKO?

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

• Cliente (Navegador) e Servidor

15Monday, April 25, 2011

ESTE É VOCÊ

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

16Monday, April 25, 2011

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

O SERVIDOR RECEBE

17Monday, April 25, 2011

ESTE É VOCÊ

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

18Monday, April 25, 2011

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)

19Monday, April 25, 2011

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

20Monday, April 25, 2011

PORQUE USAR PHP?

21Monday, April 25, 2011

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

22Monday, April 25, 2011

BAIXO CUSTO

23Monday, April 25, 2011

BAIXO CUSTO

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

24Monday, April 25, 2011

FLEXÍVEL

25Monday, April 25, 2011

FLEXÍVEL

26Monday, April 25, 2011

CURVA DE APRENDIZADO

27Monday, April 25, 2011

CURVA DE APRENDIZADO

Melhor documentação existente (Exemplos e comentários) somada a uma extensa quantidade de informação na internet (Sites, Posts,

Projetos)

28Monday, April 25, 2011

LARGAMENTE UTILIZADA?

29Monday, April 25, 2011

LARGAMENTE UTILIZADA?

30Monday, April 25, 2011

CONTRIBUEM

31Monday, April 25, 2011

CONTRIBUEM

32Monday, April 25, 2011

ROBUSTO

33Monday, April 25, 2011

ROBUSTO

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

34Monday, April 25, 2011

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

35Monday, April 25, 2011

COMUNIDADE

36Monday, April 25, 2011

COMUNIDADE

• Core developers do PHP

• Contribuidores/Líderes de Projetos

• Líderes de Grupo

• Desenvolvedores

37Monday, April 25, 2011

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

38Monday, April 25, 2011

FRAMEWORK

39Monday, April 25, 2011

FRAMEWORK

Camada de abstração que reúne códigos comuns entre vários projetos promovendo uma funcionalidade genérica.

40Monday, April 25, 2011

COMO É O PHP?

41Monday, April 25, 2011

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

42Monday, April 25, 2011

COMO ELE PARECE?

43Monday, April 25, 2011

1 <html>2 <body>3 <?php echo "Hello World"; ?>4 </body>5 </html>

44Monday, April 25, 2011

1 <?php2 $variavel_1 = "Uma string";3 $variavel_2 = 'Outra string';4 5 // Concatenando strings6 echo $variavel_1 . $variavel_2;

45Monday, April 25, 2011

1 <?php2 $x = 1; // inteiro3 $y = 10.99; // float (double)4 $z = $x*$y;5 $a = $x+"1"; // 2 (int)6 $b = $x."1"; // 11 (string)

46Monday, April 25, 2011

1 <?php2 $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 }

47Monday, April 25, 2011

1 <?php2 for ( $i=0; $i<=9; $i++ ) {3 echo '.';4 }5 6 echo PHP_EOL; // Quebra de linha7 8 while ( $i > 0 ) {9 echo '.';10 $i--;11 }

48Monday, April 25, 2011

1 <?php2 $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 PHP14 Em 2000: Lancado PHP 415 Em 2004: Lancado PHP 516 Em 2009: Lancado PHP 5.317 */

49Monday, April 25, 2011

1 <?php2 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 ; // 512 echo debug("42"); // [Debug] 42 (string)

50Monday, April 25, 2011

1 <?php2 namespace HTTP;3 class Request { // extends Data_Container4 // implements HTTP_Object5 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; // POST23 24 print_r( Request::getTypes() );

51Monday, April 25, 2011

1 <?php2 include '/path/para/arquivo.php';3 // include_once4 // require5 // require_once6 7 $o = new Classe_Do_Arquivo();

52Monday, April 25, 2011

1 <?php2 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 }

53Monday, April 25, 2011

1 <?php2 $dsn = "mysql:dbname=test;host=localhost";3 $banco = new Pdo($dsn,'user','pass');4 5 $sql = "SELECT nome6 FROM usuarios7 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 }

54Monday, April 25, 2011

1 <?php2 $produto = "Desconhecido";3 // $_GET, $_SESSION, $_COOKIE4 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>

55Monday, April 25, 2011

MERCADO DE TRABALHO

56Monday, April 25, 2011

MERCADO DE TRABALHO

Sobrinhos

•Copiou•Colou•Funciounou•Beleza!

Profissionais

•Estudo constante•Valorizam o mercado•Em falta no mercado

57Monday, April 25, 2011

PROFISSIONAIS

58Monday, April 25, 2011

PROFISSIONAIS

Júnior

Pleno

Sênior

59Monday, April 25, 2011

COMEÇANDO

60Monday, April 25, 2011

COMEÇANDO

• Controle de versões

• Debug

• Um ou mais frameworks

• Testes (Unitários, Comportamentais e Interface)

61Monday, April 25, 2011

ALÉM DO SÊNIOR

62Monday, April 25, 2011

ALÉM DO SÊNIOR

• Contribuição em projetos Open Source

• Contribuição com o PHP em si

• Certificação (ZCE)

63Monday, April 25, 2011

5 DICAS

64Monday, April 25, 2011

Seja ágil (metodologia)

65Monday, April 25, 2011

Não se importe com performance

66Monday, April 25, 2011

Leia

67Monday, April 25, 2011

Seja 2.0, compartilhe.

68Monday, April 25, 2011

Leia

69Monday, April 25, 2011

NOTA FINAL

70Monday, April 25, 2011

Sabe quantos anos uma tecnologia demorou para atingir um público de 50m de pessoas?

71Monday, April 25, 2011

Rádio: 38 anos

72Monday, April 25, 2011

TV: 13 anos

73Monday, April 25, 2011

Internet: 4 anos

74Monday, April 25, 2011

iPOD: 3 anos

75Monday, April 25, 2011

Facebook: 2 anos

76Monday, April 25, 2011

Sabia que os dez empregos mais

requisitados em 2010

77Monday, April 25, 2011

Não existiam em 2004!

Mais de metade é de TI.

78Monday, April 25, 2011

Resumindo

79Monday, April 25, 2011

Vocês estudam para empregos que ainda

não existem...

80Monday, April 25, 2011

... para usar tecnologias que

serão inventadas ...

81Monday, April 25, 2011

... para resolver problemas que nem

são problemas ainda.

82Monday, April 25, 2011

Concluindo

83Monday, April 25, 2011

LEIAM PO*$# !!

84Monday, April 25, 2011

Autores: Gutmans, Bakken, Rethans

ISBN: 8576080818

Editora: Alta Books

PHP PROGRAMAÇÃO PODEROSA

85Monday, April 25, 2011

Autor: Matt Zandstra

ISBN: 9788576082415

Editora: Apress / Alta Books

PHP OBJETOS, PADRÕES E PRÁTICA

86Monday, April 25, 2011

PERGUNTAS?@augustohp / augusto@phpsp.org.br

87Monday, April 25, 2011