PHP
Por Jonata Weber
jonataa@gmail.com
Quem são vocês?
Sobre mim...
falconreviews.com
becker.com
PHP
Hypertext Preprocessor
Um pouco de história...
Antes, tudo era estático!
Criado em 1994
Por Ramus Lerdorf

Common Gateway
Interface (CGI)
Binário escrito em C

Rastreamento de
visitas
em seu currículo on-line
Rasmus Lerdorf
É um programador canadiano-dinamarquês e o autor da primeira
versão da linguagem de programação PHP. (Wikipédia)
1994
•

Personal Home Page Tools
“PHP Tools”

1995
• Tornou-se público
• Forms Interpreter - “FI”
• PHP Construction Kit

1996
• PHP 2.0 – PHP/FI
1997
•

Deixou de ser BETA

1998
• 60.000 domínios com PHP – 1% da
Internet
• PHP 3 – 70.000 domínios

2000
• PHP 4 – Zend Engine
2004
•
•

PHP 5 – Zend Engine 2.0 e
Sólido modelo de OO

2009
•
•

PHP 5.3 – Funções Anônimas e
Namespaces

2012
• PHP 5.4 – Traits
Ok, chega de história...
Vamos falar do HOJE!
2013
“I love Google’s stat,
that 75 percent of the
web runs PHP. No one
knows the web better
than Google.”
Andi Gutmans - Zend
http://venturebeat.com/2013/05/17/google-app-engine-finally-supports-php-the-language-that-runs-75-of-the-web/
Google App Engine finally
supports PHP
Porque PHP?
PHP é Open Source
Executado no Servidor
Programação Funcional
Suporte Completo a
Programação OO
PHP usa uma mistura de
interpretação e compilação
Fracamente Tipada
Assim como Javascript, Ruby e Python
Namespaces
PHP >= 5.3
Traits
PHP >= 5.4
Composer
Gerenciador de Dependência para PHP
Servidor Web Embutido
PHP >= 5.4
Ok, chega de teoria...
Vamos praticar!!
1º Passo

Preparar o Ambiente
Use a última versão estável
http://www.php.net/downloads.php
Performance entre versões
5

4

4.1048

4
4
2.8

3

2.2511

3
2
2
1
1
0
PHP 5.1.6

PHP 5.2.17

PHP 5.3.14

PHP 5.4.4
No Windows
Baixar arquivo ZIP
Descompactar no c:php
Abrir “Bloco de Notas” e digitar:
C:phpphp –S localhost:8000 –t c:www
Salvar arquivo na “Área de Trabalho” com o nome “servidor.bat”
(Não esquecer de alterar para todos os arquivos ao salvar no bloco de notas)

No Linux
No console:
$ apt-get update
$ apt-get install php55
Inicializar o Servidor Web
No console, acesse a pasta dos scripts php, depois digite:
> php -S localhost:8080
2º Passo

Criar o Script PHP
Bloco de Notas
<?php echo „Hello World‟; ?>
Salvar na pasta “www” como “index.php”
3º Passo

Executar o Script PHP
Navegador Web
Acessar:
http://localhost:8000/index.php
PHP
Básico
Tipos Primitivos
•
•
•
•
•
•
•

Boolean
Integer
Float
String
Array
NULL
Object
Boolean
<?php
$variavel = true;
$variavel = false;
$variavel = (50 == '50'); // true
$variavel = (50 != '50'); // false
$variavel = (50 === '50'); // false
$variavel = (50 !== '50'); // true
Integer e Float
<?php
$variavel = 50; // decimal
$variavel = -123; // número negativo
$variavel = 0123; // octal
$variavel = 0x1A; // número hexadecimal (26 decimal)
$variavel = 1.234; // ponto flutuante
$variavel = 1.2e3; // 1,2³
String
Aspas Simples
<?php
echo ‘essa é uma simples string';
echo ‘Além disso, você pode embarcar novas linhas
nas strings, esse é um caminho
legal de fazer';
// Outputs: Arnold once said: "I'll be back"
echo 'Arnold once said: "I'll be back"';
String
<?php

Aspas Simples

// Outputs: Você deletou C:*.*?
echo ‘Você deletou C:*.*?';
// Outputs: Você deletou C:*.*?
echo ‘Você deletou C:*.*?';
// Outputs: Isso não vai criar: n uma nova linha
echo ‘Isso não vai criar: n uma nova linha';
// Outputs: Variáveis não funcionam $expand $either assim
echo ‘Variáveis não funcionam $expand $either assim';
String
Aspas Duplas
<?php

$variavel = 'Legal';
// Outputs: Variáveis funcionam assim: Legal
echo “Variaveis funcionam assim: $variavel”;
Array
<?php
$array = array("foo", "bar", "hello", "world");
$array = ["foo", "bar", "hello", "world"]; // PHP >= 5.4
Array
Sintaxe:
array(
key => value,
key2 => value2,
key3 => value3,
...
)

<?php
$variavel = array(
"chave1" => "valor1",
"chave2" => "valor2",
);
// as of PHP 5.4
$variavel = [
"chave1" => "valor1",
"chave2" => "valor2",
];
Array
<?php
$array = array(
"foo" => "bar",
"bar" => "foo",
100 => -100,
-100 => 100,
);
var_dump($array);

Saída:
array(4) {
["foo"]=>
string(3) "bar"
["bar"]=>
string(3) "foo"
[100]=>
int(-100)
[-100]=>
int(100)
}
Array
<?php
$variavel
= array(5 => 1, 12 => 2);
$variavel[] = 56 // Isso é o mesmo que $variavel[13] = 56;
$variavel["x"] = 42; // Isso adiciona um novo elemento
// com a chave "x"

unset($variavel[5]); // Isso remove o elemento do array
unset($variavel); // Isso delete o array
NULL
<?php

$variavel = NULL;
$variavel = Null;
$variavel = null;
Constantes
Funções
<?php
function helloWorld() {
echo 'Hello World';
}
helloWorld(); // Hello World

function maiusculo($texto) {
return strtoupper($texto);
}
echo maiusculo('jonata weber'); // JONATA WEBER
Funções Anônimas
Lambda e Closure
Operadores Aritméticos
Operadores Lógicos
Operadores de String
Operadores de Atribuição
Incremento / Decremento
Exercício 1
Faça um script em PHP que leia três notas de um
aluno e calcule a média aritmética deste aluno.
•
•

Deverá ser uma função que receba três parâmetros float (ou um
array)
A função deverá retornar a média aritmética do aluno em float
Exercício 2
Faça um script em PHP que converta HORAS em
SEGUNDOS.
•
•
•

Deverá ser uma função que recebe um número inteiro em horas, ex:
20
A função deverá retornar um inteiro em segundos, ex: 72000.
O script deverá imprimir o resultado no seguinte formato:
• 20 horas têm 72000 segundos
IF / ELSEIF / ELSE
Operador Ternário
WHILE / DO-WHILE
FOR / FOREACH
FOREACH
SWITCH
Include / Require
arquivo1.php

arquivo2.php
Include
Exibe um “Warning” e não interrompe a
execução
Warning: include(arquivo3.php): failed to open stream: No such file or directory in
/Users/jweber/dev/projects/php/arquivo2.php on line 3
Warning: include(): Failed opening 'arquivo3.php' for inclusion
(include_path='.:') in /Users/jweber/dev/projects/php/arquivo2.php on line 3
Fatal error: Call to undefined function dobrar() in
/Users/jweber/dev/projects/php/arquivo2.php on line 5
Require
Exibe um “Fatal Error” e interrompe a execução
Warning: require(arquivo3.php): failed to open stream: No such file or directory in
/Users/jweber/dev/projects/php/arquivo2.php on line 3
Fatal error: require(): Failed opening required 'arquivo3.php' (include_path='.:') in
/Users/jweber/dev/projects/php/arquivo2.php on line 3
Prática!
FizzBuzz
Neste problema, você deverá exibir uma lista de 1 a
100, um em cada linha, com as seguintes
exceções:
•

•
•

Números divisíveis por 3 deve aparecer como 'Fizz' ao invés do
número;
Números divisíveis por 5 devem aparecer como 'Buzz' ao invés do
número;
Números divisíveis por 3 e 5 devem aparecer como 'FizzBuzz' ao
invés do número‟.
Prática!
Referências
•
•
•
•
•
•

Site oficial do PHP – http://php.net
PHP The Right Way - http://www.phptherightway.com/
Wikipédia - http://pt.wikipedia.org
TuxRadar - http://www.tuxradar.com/practicalphp
Servidores da Web - http://informatica.hsw.uol.com.br/servidores-da-web.htm
http://www.lornajane.net/posts/2012/php-5-4-benchmarks

SIMCIT 2013 - Mini-curso PHP