Download - Despertando para o PHP
Despertando para o PHP
Rafael DohmsFriday, January 29, 2010
PHPabbr 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
PHPabbr 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
http://www.php.net
Arquitetura de um acesso
Friday, January 29, 2010
http://www.php.net
Arquitetura de um acesso
Friday, January 29, 2010
http://www.php.net
Arquitetura de um acesso
Friday, January 29, 2010
http://www.php.net
Servidor HTTP
Arquitetura de um acesso
Friday, January 29, 2010
http://www.php.net
Servidor HTTPHTML
Arquitetura de um acesso
Friday, January 29, 2010
http://www.php.net
Servidor HTTP
C:\
HTML
HTML
Arquitetura de um acesso
Friday, January 29, 2010
Quem usa PHP?
Friday, January 29, 2010
A escolhaPor 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
WAMP - www.wampserver.com
XAMPP - www.apachefriends.org
XAMPP - www.apachefriends.org
XAMPP - www.apachefriends.orgMAMP -www.mamp.info
Zend Server CE -http://www.zend.com/
Zend Server CE -http://www.zend.com/
Zend Server CE -http://www.zend.com/Friday, January 29, 2010
Codando PHP• IDE’s
• Zend Studio (Eclipse)
• PDT (Eclipse)
• Aptana (Eclipse)
• Komodo
• NetBeans
• Text Editors
• TextMate (PHP Bundle)
• VIM
• EMACS
Vantagens de uma IDE
- Autocomplete- Integração com VCS- Debugging e profiling integrado- Ferramentas em geral
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
$string = "Hello World! \n";
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;
?>
Hello World! Hello Campus Party! Hello Campus Party! Como vai?
Friday, January 29, 2010
Sintaxe básica<?php
$string = "Hello World! \n";
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;
?>
Hello World! Hello Campus Party! Hello Campus Party! Como vai?
Friday, January 29, 2010
Sintaxe básica<?php
$string = "Hello World! \n";
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;
?>
Hello World! Hello Campus Party! Hello Campus Party! Como vai?
Friday, January 29, 2010
Sintaxe básica<?php
$string = "Hello World! \n";
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;
?>
Hello World! Hello Campus Party! Hello Campus Party! Como vai?
Friday, January 29, 2010
Sintaxe básica<?php
$string = "Hello World! \n";
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;
?>
Hello World! Hello Campus Party! Hello Campus Party! Como vai?
Friday, January 29, 2010
Sintaxe básica<?php
$string = "Hello World! \n";
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;
?>
Hello World! Hello Campus Party! Hello Campus Party! Como vai?
Friday, January 29, 2010
Sintaxe básica<?php
$string = "Hello World! \n";
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;
?>
Hello World! Hello Campus Party! Hello Campus Party! Como vai?
Friday, January 29, 2010
Sintaxe básica<?php
$string = "Hello World! \n";
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;
?>
Hello World! Hello Campus Party! Hello Campus Party! Como vai?
Friday, January 29, 2010
Tipagem fraca
<?php
$a = "2";echo '$a => ' . $a . '/' . gettype($a) . PHP_EOL;
$a = "2" + 1;echo '$a => ' . $a . '/' . gettype($a) . PHP_EOL;
$a = 1;echo '$a => ' . $a . '/' . gettype($a) . PHP_EOL;
$a = 1 . "2";echo '$a => ' . $a . '/' . gettype($a) . PHP_EOL;
?>
$a => 2/string
$a => 3/integer
$a => 1/integer
$a => 12/string
Friday, January 29, 2010
Tipagem fraca
<?php
$a = "2";echo '$a => ' . $a . '/' . gettype($a) . PHP_EOL;
$a = "2" + 1;echo '$a => ' . $a . '/' . gettype($a) . PHP_EOL;
$a = 1;echo '$a => ' . $a . '/' . gettype($a) . PHP_EOL;
$a = 1 . "2";echo '$a => ' . $a . '/' . gettype($a) . PHP_EOL;
?>
$a => 2/string
$a => 3/integer
$a => 1/integer
$a => 12/string
Tipos do PHP:
BooleanIntegerFloat (ou double)StringArrayObjectResourceNULL
Friday, January 29, 2010
Tipos: Array e Hashes<?php// Um array$a = array('a', 'b', 'c');print_r($a);
//Um Hash$b = array('a' => 'b', 'c' => 'd');print_r($b);
// Acessando dadosecho $a[0] . PHP_EOL;echo $b['c'] . PHP_EOL;
//Funçõesrsort($a);print_r($a);
echo array_shift($a) . PHP_EOL;print_r($a);
Array( [0] => a [1] => b [2] => c)Array( [a] => b [c] => d)
ad
Array( [0] => c [1] => b [2] => a)
c
Array( [0] => b [1] => a)
Friday, January 29, 2010
<?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"; }
Condicionais: If
Friday, January 29, 2010
<?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"; }
Condicionais: If
O que é falso no PHP:
FALSE0 (zero) (integer)0.0 (zero) (float)“0” (zero) (string)String vazia (“”)Array VazioNULL
Friday, January 29, 2010
<?php
$a = "joao";
switch($a){ 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;}
Condicionais: SwitchCuidados com Tipagem Fraca
“string” => integer == 0
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;}
foreach( $a as $key => $letra){ echo $key . " => " . $letra. PHP_EOL;}
abc
0 => a1 => b2 => c
Friday, January 29, 2010
Paradigmas: Estrutural<?php
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;
3350
Friday, January 29, 2010
Paradigmas: OO<?phpclass 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();
ScottHAL Model 2.34
Friday, January 29, 2010
Manipulação de Strings
<?php
$a = "Hello World!";
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;
HELLO WORLD!Hello World!Hello World!Hello World!Uryyb Jbeyq!12!dlroW olleH
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
$nome = filterInput($_POST['nome']);
SuperGlobals
$_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 Mercadocomo ganhar dinheiro
http
://w
ww.
flick
r.com
/pho
tos/
man
uelp
ichl
er/
Friday, January 29, 2010
Iniciante
Jedi Master
$
$$$$$
Friday, January 29, 2010
Iniciante
Jedi Master
$
$$$$$
Friday, January 29, 2010
Iniciante
Jedi Master
$
$$$$$
Controle de Versão
Friday, January 29, 2010
Iniciante
Jedi Master
$
$$$$$
Controle de Versão
Debugging
Friday, January 29, 2010
Iniciante
Jedi Master
$
$$$$$
Controle de Versão
Debugging
Profiling
Friday, January 29, 2010
Iniciante
Jedi Master
$
$$$$$
Controle de Versão
Debugging
Profiling
Frameworks
Friday, January 29, 2010
Iniciante
Jedi Master
$
$$$$$
Controle de Versão
Debugging
Profiling
Frameworks
OO
Friday, January 29, 2010
Iniciante
Jedi Master
$
$$$$$
Controle de Versão
Debugging
Profiling
Frameworks
OO
Testes
Friday, January 29, 2010
Iniciante
Jedi Master
$
$$$$$
Controle de Versão
Debugging
Profiling
Frameworks
OO
Testes
Design Patterns
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
• 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!
Zend Certified Engineer - PHP 5
Friday, January 29, 2010
Construa o seu nome
• Escreva! (blog, artigos, revistas)
• Participe! (GU, Eventos)
• Contribua! (Frameworks, PHP, OSS ...)
Friday, January 29, 2010
EcossistemaFerramentas
http
://w
ww.
flick
r.com
/pho
tos/
hleg
ius/
Friday, January 29, 2010
O servidorEscolha seu sabor
LAMP WIMPWAMPLAPP WIPP
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
Comunidadesempre pronta para
ajudar
http
://w
ww.
flick
r.com
/pho
tos/
skoo
p/
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
Obrigado!
Rafael Dohmswww.rafaeldohms.com.br
Twitter: @rdohms
Friday, January 29, 2010