SlideShare a Scribd company logo
1 of 150
Download to read offline
Iniciando PHP
Professor: Eduardo Mendes
Agenda
•  Visão Geral
•  Arquitetura Cliente-Servidor
•  Programas Básicos
•  Sintaxe do PHP
•  Formulários
•  Manipulação de Strings
•  Controle de Fluxo
Visão Geral
•  Páginas web  simples documentos
Visão Geral
•  Página web com PHP
–  aplicação interativa
Testando Configuração
•  Iniciar o EasyPHP
–  Iniciar  Programas  EasyPHP
Testando Configuração
•  Executar algum browser (navegador)
–  http://localhost
Testando Configuração
•  Os arquivos serão salvos na pasta www do
EasyPHP
–  C:Arquivos de programasEasyPHP1-8www
Material Exemplo
•  http://www.fa7.edu.br/webiniciantes/
modulo2/iniciandoPhp.zip
Escrevendo programas php
•  Primeiro Exemplo
<html>
<body>
<?
print "Hello, world!";
?>
</body>
</html>   Salve-o na pasta www do EasyPHP
como exemplo1.php
  Executando a página
http://localhost/exemplo1.php
Escrevendo programas php
•  Segundo exemplo
<html>
<body>
A data atual é
<?php
echo gmdate(“d/m/Y”);
?>
</body>
</html>
  Salve-o na pasta www EasyPHP como
exemplo2.php
  Executando a página
http://localhost/exemplo2.php
Escrevendo programas php
•  Terceiro exemplo
<html>
<body>
O nome da faculdade é
<?php
$nomeDaFaculdade = “FA7”;
echo $nomeDaFaculdade;
?>
</body>
</html>
  Salve-o na pasta www EasyPHP como
exemplo3.php
  Executando a página
http://localhost/exemplo3.php
PHP & Arquivos
•  Crie um arquivo txt na pasta www do
EasyPHP com o nome “dicas.txt”
Dica do Dia
<html>
<head>
<title>Dica do Dia</title>
</head>
<body>
<h1>Dica do Dia:</h1>
<br/>
<p class=“destaque”>
<?
readfile("dicas.txt");
?>
</p>
</body>
</html>
  Salve-o na pasta www EasyPHP como
dicadodia.php
  Executando a página
http://localhost/dicadodia.php
Formulários
Formulários
qualSeuNome.html
<h1>Qual seu nome?</h1>
<form method = “post” action = "oiUsuario.php">
Por favor digite seu nome:
<input type = “text” name = "nome“/>
<br/> <br/>
<input type = “submit” value = “Enviar”/>
</form>
oiUsuario.php
<h1>Oi, usuário</h1>
<p class=“destaque”>
<?
print "Olá, “ . $_POST[‘nome’];
?>
</p>
musica.html
musica.php
musica.html
<h3>Por favor, preencha os campos abaixo</h3>
<form method = "post" action = "musica.php">
<p>Dia da Semana</p>
<p> <input type = "text" name = "diaDaSemana"/> </p>
<p>Ação</p>
<p> <input type = "text" name = "acao"/> </p>
<p>Quantidade de Horas</p>
<p> <input type = "text" name = "horas"/> </p>
<p>Tempo</p>
<p>
<select name = "tempo">
<option>Da próxima vez</option>
<option>Hoje</option>
<option>Nunca</option>
</select>
</p>
<p><input type = "submit" value = "Faça a Música"></p>
</form>
musica.php
<h1>Semana que vem</h1>
<p class="texto">
A partir de <span class="var">
<?php print $_POST['diaDaSemana']; ?>
</span>
eu vou discutir <br />
<span class="var">
<?php print $_POST['tempo']; ?></span>
eu vou questionar <br />
Na segunda eu começo a agir <br />
Só mais <span class="var”
<?php print $_POST['horas']; ?></span>
horas pra eu decidir.
</p>’
oiUsuario2.php
oiUsuario2.php
oiUsuario2.php
<h1>Oi Usuário</h1>
<?php
if (empty($_POST[‘nomeDoUsuario’])){
?>
<form method=“post”>
Por favor, digite o seu nome:
<input type = ”text” name =”nomeDoUsuario”><br />
<input type =”submit” value =”Enviar”>
</form>
<?php
} else {
print "<h3>Olá, “ . $_POST[‘nomeDoUsuario’] . “!</h3>";
}
?>
Trabalhando com
Variáveis numéricas
numeros.php
<html>
<body>
<?
$x = 3;
$y = 5;
print "$x + $y = ";
print $x + $y;
print "<br><br>";
print "$x - $y = ";
print $x - $y;
print "<br><br>";
print "$x * $y = ";
print $x * $y;
print "<br><br>";
print "$x / $y = ";
print $x / $y;
print "<br><br>";
?>
</body>
</html>
Criando um número
randômico
dado.php
<html>
<body>
<h1>Jogar Dado!</h1>
<h3>Demonstração de um dado</h3>
<?
$valor = rand(1,6);
print "O valor que você obteve é $valor";
print "<br/><br/>";
print "<img src =”dado$valor.gif” width=100 height=100>";
?>
<br/><br/>
Dê um refresh nesta página para jogar de novo.
</body>
</html>
Condicionais
Jogo do Dado
jogoDado.php
<html>
<body>
<?
$valor = rand(1,6);
print "O valor que você obteve foi $valor";
if ($valor == 1 || $valor==4){
print "<h1>Você é o ganhador!!!!!</h1>";
} // end if
print "<br/><br/>";
print "<img src =dado$valor.gif width=100 height=100>";
?>
<br/><br/>
Dê um refresh nesta página para jogar de novo.
</body>
</html>
Condicionais
Operadores de comparação
Operador Descrição
== Igual a
< Menor do que
> Maior do que
<= Menor do que ou
igual a
>= Maior do que ou
igual a
!= Diferente de
Condicionais
if e else
jogoDado2.php<html>
<body>
<h1>Ganhou ou nao?</h1>
<?
$valor = rand(1,6);
print "O valor que voce obteve foi $valor";
print "<br>";
if ($valor == 1){
print "<h1>Voce ganhou!!!!!</h1>";
} else {
print "Tente novamente...";
} // end if
print "<br>";
print "<img src = dado$valor.gif width=100 height=100>";
?>
<br>
Dê um refresh nesta página para jogar de novo.
</body>
</html>
Múltiplas
condições
$valor = rand(1,6);
print “Você obteve o valor $valor";
print "<br>";
if ($valor == 1){
$binValue = "001";
} else if ($valor == 2) {
$binValue = "010";
} else if ($valor == 3) {
$binValue = "011";
} else if ($valor == 4) {
$binValue = "100";
} else if ($valor == 5) {
$binValue = "101";
} else if ($valor == 6) {
$binValue = "110";
} else {
print “Eu não sei qual o valor...";
} // end if
Múltiplas condições
switch
switch ($valor){
case 1:
$romValue = "I";
break;
case 2:
$romValue = "II";
break;
case 3:
$romValue = "III";
break;
case 4:
$romValue = "IV";
break;
case 5:
$romValue = "V";
break;
case 6:
$romValue = "VI";
break;
default:
print “Este dado não existe!";
} // end switch
Funções - Encapsulando parte do programa
<?
function soma() {
print "A soma de 2 + 2 eh " . (2 + 2) . "<br>";
}
function subtrai() {
print "A subtracao de 2 por 2 eh " . (2 - 2) . "<br>";
}
function multiplica() {
print "A multiplicacao de 2 por 2 eh " . (2 * 2) . "<br>";
}
function divide() {
print "A divisao de 2 por 2 eh " . (2 / 2) . "<br>";
}
?>
<html>
<body>
<?
soma();
subtrai();
multiplica();
divide();
?>
</body>
</html>
calculos.php
Funções
com parâmetros
<?
function soma($x) {
print "A soma de $x + $x eh " . ($x + $x) . "<br>";
}
function subtrai($x) {
print "A subtracao de $x por $x eh " . ($x - $x) . "<br>";
}
function multiplica($x) {
print "A multiplicacao de $x por $x eh " . ($x * $x) . "<br>";
}
function divide($x) {
print "A divisao de $x por $x eh " . ($x / $x) . "<br>";
}
?>
<html>
<body>
<?
soma(4);
subtrai(7);
multiplica(2);
divide(1);
?>
</body>
</html>
calculos2.php
Funções
Retornando um valor
calculosRetorno.php
<?
function soma($x) {
$y = ($x + $x);
return $y;
}
?>
<html>
<body>
<h1>Funcoes de Calculos</h1>
<?
print "A soma de 2 + 2 eh " . soma(2) . "<br>";
?>
</body>
</html>
DESAFIOS!!!
•  Elaborar uma função que passado um valor
para a função entre 1 e 6, a função exiba na
tela o dado correspondente ao valor
•  Melhorar a função, podendo ser passado
qualquer valor, mas se o número for menor
que 1 ou maior que 6, deve apresentar a
frase “Este dado não existe”;
Solução
function desenhaDado($valor) {
if ($valor < 1 || $valor > 6) {
print “Este dado não existe”;
} else {
print “<img src=“dado$valor.gif”
width=”100” heigth=
”100”>”;
}
}
PHP & Estruturas de Controle
LOOPS
As 3 etapas
de um loop FOR
•  Inicialização da variável de controle
•  Condição para finalizar o loop
•  Alteração da variável de controle
for ( ; ; ){
print "$i <br>";
}
$i = 0 $i <= 3 $i = $i+1
Contando com
o loop FOR
forSimples.php
<html>
<head>
<title>Um loop for simples</title>
</head>
<body>
<h1>Um loop for simples</h1>
<?
for ($i = 0; $i <= 10; $i++){
print "$i <br>";
}
?>
</body>
</html>
Contando de 5 em 5
O que há de novo?
for ( $i = 5; $i <= 50; $i=$i + 5){
print "$i <br>";
}
$i = $i + 5
forContando5.php
<html>
<head>
<title>Contando de Trás pra Frente </title>
</head>
<body>
<h1> Contando de Trás pra Frente</h1>
<?
for ($i = 10; $i > 0; $i--){
print "$i <br>";
}
?>
</body>
</html>
Usando um loop
WHILE
whileSimples.php
<html>
<body>
<h1> Um Loop While Simples</h1>
<?
$i = 1;
while ($i <= 10){
print "$i <br>";
$i = $i + 1;
}
?>
</body>
</html>
Relembrando
Tabelas
•  <table>
–  Define uma tabela
•  <tr>
–  Define uma linha
•  <td>
–  Define uma coluna
•  Atenção:
–  Uma linha tem ao menos uma coluna!
Desafio!
•  Construir uma função que imprima na tela
uma linha de uma tabela
<table>
<?
function linhaTabela() ;
?>
</table>
Solução!
<?
function linhaTabela($nome) {
print “<tr><td>$nome</td></tr>”;
}
?>
<table border=“1”>
<?
linhaTabela(“Eduardo”);
?>
</table>
Desafio 2!
•  Construir uma função que, dado o número
de linhas como argumento da função,
construa uma tabela como o número de
linhas pedido
•  Declaração
function tabela($numeroDeLinhas) {
}
•  Exemplo de uso
function tabela(5);
Arrays
•  Variáveis são como copos
–  Contém, guardam alguma coisa
–  Valores
•  Arrays são como bandejas de copos
Gerando
o Array
$camelPop[1] = "Somalia";
$camelPop[2] = "Sudan";
$camelPop[3] = "Mauritania";
$camelPop[4] = "Pakistan";
$camelPop[5] = "India";
Examinando o conteúdo
do Array com um loop
for ($i = 1; $i <= 5; $i++) {
print "$i: $camelPop[$i]<br>";
}
As funções
array() e count()
•  Carregando um Array com valores
$binary = array("000", "001", "010", "011");
•  Detectando o tamanho de um array
for ($i = 0; $i < count($binary); $i++){
print "$i: $binary[$i]<br>n";
}
arrayBasico.php
<html>
<body>
<h1>Array Básico</h1>
<?
$camelPop[1] = "Somalia";
$camelPop[2] = "Sudan";
$camelPop[3] = "Mauritania";
$camelPop[4] = "Pakistan";
$camelPop[5] = "India";
arrayBasico.php
print "<h3>Maiores populações de camelos no mundo</h3>";
for ($i = 1; $i <= 5; $i++) {
print "$i: $camelPop[$i]<br>";
}
$binary = array("000", "001", "010", "011");
print "<h3>Números binários</h3>";
for ($i = 0; $i < count($binary); $i++){
print "$i: $binary[$i]<br>n";
}
?>
</body>
</html>
Loop com
forEach
<?
$nomes =
array("Eduardo", "Luiz", "Guilherme", "Victor");
?>
<html>
<body>
<?
foreach ($nomes as $nome) {
echo $nome."<br/>";
}
?>
</body>
</html>
Desafio 3
•  Dado um array de nomes
–  Criar uma função que desenhe a tabela
–  O número de linhas igual ao tamanho do array
–  Cada linha deve conter um dos nomes
–  As linhas devem ser desenhadas por uma função
que passado o valor desenhe uma linha da tabela
–  Array
$nomes = array("Eduardo", "Luiz", "Guilherme", "Victor");
Campos ocultos
persistencia.php
<html>
<body>
<h1>Persistencia</h1>
<form>
<?
if (!isset($contador) && !isset($oculto)) {
$contador = 0;
$oculto = 0;
}
$contador++;
$oculto++;
persistencia.php
print “
<input type=”text”
name=”contador”
value=”$contador”>
<input type=”hidden”
name=”oculto”
value=”$oculto”>
<h3>O valor oculto(hidden) $oculto</h3>
<input type=”submit”
value=”Incremente os contadores”>
“;
?>
</form>
</body>
</html>
Funções de arquivos em Php
•  Funções que servem para manipular
arquivos
–  Criar
–  Ler
–  Alterar
–  Sobrescrever conteúdo
•  O nome destas funções sempre iniciam com
a letra “f”
–  referente a file (arquivo em inglês)
Funções de arquivos em Php
Abrindo um arquivo
•  Abre arquivos do servidor web
•  Cria um atalho (ponteiro) para o arquivo e
atribui a uma variável
•  Parâmetros
–  Nome do arquivo
–  Modificador de acesso
$p = fopen("casa.txt", "w");
Modificadores
de Acesso
Modificador Tipo Descrição
“r” Somente leitura O programa pode ler o
arquivo
“w” Escrever Escreve no arquivo,
sobrescreve se ele já
existe
“a” Adicionar Escreve no fim do
arquivo
“r+” “w+” Ler e escrever
Escrevendo em um arquivo
•  Parâmetros
–  Ponteiro para o arquivo
–  Texto a ser escrito
fputs($p, $texto);
Fechando um arquivo
•  A função fclose() diz ao sistema que o seu
arquivo já foi escrito e pode ser fechado
•  Parâmetros
–  Ponteiro para um arquivo
fclose($p);
•  IMPORTANTE:
–  O programa só salva realmente no arquivo
depois de fclose()
Tudo junto - Criando um arquivo
•  Vamos criar um programa em PHP que cria
um arquivo de texto no diretório.
•  Depois vamos usar funções de arquivo
para ler o arquivo recém-criado
salvarPoema.php
<html>
<head><title>Salvar Poema</title></head>
<body>
<?
$poema = “Casa do Tempo Perdido, Drummond
Bati no portão do tempo perdido,
ninguém atendeu.
Bati segunda vez e mais outra e mais outra.
Resposta nenhuma.
“;
$p = fopen("casa.txt", "w");
fputs($p, $poema);
fclose($p);
?>
Arquivo Criado com Sucesso!!!
</body>
</html>
Carregando
um Arquivo
Verificando o fim do Arquivo
•  Geralmente você não sabe o tamanho do arquivo
•  fgets()
–  Pega linha por linha do arquivo
$linha = fgets($p);
•  feof()
–  Indica o fim do arquivo
while (!feof($p))
carregarPoema.php
<html>
<head>
<title>Carregar Poema</title>
</head>
<body>
<?
$c = fopen("casa.txt", "r");
$linha = fgets($c);
print "<h1>$linha</h1>n";
while (!feof($c)){
$linha = fgets($c);
print "$linha <br />n";
}
fclose($c);
?>
</body>
</html>
carregarPoema.php  NUMERANDO
<html>
<head>
<title>Carregar Poema</title>
</head>
<body>
<?
$c = fopen("casa.txt", "r");
$linha = fgets($c);
print "<h1>$linha</h1>n";
$i = 1;
while (!feof($c)){
$linha = fgets($c);
print “$i. $linha <br />n";
$i++;
}
fclose($c);
?>
</body>
</html>
Trabalhando com diretórios
A função
openDir()
•  Para usar diretórios do servidor web
•  Cria um atalho (ponteiro) para o diretório
•  Parâmetros
–  Caminho do diretório
$d = opendir($diretorio);
A função
chDir()
•  Muda o diretório atual para o diretório
especificado como parâmetro
•  Parâmetros
–  Caminho do diretório
chdir($diretorio);
A função
readDir()
•  Recupera o nome do próximo arquivo dentro
do diretório
•  Parâmetros
–  Ponteiro para diretório
$arquivoAtual = readDir($d);
listandoDiretorio.php
<html>
<head><title>Listar Arquivos</title></head>
<body>
<h1>Listando Arquivos</h1>
<?
$diretorio =“.";
$d = opendir($diretorio);
chdir($diretorio);
$atual = true;
while ($atual!= false){
$atual = readDir($d);
$arquivos[] = $atual;
}
foreach ($arquivos as $nome){
print “<a href=”$nome”>$nome</a> <br />”;
}
?>
</body>
</html>
Selecionando
Arquivos específicos
•  Seleciona arquivos de acordo com um critério
–  Expressões regulares no estilo Perl
–  Cria um outro array
$imagens = preg_grep("/jpg$|gif$/", $arquivos);
listandoDiretorio.php
<html>
<head><title>Album Simples</title></head>
<body>
<h1>Listando Arquivos</h1>
<?
$diretorio =“imagens";
$d = opendir($diretorio);
chdir($diretorio);
$arquivoAtual = true;
while ($arquivoAtual != false){
$arquivoAtual = readDir($d);
$arquivos[] = $arquivoAtual;
}
$arquivos = preg_grep("/jpg$|gif$/", $arquivos);
foreach ($arquivos as $atual){
print “<a href=”$diretorio/$atual”>
<img src=”$diretorio/$atual” width=”20” height=”20”></a>
<br />”;
}
?>
</body>
</html>
Concatenando
palavras
•  Operador de concatenação  .
$vogais = “A” . “E” . “I” . “O” . “U”;
print “$vogais”;
$output .= “texto qualquer“;
$output = $output . “texto qualquer”;
Álbum Simples
Preparando
as Imagens
•  Google
•  3 Imagens de cachorro
•  Tipo imagem
–  jpg
–  gif
albumSimples.php
<html>
<head>
<title>Album Simples</title>
</head>
<body>
<?
$nomeDiretorio =
"C:Arquivos de programasEasyPHP1-8www";
$dp = opendir($nomeDiretorio);
chdir($nomeDiretorio);
$arquivoAtual = true;
while ($arquivoAtual !== false){
$arquivoAtual = readDir($dp);
$arquivos[] = $arquivoAtual;
}
albumSimples.php
$imagens = preg_grep("/jpg$|gif$/", $arquivos);
$output = "";
foreach ($imagens as $arquivoAtual){
$output .= “
<a href=$arquivoAtual>
<img src="$arquivoAtual“ height=50 width=50>
</a>
“;
}
$fp = fopen(“imagens/albumSimples.html", "w");
fputs ($fp, $output);
fclose($fp);
print "<a href=imagens/albumSimples.html>Seu Album</a>n";
?>
borderMaker.html
<html>
<head>
<title>Escolha de Fonte</title>
</head>
<body>
<center>
<h1>Escolha de Fonte</h1>
<h3>Demonstração de como ler os campos do
um formulário HTML</h3>
borderMaker.html
<form method = "post“
action = "borderMaker.php">
<h3>Texto a modificar</h3>
<textarea name = “textoQualquer"
rows = "10“
cols = "40">TEXTO QUALQUER
</textarea>
borderMaker.html
<table border =“2”>
<tr>
<td>
<h3>Estilo da borda</h3>
</td>
<td colspan =“2”>
<h3>Tamanho da borda</h3>
</td>
</tr>
borderMaker.html
<tr>
<td>
<select name =“tipoBorda”>
<option value = "ridge">ridge</option>
<option value = "groove">groove</option>
<option value = "double">double</option>
<option value = "inset">inset</option>
<option value = "outset">outset</option>
</select>
</td>
borderMaker.html
<td>
<select size =“5” name = “tamanhoBorda”>
<option value = "1">1</option>
<option value = "2">2</option>
<option value = "3">3</option>
<option value = "5">5</option>
<option value = "10">10</option>
</select>
</td>
borderMaker.html
<td>
<input type = "radio“
name = “tipoMedida“
value = "px">pixels<br>
<input type = "radio“
name = " tipoMedida“
value = "pt">points<br>
<input type = "radio“
name = " tipoMedida“
value = "cm">centimeters<br>
<input type = "radio“
name = " tipoMedida“
value = "in">inches<br>
</td>
</tr>
</table>
borderMaker.html
<input type = "submit“
value = "Mostre-me">
</form>
</center>
</body>
</html>
borderMaker.php
<html>
<head><title>Sua Borda</title></head>
<body>
<h1>Your Output</h1>
<center>
<?
$estilo = <<<HERE
"border-width:$tamanhoBorda$tipoMedida;
border-style:$tipoBorda;
border-color:green“
HERE;
borderMaker.php
print "<div style = $estilo>";
print $textoQualquer;
print "</div>";
?>
</center>
</body>
</html>
Alterando
as informações recebidas
A função
file()
•  file()
–  Não usa ponteiros
–  Coloca o conteúdo do arquivo em um array
–  Cada linha ocupa um espaço do array
–  Não indicado para arquivos muito grandes
$poema = file($arquivo);
O comando
foreach()
•  foreach()
– Laço (loop) para percorrer um array
foreach ($poema as $linha){
$linha = str_replace("r", "w", $linha);
$linha = str_replace("s", "w", $linha);
$output .= rtrim($linha) . "<br>n";
}
O comando
str_replace()
•  str_replace()
– Substitui certas partes da string por
outra
foreach ($poema as $linhaAtual){
$linhaAtual =str_replace("r", "w", $linhaAtual);
$linhaAtual = str_replace("s", "w", $linhaAtual);
...
}
Casa do tempo perdido  Casa do tempo pewdido
Casa do tempo pewdido  Cawa do tempo pewdido
Cortando as sobras
•  rtrim()
–  Retira espaços em branco do lado direito da
String
–  rtrim()  Right Trim
•  Variante
–  ltrim()  Left Trim
bagucando.php
<html>
<head><title>Bagunçando</title></head>
<body>
<?
$arquivo = "casa.txt";
$poema = file($arquivo);
$output = "";
foreach ($poema as $linha){
$linha = str_replace("r", "w", $linha);
$linha = str_replace("s", "w", $linha);
$output .= rtrim($linha) . "<br>n";
}
$output .= "Tudo modificado!<br>n";
print $output;
?>
</body>
</html>
Desafio
•  Criar uma função que receba uma data no
formato dd-mm-yyyy e devolva a data no
formato dd/mm/yyyy
function formataData($data) {
$data = str_replace(“-”, “/”, $data);
return $data;
}
formataData(“04-04-2004”);
Formatando Textos
Transfomando String em Array
•  split()
–  Transforma uma String em um Array
•  list()
–  Não é uma função
–  É uma construção de dados
–  Recebe o conteúdo de um array e põe em várias
variáveis
list($nome, $email) = split("t", $linha);
lista.dat
listaEmail.php
<html>
<head><title>Lista de Emails</title></head>
<body>
<form>
<?
$dados = file("lista.dat");
foreach($dados as $linha){
$linha = rtrim($linha);
print "<h3>$linha</h3>";
list($nome, $email) = split("t", $linha);
print "Nome: $nome";
listaEmail.php
$messagem = “
Para: $email
Caro $nome:
Obrigado por participar do nosso forum.
Atenciosamente,
FA7.
“;
print "<pre>$messagem</pre>";
}
?>
</body>
</html>
QuizMachine
estilo.css
.secao {
border-style:solid;
border-width:thin;
border-color:#000066;
width: 400px;
background-color:#E5E5E5;
}
QuizMachine
Página baseada em funções
<html>
<head>
<title>Quiz Machine</title>
</head>
<body>
<h1>Quiz Machine</h1>
<?
recuperarArquivos();
exibirTeste();
exibirEditar();
exibirLog();
?>
</body>
</html>
Página baseada em funções
<?
include("funcoes.php");
?>
<html>
<head>
<title>Quiz Machine</title>
</head>
<body>
<h1>Quiz Machine</h1>
<?
//recuperarArquivos();
exibirTeste();
//exibirEditar();
//exibirLog();
?>
</body>
</html>
Exibindo um teste
funcoes.php
function exibirTeste(){
global $arquivos;
print "
<center>
<div class="secao">
<form action="jogarQuiz.php" method="post">
<h3>Jogue um quiz</h3>
<p>Senha do quiz:
<input type=“password" name="senha">
</p>
<p>Quiz: <select name="pegarArquivo">";
funcoes.php
$html = preg_grep("/htm$/", $arquivos);
foreach ($html as $temp){
$quiz=substr($temp, 0, strlen($temp) - 4);
print "<option value=$quiz>$quiz</option>n";
}
print "</select></p>
<p><input type="submit" value="ok"></p>
</div>
</center>
</form>
";
}
Recuperando arquivos
<?
function recuperarArquivos(){
global $dirPtr, $arquivos;
chdir(".");
$dirPtr = openDir(".");
$arquivoAtual = readDir($dirPtr);
while ($arquivoAtual !== false){
$arquivos[] = $arquivoAtual;
$arquivoAtual = readDir($dirPtr);
}
}
Editando um quiz
funcoes.php
function exibirEditar(){
global $arquivos;
$mestres = preg_grep("/mestre$/", $arquivos);
print "
<center>
<div class="secao">
<form action="editarQuiz.php" method="post">
<h3>Editar um quiz</h3>
<p>Senha Administrativa:
<input type="password" name="senha"/>
</p>
<p>Quiz:
<select name="editarArquivo">
<option value="novo">Novo Quiz</option>
";
funcoes.php
foreach ($mestres as $original){
$nome = substr($original, 0, strlen($original) - 8);
print "<option value="$original">$nome</option>n";
}
print "
</select>
<p><input type = "submit" value = "ok"></p>
</form>
</div>
</center>
";
}
Imprimindo uma variável na tela facilmente
•  Para imprimir
<? print $nomeDaVariavel; ?>
•  Simplificademente para uma linha ou única
variável
<?= $nomeDaVariavel ?>
EditarQuiz
editarQuiz.php
<html>
<head>
<title>Editar Quiz</
title>
</head>
<body>
<?
$dadosQuiz = "";
$senha = $_POST[‘senha’];
$editarArquivo =
$_POST[‘editarArquivo’];
if ($senha != "phpfa7"){
print "Senha Inválida!";
} else {
if ($editarArquivo == "novo"){
$nomeQuiz = "sample test";
$emailQuiz = "root@localhost";
$dadosQuiz = "q:a:b:c:d:correct";
$senhaQuiz = "php";
} else {
$fp = fopen($editarArquivo, "r");
$nomeQuiz = fgets($fp);
$emailQuiz = fgets($fp);
$senhaQuiz = fgets($fp);
while (!feof($fp)){
$dadosQuiz .= fgets($fp);
}
}
?>
editarQuiz.php
<center>
<div class="secao">
<form action="escreverQuiz.php" method="post">
<p>Nome do Quiz:
<input type="text" name="nomeQuiz" value="<?= $nomeQuiz ?>">
</p>
<p>Email do elaborador:
<input type="text" name="emailQuiz" value="<?= $emailQuiz ?>">
</p>
<p>Senha:
<input type="password" name="senhaQuiz" value="<?= $senhaQuiz ?>">
</p>
<p>Perguntas e Respostas:</p>
<p>
<textarea name="dados" rows="5" cols="30"><?= $dadosQuiz ?>
</textarea>
</p>
<p><input type="submit" value="Salvar quiz"></p>
</form>
<? } ?>
</div>
</center>
editarQuiz.php
<tr>
<td rowspan = “1” colspan = “2”>
<textarea name = "dadosQuiz“ rows = "10" cols = "60">
<?= $dadosQuiz ?>
</textarea>
</td>
</tr>
<tr>
<td colspan = "2">
<input type = "submit“ value = "Salvar quiz">
</td>
</tr>
</table>
</form>
<? } ?>
</body>
</html>
editarQuiz.php
$dadosQuiz = "";
if ($senha != "phpfa7"){
print "Senha Inválida!";
} else {
if ($editarArquivo == "novo"){
$nomeQuiz = "sample test";
$emailQuiz = "root@localhost";
$dadosQuiz = "q:a:b:c:d:correct";
$senhaQuiz = "php";
} else {
$fp = fopen($editarArquivo, "r");
$nomeQuiz = fgets($fp);
$emailQuiz = fgets($fp);
$senhaQuiz = fgets($fp);
while (!feof($fp)){
$dadosQuiz .= fgets($fp);
}
}
Baixar Material
•  http://www.fa7.edu.br/phpparainiciantes/
modulo2/quiz.zip
•  Descompactar
•  Abrir o escreverQuiz.php
escreverQuiz.php
$arquivoBase = str_replace(" ", "_", $nomeQuiz);
$arquivoHtml = $arquivoBase . ".html";
$arquivoMestre = $arquivoBase . ".mas";
$htfp = fopen($arquivoHtml, "w");
$dadosHtml = construirHTML();
fputs($htfp, $dadosHtml);
fclose($htfp);
$msfp = fopen($arquivoMestre, "w");
$dadosMestre = construirMestre();
fputs($msfp, $dadosMestre);
print "
<pre>$dadosMestre</pre>
";
fclose($msfp);
escreverQuiz.php
function construirMestre(){
global $nomeQuiz, $emailQuiz, $senhaQuiz, $dadosQuiz;
$dadosMestre = $nomeQuiz . "n";
$dadosMestre .= $emailQuiz . "n";
$dadosMestre .= $senhaQuiz . "n";
$dadosMestre .= $dadosQuiz;
return $dadosMestre;
}
Percorrendo o arquivo
$numeroQuestao = 1;
foreach ($problemas as $problemaAtual){
list($questao,
$respostaA,
$respostaB,
$respostaC,
$respostaD,
$correct) = explode (":", $problemaAtual);
Criando String delimitadas por caracteres
•  Exemplo
–  “Qual meu nome?:Dudu:Du:Edu”
–  “Animais-cachorro-gato”
list($variavel1, $variavel2, $varialvel3)
= explode (“-”, $animais);
Pontuando o Quiz
Arquivo Mestre(.mas)
Meu Nome
root@localhost
nome
Qual meu nome?:Eduardo:Marcelo:Álvaro:Mauro:A
Baixar Material
•  http://www.fa7.edu.br/phpparainiciantes/
modulo2/quiz2.zip
•  Descompactar
•  Abrir o pontuarQuiz.php
Pontuando o Quiz
Abrindo os Arquivos
//abre o arquivo master correto para leitura
$arquivoBase = str_replace(" ", "_", $nomeQuiz);
$arquivoMas = $arquivoBase . ".mestre";
$msfp = fopen($arquivoMas, "r");
//Cria o nome do arquivo de log
$logFile = $arquivoBase . ".log";
//As tres primeiras linhas são o nome, email do
instrutor e senha
$nomeQuiz = fgets($msfp);
$emailQuiz = fgets($msfp);
$senhaQuiz = fgets($msfp);
Pontuando o Quiz
Criando uma Resposta
//percorre as questoes em busca da
$numeroCorretas = 0;
$numeroQuestao = 1;
while (!feof($msfp)){
$problemaAtual = fgets($msfp);
list($questao, $respostaA, $respostaB, $respostaC,
$respostaD, $correta) = split (":", $problemaAtual);
$respostaCorreta[$numeroQuestao] = $correta;
$numeroQuestao++;}
fclose($msfp);
Pontuando o Quiz
Checando a resposta do usuário
//Confere as repostas do usuário
for($numeroQuestao = 1;
$numeroQuestao <= count($quest); $numeroQuestao++){
$jogada = $quest[$numeroQuestao];
$correta = $respostaCorreta[$numeroQuestao];
$correta = rtrim($correta);
if ($jogada == $correta){
//Acertos e erros
$numeroCorretas++;
print "Problema nº $numeroQuestao está correta<br>
n"; } else {
print “
<font color = red>Problema nº $numeroQuestao está
incorreta</font><br>n";
} // fim do if
} // fim do for
Pontuando o Quiz
Exibindo o resultado
print “
Você tem $numeroCorretas correta(s)<br>n";
$porcentagem = ($numeroCorretas/count($quest)) * 100;
print “
$porcentagem %<br>n";$hoje = date ("F j, Y, g:i a");
$location = getenv("REMOTE_ADDR");
//adiciona o resultado ao arquivo de log
$lgfp = fopen($logFile, "a");
$linhaDeLog = $jogador . "t";
$linhaDeLog .= $hoje . "t";
$linhaDeLog .= $location . "t";
$linhaDeLog .= $numeroCorretas . "t";
$linhaDeLog .= $porcentagem . "n";
fputs($lgfp, $linhaDeLog);
fclose($lgfp);?></html>
Visualizando
LOG
visualizarLog.php
<?
if ($senha == "phpfa7"){
$linhas = file($logFile);
print "<pre>n";
foreach ($linhas as $linha){
print $linha;
} // fim foreach
print "</pre>n";
} else {
print “
<font color = "red“ size = +2>
Você não tem permissão para exibir este arquivo
</font>";
} // fim if
?>
Dúvidas?
Obrigado!

More Related Content

What's hot

Introdução à MEAN Stack
Introdução à MEAN StackIntrodução à MEAN Stack
Introdução à MEAN StackBruno Catão
 
PHP para Adultos: Clean Code e Object Calisthenics
PHP para Adultos: Clean Code e Object CalisthenicsPHP para Adultos: Clean Code e Object Calisthenics
PHP para Adultos: Clean Code e Object CalisthenicsGuilherme Blanco
 
modernizando a arquitertura de sua aplicação
modernizando a arquitertura  de sua aplicaçãomodernizando a arquitertura  de sua aplicação
modernizando a arquitertura de sua aplicaçãoAntonio Spinelli
 
Da argila ao forte: como desenvolver uma loja com PagSeguro
Da argila ao forte: como desenvolver uma loja com PagSeguroDa argila ao forte: como desenvolver uma loja com PagSeguro
Da argila ao forte: como desenvolver uma loja com PagSeguroMichael Castillo Granados
 
Object Calisthenics: relaxe e escreva códigos simples
Object Calisthenics: relaxe e escreva códigos simplesObject Calisthenics: relaxe e escreva códigos simples
Object Calisthenics: relaxe e escreva códigos simplesOtávio Calaça Xavier
 
Meu primeiro tema de WordPress
Meu primeiro tema de WordPressMeu primeiro tema de WordPress
Meu primeiro tema de WordPressLuan Muniz
 
Aplicações rápidas para a Web com Django
Aplicações rápidas para a Web com DjangoAplicações rápidas para a Web com Django
Aplicações rápidas para a Web com DjangoFreedom DayMS
 

What's hot (18)

Minicurso de jQuery
Minicurso de jQueryMinicurso de jQuery
Minicurso de jQuery
 
Java script - funções
Java script - funçõesJava script - funções
Java script - funções
 
Java script aula 10 - angularjs
Java script   aula 10 - angularjsJava script   aula 10 - angularjs
Java script aula 10 - angularjs
 
Introdução à MEAN Stack
Introdução à MEAN StackIntrodução à MEAN Stack
Introdução à MEAN Stack
 
PHP FrameWARks - FISL
PHP FrameWARks - FISLPHP FrameWARks - FISL
PHP FrameWARks - FISL
 
PHP para Adultos: Clean Code e Object Calisthenics
PHP para Adultos: Clean Code e Object CalisthenicsPHP para Adultos: Clean Code e Object Calisthenics
PHP para Adultos: Clean Code e Object Calisthenics
 
modernizando a arquitertura de sua aplicação
modernizando a arquitertura  de sua aplicaçãomodernizando a arquitertura  de sua aplicação
modernizando a arquitertura de sua aplicação
 
Da argila ao forte: como desenvolver uma loja com PagSeguro
Da argila ao forte: como desenvolver uma loja com PagSeguroDa argila ao forte: como desenvolver uma loja com PagSeguro
Da argila ao forte: como desenvolver uma loja com PagSeguro
 
Java script aula 02 - operadores
Java script   aula 02 - operadoresJava script   aula 02 - operadores
Java script aula 02 - operadores
 
Phpex2
Phpex2Phpex2
Phpex2
 
Object Calisthenics: relaxe e escreva códigos simples
Object Calisthenics: relaxe e escreva códigos simplesObject Calisthenics: relaxe e escreva códigos simples
Object Calisthenics: relaxe e escreva códigos simples
 
Aula 8 php
Aula 8 phpAula 8 php
Aula 8 php
 
NotORM
NotORMNotORM
NotORM
 
Meu primeiro tema de WordPress
Meu primeiro tema de WordPressMeu primeiro tema de WordPress
Meu primeiro tema de WordPress
 
PHP MySQL Aula 07
PHP MySQL Aula 07PHP MySQL Aula 07
PHP MySQL Aula 07
 
Aplicações rápidas para a Web com Django
Aplicações rápidas para a Web com DjangoAplicações rápidas para a Web com Django
Aplicações rápidas para a Web com Django
 
Redis na Prática
Redis na PráticaRedis na Prática
Redis na Prática
 
HTML - aula 1
HTML - aula 1HTML - aula 1
HTML - aula 1
 

Viewers also liked

Php Estructuras Selectivas
Php Estructuras SelectivasPhp Estructuras Selectivas
Php Estructuras Selectivasabgigail
 
Curso de php do básico ao avançado
Curso de php do básico ao avançadoCurso de php do básico ao avançado
Curso de php do básico ao avançadoThiago Carlos
 
Introdução à Linguagem Ruby - Fundamentos - Parte 2
 Introdução à Linguagem Ruby - Fundamentos - Parte 2 Introdução à Linguagem Ruby - Fundamentos - Parte 2
Introdução à Linguagem Ruby - Fundamentos - Parte 2Eduardo Mendes
 
Turbinando o desenvolvimento com Eclipse
Turbinando o desenvolvimento com EclipseTurbinando o desenvolvimento com Eclipse
Turbinando o desenvolvimento com EclipseMarcos Sousa
 
Desenvolvimento Web com PHP parte 7
Desenvolvimento Web com PHP parte 7Desenvolvimento Web com PHP parte 7
Desenvolvimento Web com PHP parte 7Eduardo Mendes
 
The Power of Collaboration to Build Your Own Startup
The Power of Collaboration to Build Your Own StartupThe Power of Collaboration to Build Your Own Startup
The Power of Collaboration to Build Your Own StartupTaufan Erfiyanto
 
Academia do Arquiteto Globalcode
Academia do Arquiteto GlobalcodeAcademia do Arquiteto Globalcode
Academia do Arquiteto GlobalcodeGlobalcode
 
Desenvolvimento web com PHP parte 3
Desenvolvimento web com PHP parte 3Desenvolvimento web com PHP parte 3
Desenvolvimento web com PHP parte 3Eduardo Mendes
 
TDD Projeto e Estrategias
TDD Projeto e EstrategiasTDD Projeto e Estrategias
TDD Projeto e EstrategiasEduardo Mendes
 
Testes de Software parte 2
Testes de Software parte 2Testes de Software parte 2
Testes de Software parte 2Eduardo Mendes
 
Engenharia de Requisitos
Engenharia de RequisitosEngenharia de Requisitos
Engenharia de RequisitosEduardo Mendes
 
TDD - Prática com RSpec
TDD - Prática com RSpecTDD - Prática com RSpec
TDD - Prática com RSpecEduardo Mendes
 
Acesso a banco de dados com JDBC
Acesso a banco de dados com JDBCAcesso a banco de dados com JDBC
Acesso a banco de dados com JDBCEduardo Mendes
 
Desenvolvimento web com PHP parte 4
Desenvolvimento web com PHP parte 4Desenvolvimento web com PHP parte 4
Desenvolvimento web com PHP parte 4Eduardo Mendes
 

Viewers also liked (20)

Php Estructuras Selectivas
Php Estructuras SelectivasPhp Estructuras Selectivas
Php Estructuras Selectivas
 
Curso de php do básico ao avançado
Curso de php do básico ao avançadoCurso de php do básico ao avançado
Curso de php do básico ao avançado
 
Curso PHP: Básico JavaScript
Curso PHP: Básico JavaScriptCurso PHP: Básico JavaScript
Curso PHP: Básico JavaScript
 
Jquery
JqueryJquery
Jquery
 
Introdução à Linguagem Ruby - Fundamentos - Parte 2
 Introdução à Linguagem Ruby - Fundamentos - Parte 2 Introdução à Linguagem Ruby - Fundamentos - Parte 2
Introdução à Linguagem Ruby - Fundamentos - Parte 2
 
Turbinando o desenvolvimento com Eclipse
Turbinando o desenvolvimento com EclipseTurbinando o desenvolvimento com Eclipse
Turbinando o desenvolvimento com Eclipse
 
Desenvolvimento Web com PHP parte 7
Desenvolvimento Web com PHP parte 7Desenvolvimento Web com PHP parte 7
Desenvolvimento Web com PHP parte 7
 
The Power of Collaboration to Build Your Own Startup
The Power of Collaboration to Build Your Own StartupThe Power of Collaboration to Build Your Own Startup
The Power of Collaboration to Build Your Own Startup
 
Introdução ao TDD
Introdução ao TDDIntrodução ao TDD
Introdução ao TDD
 
Academia do Arquiteto Globalcode
Academia do Arquiteto GlobalcodeAcademia do Arquiteto Globalcode
Academia do Arquiteto Globalcode
 
Desenvolvimento web com PHP parte 3
Desenvolvimento web com PHP parte 3Desenvolvimento web com PHP parte 3
Desenvolvimento web com PHP parte 3
 
TDD Projeto e Estrategias
TDD Projeto e EstrategiasTDD Projeto e Estrategias
TDD Projeto e Estrategias
 
Testes de Software parte 2
Testes de Software parte 2Testes de Software parte 2
Testes de Software parte 2
 
Engenharia de Requisitos
Engenharia de RequisitosEngenharia de Requisitos
Engenharia de Requisitos
 
AngularJS - Rotas
AngularJS - RotasAngularJS - Rotas
AngularJS - Rotas
 
TDD - Prática com RSpec
TDD - Prática com RSpecTDD - Prática com RSpec
TDD - Prática com RSpec
 
Acesso a banco de dados com JDBC
Acesso a banco de dados com JDBCAcesso a banco de dados com JDBC
Acesso a banco de dados com JDBC
 
Html Aula 1 - parte 2
Html Aula 1 - parte 2Html Aula 1 - parte 2
Html Aula 1 - parte 2
 
RSpec com doubles
RSpec com doublesRSpec com doubles
RSpec com doubles
 
Desenvolvimento web com PHP parte 4
Desenvolvimento web com PHP parte 4Desenvolvimento web com PHP parte 4
Desenvolvimento web com PHP parte 4
 

Similar to Iniciando PHP - Visão Geral e Configuração

Similar to Iniciando PHP - Visão Geral e Configuração (20)

Prog web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosProg web 02-php-primeiros-passos
Prog web 02-php-primeiros-passos
 
Aula 02 - Introdução ao PHP - Programação Web
Aula 02  - Introdução ao PHP - Programação WebAula 02  - Introdução ao PHP - Programação Web
Aula 02 - Introdução ao PHP - Programação Web
 
PHP GERAL
PHP GERALPHP GERAL
PHP GERAL
 
Ganhando tempo com casos de testes
Ganhando tempo com casos de testesGanhando tempo com casos de testes
Ganhando tempo com casos de testes
 
Aula 1 linguagem html (1)
Aula 1   linguagem html (1)Aula 1   linguagem html (1)
Aula 1 linguagem html (1)
 
Php
PhpPhp
Php
 
HTML & CSS - Aula 4
HTML & CSS - Aula 4HTML & CSS - Aula 4
HTML & CSS - Aula 4
 
Angular JS, você precisa conhecer
Angular JS, você precisa conhecerAngular JS, você precisa conhecer
Angular JS, você precisa conhecer
 
Symfony - Framework PHP de alta produtividade
Symfony - Framework PHP de alta produtividadeSymfony - Framework PHP de alta produtividade
Symfony - Framework PHP de alta produtividade
 
JavaScript
JavaScriptJavaScript
JavaScript
 
Memcached, Gearman e Sphinx
Memcached, Gearman e SphinxMemcached, Gearman e Sphinx
Memcached, Gearman e Sphinx
 
Curso de Introdução - PHP
Curso de Introdução - PHPCurso de Introdução - PHP
Curso de Introdução - PHP
 
Simplificando o Javascrip
Simplificando o JavascripSimplificando o Javascrip
Simplificando o Javascrip
 
Play Framework - FLISOL
Play Framework - FLISOLPlay Framework - FLISOL
Play Framework - FLISOL
 
apostila.pdf
apostila.pdfapostila.pdf
apostila.pdf
 
Aula 12 Relatório - Tabelas
Aula 12   Relatório - TabelasAula 12   Relatório - Tabelas
Aula 12 Relatório - Tabelas
 
Programação Web com jQuery
Programação Web com jQueryProgramação Web com jQuery
Programação Web com jQuery
 
Html, css, js, ajax
Html, css, js, ajaxHtml, css, js, ajax
Html, css, js, ajax
 
Introdução a HTML, CSS, JS, Ajax
Introdução a HTML, CSS, JS, AjaxIntrodução a HTML, CSS, JS, Ajax
Introdução a HTML, CSS, JS, Ajax
 
Html - Aula 3
Html - Aula 3Html - Aula 3
Html - Aula 3
 

More from Eduardo Mendes

JavaScript - Introdução com Orientação a Objetos
JavaScript - Introdução com Orientação a ObjetosJavaScript - Introdução com Orientação a Objetos
JavaScript - Introdução com Orientação a ObjetosEduardo Mendes
 
Angular JS - Fundamentos
Angular JS - FundamentosAngular JS - Fundamentos
Angular JS - FundamentosEduardo Mendes
 
Singleton - Padrão de Projeto
Singleton - Padrão de ProjetoSingleton - Padrão de Projeto
Singleton - Padrão de ProjetoEduardo Mendes
 
Introdução à Internet, Http e HTML
Introdução à Internet, Http e HTMLIntrodução à Internet, Http e HTML
Introdução à Internet, Http e HTMLEduardo Mendes
 
Estimativas de Esforço - Engenharia de Software
Estimativas de Esforço - Engenharia de SoftwareEstimativas de Esforço - Engenharia de Software
Estimativas de Esforço - Engenharia de SoftwareEduardo Mendes
 
Java web 6 JSP Expression Language Taglib parte 2
Java web 6 JSP Expression Language Taglib parte 2Java web 6 JSP Expression Language Taglib parte 2
Java web 6 JSP Expression Language Taglib parte 2Eduardo Mendes
 
Validações no Ruby on Rails
Validações no Ruby on Rails Validações no Ruby on Rails
Validações no Ruby on Rails Eduardo Mendes
 
Padroes Template-Method (Método Gabarito)
Padroes Template-Method (Método Gabarito)Padroes Template-Method (Método Gabarito)
Padroes Template-Method (Método Gabarito)Eduardo Mendes
 
PHP e MySQL para iniciantes
PHP e MySQL para iniciantesPHP e MySQL para iniciantes
PHP e MySQL para iniciantesEduardo Mendes
 
Introdução a Padrões de Projeto
Introdução a Padrões de ProjetoIntrodução a Padrões de Projeto
Introdução a Padrões de ProjetoEduardo Mendes
 

More from Eduardo Mendes (20)

JavaScript - Introdução com Orientação a Objetos
JavaScript - Introdução com Orientação a ObjetosJavaScript - Introdução com Orientação a Objetos
JavaScript - Introdução com Orientação a Objetos
 
Angular JS - Fundamentos
Angular JS - FundamentosAngular JS - Fundamentos
Angular JS - Fundamentos
 
Singleton - Padrão de Projeto
Singleton - Padrão de ProjetoSingleton - Padrão de Projeto
Singleton - Padrão de Projeto
 
Layout Fluido
Layout FluidoLayout Fluido
Layout Fluido
 
Web Design Responsivo
Web Design ResponsivoWeb Design Responsivo
Web Design Responsivo
 
Html - Aula 4
Html - Aula 4Html - Aula 4
Html - Aula 4
 
Introdução à Internet, Http e HTML
Introdução à Internet, Http e HTMLIntrodução à Internet, Http e HTML
Introdução à Internet, Http e HTML
 
ExtJS-4
ExtJS-4ExtJS-4
ExtJS-4
 
Jquery 2
Jquery 2Jquery 2
Jquery 2
 
Estimativas de Esforço - Engenharia de Software
Estimativas de Esforço - Engenharia de SoftwareEstimativas de Esforço - Engenharia de Software
Estimativas de Esforço - Engenharia de Software
 
Java web 6 JSP Expression Language Taglib parte 2
Java web 6 JSP Expression Language Taglib parte 2Java web 6 JSP Expression Language Taglib parte 2
Java web 6 JSP Expression Language Taglib parte 2
 
Validações no Ruby on Rails
Validações no Ruby on Rails Validações no Ruby on Rails
Validações no Ruby on Rails
 
Padrão Iterator
Padrão IteratorPadrão Iterator
Padrão Iterator
 
Padroes Template-Method (Método Gabarito)
Padroes Template-Method (Método Gabarito)Padroes Template-Method (Método Gabarito)
Padroes Template-Method (Método Gabarito)
 
Padrão Command
Padrão CommandPadrão Command
Padrão Command
 
Padrão Fachada
Padrão FachadaPadrão Fachada
Padrão Fachada
 
Padrão Adapter
Padrão AdapterPadrão Adapter
Padrão Adapter
 
Web Design Responsivo
Web Design ResponsivoWeb Design Responsivo
Web Design Responsivo
 
PHP e MySQL para iniciantes
PHP e MySQL para iniciantesPHP e MySQL para iniciantes
PHP e MySQL para iniciantes
 
Introdução a Padrões de Projeto
Introdução a Padrões de ProjetoIntrodução a Padrões de Projeto
Introdução a Padrões de Projeto
 

Iniciando PHP - Visão Geral e Configuração