PHP - O que, porquê e como
-
Upload
augusto-pascutti -
Category
Technology
-
view
3.886 -
download
0
Embed Size (px)
description
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