62
introdução curso: php / aula: 01 introdução / funcionamento / prá3ca / exercícios rogério gonçalves – [email protected]

introdução* · introdução* curso: php/ aula:01 introdução/ funcionamento/ práca / exercícios# rogério#gonçalves#– [email protected]#

  • Upload
    others

  • View
    26

  • Download
    0

Embed Size (px)

Citation preview

Page 1: introdução* · introdução* curso: php/ aula:01 introdução/ funcionamento/ práca / exercícios# rogério#gonçalves#– rogerio@digitale.com.br#

introdução  

curso:  php  /  aula:  01  introdução  /  funcionamento  /  prá3ca  /  exercícios  

 

rogério  gonçalves  –  [email protected]  

Page 2: introdução* · introdução* curso: php/ aula:01 introdução/ funcionamento/ práca / exercícios# rogério#gonçalves#– rogerio@digitale.com.br#

introdução  

curso:  php  /  aula:  01  introdução  /  funcionamento  /  prá3ca  /  exercícios  

 

 rogério  gonçalves  

gerente  de  projetos  >  digitale  agência  digital    

[email protected]    

hDp://www.digitale.com.br              

hDp://leveme.la/rogerio  

rogério  gonçalves  –  [email protected]  

Page 3: introdução* · introdução* curso: php/ aula:01 introdução/ funcionamento/ práca / exercícios# rogério#gonçalves#– rogerio@digitale.com.br#

este  curso  

curso:  php  /  aula:  01  introdução  /  funcionamento  /  prá3ca  /  exercícios  

 

rogério  gonçalves  –  [email protected]  

Page 4: introdução* · introdução* curso: php/ aula:01 introdução/ funcionamento/ práca / exercícios# rogério#gonçalves#– rogerio@digitale.com.br#

introdução  

curso:  php  /  aula:  01  introdução  /  funcionamento  /  prá3ca  /  exercícios  

 

o  que  é  php?    pra  que  serve?    como,  onde  e  quando  eu  uso?    o  que  eu  preciso  pra  usar?    porque  não  java?  .net?  asp?    o  que  esperar  desse  curso?  

rogério  gonçalves  –  [email protected]  

Page 5: introdução* · introdução* curso: php/ aula:01 introdução/ funcionamento/ práca / exercícios# rogério#gonçalves#– rogerio@digitale.com.br#

introdução  

curso:  php  /  aula:  01  introdução  /  funcionamento  /  prá3ca  /  exercícios  

 

rogério  gonçalves  –  [email protected]  

Page 6: introdução* · introdução* curso: php/ aula:01 introdução/ funcionamento/ práca / exercícios# rogério#gonçalves#– rogerio@digitale.com.br#

php  

curso:  php  /  aula:  01  introdução  /  funcionamento  /  prá3ca  /  exercícios  

 

rogério  gonçalves  –  [email protected]  

Page 7: introdução* · introdução* curso: php/ aula:01 introdução/ funcionamento/ práca / exercícios# rogério#gonçalves#– rogerio@digitale.com.br#

introdução  

curso:  php  /  aula:  01  introdução  /  funcionamento  /  prá3ca  /  exercícios  

 

histórico    •  1995  >  Rasmus  Lerdorf  >  PHP  ("Personal  Home  Page”)  •  1997  >  PHP  2  •  1998  >  Zeev  Suraski  e  Andi  Gutmans  >  PHP  3  ("PHP:  Hypertext  Preprocessor”)  •  1999  >  Zend  Engine  •  2000  >  PHP  4  •  2004  >  PHP  5  •  2008  >  PHP  5  =  única  versão  estável  em  desenvolvimento  •  Hoje  >  The  PHP  Group  

rogério  gonçalves  –  [email protected]  

h@p://en.wikipedia.org/wiki/Rasmus_Lerdorf  

Page 8: introdução* · introdução* curso: php/ aula:01 introdução/ funcionamento/ práca / exercícios# rogério#gonçalves#– rogerio@digitale.com.br#

introdução  

curso:  php  /  aula:  01  introdução  /  funcionamento  /  prá3ca  /  exercícios    

 

o  modelo  web   server-­‐side  

client-­‐side  

recursos  

rogério  gonçalves  –  [email protected]  

Page 9: introdução* · introdução* curso: php/ aula:01 introdução/ funcionamento/ práca / exercícios# rogério#gonçalves#– rogerio@digitale.com.br#

introdução  

curso:  php  /  aula:  01  introdução  /  funcionamento  /  prá3ca  /  exercícios    

 

conteúdo  está3co   server-­‐side  

client-­‐side  

página  html  

página  html  

Download  do  arquivo  igual  (cópia)  

<doctype…>!<html>!<head>…<head>!<body>!<h1>olá mundo!</h1>!</body>!</html>!

<doctype…>!<html>!<head>…<head>!<body>!<h1>olá mundo!</h1>!</body>!</html>!

rogério  gonçalves  –  [email protected]  

Page 10: introdução* · introdução* curso: php/ aula:01 introdução/ funcionamento/ práca / exercícios# rogério#gonçalves#– rogerio@digitale.com.br#

introdução  

curso:  php  /  aula:  01  introdução  /  funcionamento  /  prá3ca  /  exercícios    

 

conteúdo  dinâmico   server-­‐side  

client-­‐side  

página  php  

página  html  

Download  do  resultado  interpretado  

<doctype…>!<html>!<head>…<head>!<body>!<h1>olá mundo!</h1>!<p><?= date(H:i); ?></p>!</body>!</html>!

<doctype…>!<html>!<head>…<head>!<body>!<h1>olá mundo!</h1>!<p>22:10</p>!</body>!</html>!

interpretador  

<doctype…>!<html>!<head>…<head>!<body>!<h1>olá mundo!</h1>!<p>22:10</p>!</body>!</html>!página  html  

rogério  gonçalves  –  [email protected]  

Page 11: introdução* · introdução* curso: php/ aula:01 introdução/ funcionamento/ práca / exercícios# rogério#gonçalves#– rogerio@digitale.com.br#

funcionamento  

curso:  php  /  aula:  01  introdução  /  funcionamento  /  prá3ca  /  exercícios    

 

rogério  gonçalves  –  [email protected]  

Page 12: introdução* · introdução* curso: php/ aula:01 introdução/ funcionamento/ práca / exercícios# rogério#gonçalves#– rogerio@digitale.com.br#

funcionamento  

curso:  php  /  aula:  01  introdução  /  funcionamento  /  prá3ca  /  exercícios    

 

php  -­‐  algumas  informações    •  versão  atual  5.4  (estável)  •  linguagem  interpretada  •  executado  como  um  módulo  dentro  do  servidor  web  •  sintaxe  simples  •  grande  comunidade  de  usuários  através  do  mundo  •  grande  u3lização  e  suporte  nos  servidores  web    •  grande  velocidade  e  estabilidade  •  orientação  a  objetos  •  bancos  de  dados  

rogério  gonçalves  –  [email protected]  

Page 13: introdução* · introdução* curso: php/ aula:01 introdução/ funcionamento/ práca / exercícios# rogério#gonçalves#– rogerio@digitale.com.br#

funcionamento  

curso:  php  /  aula:  01  introdução  /  funcionamento  /  prá3ca  /  exercícios    

 

html  (conteúdo  está3co)    •  linguagem  de  marcação  (tags  –  abre/fecha)  •  NÃO  é  uma  linguagem  de  programação    

<!DOCTYPE...>!<html>!

!<head>...</head>!!<body>!! !<h1>Título</h1>!! !<p>Parágrafo <strong>negrito</strong> ...</p>!! !<img src=“logo.gif” />!!</body>!

</html>!

rogério  gonçalves  –  [email protected]  

Page 14: introdução* · introdução* curso: php/ aula:01 introdução/ funcionamento/ práca / exercícios# rogério#gonçalves#– rogerio@digitale.com.br#

funcionamento  

curso:  php  /  aula:  01  introdução  /  funcionamento  /  prá3ca  /  exercícios    

 

php  (conteúdo  dinâmico)    •  linguagem  de  programação  •  trabalha  em  conjunto  com  o  html  para  permi3r  que  o  conteúdo  final  seja  diferente  de  

acordo  com  as  variáveis  e  a  programação  definida  

<!DOCTYPE...>!<html>!

!<head>...</head>!!<body>!! !<? if( $usuarioLogado ){ ?>!! ! !<h1>Título</h1>!! ! !<p>Parágrafo <strong>negrito</strong> ...</p>!! ! !<img src=“logo.gif” />!! !<? } else{ ?>!! ! !<p>Você precisa estar logado para acessar essa página</p>!! !<? } ?>!!</body>!

</html>!

rogério  gonçalves  –  [email protected]  

Page 15: introdução* · introdução* curso: php/ aula:01 introdução/ funcionamento/ práca / exercícios# rogério#gonçalves#– rogerio@digitale.com.br#

funcionamento  

curso:  php  /  aula:  01  introdução  /  funcionamento  /  prá3ca  /  exercícios    

 

php  -­‐  u3lização    •  os  comandos  devem  ser  incluídos  entre  os  delimitadores:  <?  e  ?>  ou  <?php  e  ?>  •  qualquer  comando  não-­‐php  dentro  dos  delimitadores  poderá  gerar  um  erro  de  sintaxe  

 •  comentários  de  uma  linha  são  indicados  com  //  e  de  múl3plas  linhas  com  /*  e  */  

!<?!!if( $usuarioLogado ){!! !echo "Título";!! !<p>Parágrafo...</p>!!}!!?>!

!<?!!echo ”texto”; // comentário de uma linha!

!!/*echo "Texto";!!echo "Texto 2"; comentário de várias linhas */!!?>!

rogério  gonçalves  –  [email protected]  

Page 16: introdução* · introdução* curso: php/ aula:01 introdução/ funcionamento/ práca / exercícios# rogério#gonçalves#– rogerio@digitale.com.br#

conceitos  básicos  

curso:  php  /  aula:  01  introdução  /  funcionamento  /  práSca  /  exercícios    

 

variáveis,  loops,  condicionais,  etc,  etc…    •  variáveis:  são  indicadas  com  um  símbolo  de  cifrão  ($)  no  inicio  

 •  constantes:  armazenam  um  valor  e  este  não  pode  ser  alterado  /  não  u3liza  o  símbolo  de  

cifrão  ($)  e  devem  ser  definidos  através  da  palavra-­‐chave  define  

!<?!!$nome = "Fulano";!!$valor = 10;!!$teste = $nome; !!?>!

rogério  gonçalves  –  [email protected]  

!<?!!define( "LARGURA_MAXIMA", 1000 );!!if( $largura > LARGURA_MAXIMA ){!! !...!!} !!?>!

Page 17: introdução* · introdução* curso: php/ aula:01 introdução/ funcionamento/ práca / exercícios# rogério#gonçalves#– rogerio@digitale.com.br#

conceitos  básicos  

curso:  php  /  aula:  01  introdução  /  funcionamento  /  práSca  /  exercícios    

 

variáveis,  loops,  condicionais,  etc,  etc…    •  principais  3pos  de  variáveis  em  php  

 

!<?!!

!// string (cadeia de caracteres): deve estar englobado !!// entre aspas duplas (") ou simples (')!!$nome1 = "Fulano";!!$nome2 = 'Ciclano';!

!!// int, float, double (numérico): não precisa estar !!// englobado por aspas!!$num1 = 10; !!$num2 = -10;!!$num3 = 7.8;!!$pi = 3.14159265;!!!!?>!

rogério  gonçalves  –  [email protected]  

Page 18: introdução* · introdução* curso: php/ aula:01 introdução/ funcionamento/ práca / exercícios# rogério#gonçalves#– rogerio@digitale.com.br#

conceitos  básicos  

curso:  php  /  aula:  01  introdução  /  funcionamento  /  práSca  /  exercícios    

 

variáveis,  loops,  condicionais,  etc,  etc…    •  principais  3pos  de  variáveis  em  php  

 

!<?!!

!// boolean: verdadeiro/falso!!$processar = false;!!$usuarioLogado = true;!

!!// null: nenhum valor definido (variável vazia)!!$num1 = NULL; !!$nome = NULL;!!$processar = NULL;!

!!?>!

rogério  gonçalves  –  [email protected]  

Page 19: introdução* · introdução* curso: php/ aula:01 introdução/ funcionamento/ práca / exercícios# rogério#gonçalves#– rogerio@digitale.com.br#

conceitos  básicos  

curso:  php  /  aula:  01  introdução  /  funcionamento  /  práSca  /  exercícios    

 

variáveis,  loops,  condicionais,  etc,  etc…    •  3po  mixed  e  typecas3ng:  o  php  é  uma  linguagem  com  3pagem  dinâmica,  ou  seja,  

converte  o  3po  de  uma  variável  automa3camente  de  acordo  com  o  seu  valor  

•  quando  uma  variável  assume  (ou  pode  assumir)  mais  de  um  3po  dizemos  que  ela  é  do  3po  mixed,  ou  seja,  sem  um  3po  definido  

!<?!!

!$numero = 10; // tipo integer!!$numero = "10"; // agora é do tipo string!!$numero = false; // agora número é do tipo boolean!

!!?>!

rogério  gonçalves  –  [email protected]  

Page 20: introdução* · introdução* curso: php/ aula:01 introdução/ funcionamento/ práca / exercícios# rogério#gonçalves#– rogerio@digitale.com.br#

conceitos  básicos  

curso:  php  /  aula:  01  introdução  /  funcionamento  /  práSca  /  exercícios    

 

variáveis,  loops,  condicionais,  etc,  etc…    •  em  alguns  casos,  o  3po  da  variável  pode  ser  alterado  de  acordo  com  a  operação  

sendo  executada  com  ela  

!<?!!

!$numero = 10; // tipo integer!!$numero = "10"; // agora é do tipo string!!!!echo $numero * 5; // volta a ser integer devido ao operador !! ! ! ! ! // de multiplicação (*)!! ! ! ! ! // saida: 50!

!!echo "número:" . $numero; // novamente volta a ser string devido!! ! ! ! ! ! !// ao operador de concatenação (.)!! ! ! ! ! ! !// saida: número:10!

!!?>!

rogério  gonçalves  –  [email protected]  

Page 21: introdução* · introdução* curso: php/ aula:01 introdução/ funcionamento/ práca / exercícios# rogério#gonçalves#– rogerio@digitale.com.br#

conceitos  básicos  

curso:  php  /  aula:  01  introdução  /  funcionamento  /  práSca  /  exercícios    

 

variáveis,  loops,  condicionais,  etc,  etc…    •  operadores:  

•  atribuição  (  =  )  •  negação  (  !  )  •  comparação  -­‐  igualdade  (  ==  )  •  comparação  -­‐  maior  ou  igual  que  (  >=  )  •  comparação  -­‐  menor  ou  igual  que  (  <=  )  •  comparação  -­‐  maior  que  (  >  )  •  comparação  -­‐  menor  que  (  <  )  •  comparação  -­‐  diferente  de  (  !=  )  •  lógico  -­‐  e  (  &&  )  •  lógico  -­‐  ou  (  ||  )    

rogério  gonçalves  –  [email protected]  

Page 22: introdução* · introdução* curso: php/ aula:01 introdução/ funcionamento/ práca / exercícios# rogério#gonçalves#– rogerio@digitale.com.br#

conceitos  básicos  

curso:  php  /  aula:  01  introdução  /  funcionamento  /  práSca  /  exercícios    

 

variáveis,  loops,  condicionais,  etc,  etc…    •  condicional  if:  

!<?!!// forma curta – uma linha!!if( <condição> )!! !...!

!!// extendida – uma ou mais linhas!!if( <condição> ){!! !...!!}!

!!// senão!!if( <condição> ){!! !...!!} else{!! !...!!}!!?>!

rogério  gonçalves  –  [email protected]  

Page 23: introdução* · introdução* curso: php/ aula:01 introdução/ funcionamento/ práca / exercícios# rogério#gonçalves#– rogerio@digitale.com.br#

conceitos  básicos  

curso:  php  /  aula:  01  introdução  /  funcionamento  /  práSca  /  exercícios    

 

variáveis,  loops,  condicionais,  etc,  etc…    •  condicional  switch:  múl3plos  testes  

!<?!!switch( <variável> ){!!!! !case <valor 1>:!! ! !...!! ! !break;!! !case <valor 2>:!! ! !...!! ! !break;!! !(...)!! !default:!! ! !...!! ! !break;!!}!!?>!

rogério  gonçalves  –  [email protected]  

Page 24: introdução* · introdução* curso: php/ aula:01 introdução/ funcionamento/ práca / exercícios# rogério#gonçalves#– rogerio@digitale.com.br#

conceitos  básicos  

curso:  php  /  aula:  01  introdução  /  funcionamento  /  práSca  /  exercícios    

 

variáveis,  loops,  condicionais,  etc,  etc…    •  loop  while  /  do  while:  loop  inteterminado  

!<?!!// while: teste no inicio do bloco!!while( <condição> ){!

!! !...!

!!}!

!!// do while: teste no final do bloco!!do{!!

!! !...!

!!} while( <condição> );!!?>!

rogério  gonçalves  –  [email protected]  

Page 25: introdução* · introdução* curso: php/ aula:01 introdução/ funcionamento/ práca / exercícios# rogério#gonçalves#– rogerio@digitale.com.br#

conceitos  básicos  

curso:  php  /  aula:  01  introdução  /  funcionamento  /  práSca  /  exercícios    

 

variáveis,  loops,  condicionais,  etc,  etc…    •  loop  for:  loop  determinado  

!<?!!// forma curta – uma linha!!for( <inicio>; <condição>; <incremento> )!! !...!

!!// extendida – uma ou mais linhas!!for( <inicio>; <condição>; <incremento> ){!

!! !...!

!!}!!?>!

rogério  gonçalves  –  [email protected]  

Page 26: introdução* · introdução* curso: php/ aula:01 introdução/ funcionamento/ práca / exercícios# rogério#gonçalves#– rogerio@digitale.com.br#

exercícios  

curso:  php  /  aula:  01  introdução  /  funcionamento  /  prá3ca  /  exercícios    

 

rogério  gonçalves  –  [email protected]  

Page 27: introdução* · introdução* curso: php/ aula:01 introdução/ funcionamento/ práca / exercícios# rogério#gonçalves#– rogerio@digitale.com.br#

exercícios  

curso:  php  /  aula:  01  introdução  /  funcionamento  /  prá3ca  /  exercícios    

 

rogério  gonçalves  –  [email protected]  

1.  olá  mundo  crie  uma  página  php  que  mostre  a  frase  “olá  mundo”  em  negrito  (tag  html  <strong>);    2.  olá  mundo  2  crie  uma  página  php  que  mostre  as  frase  “bom  dia  mundo”  se  o  horário  atual  for  menor  que  12:00  e  “boa  tarde  mundo”  se  for  maior  (ref.  date("H")  retorna  a  hora  no  formato  00  a  23  );    3.  ola  mundo  3  modifique  o  exercício  anterior  para  exibir  a  frase  "boa  noite  mundo"  se  o  horário  for  maior  que  18:00;    4.  contando…  crie  uma  página  html  (está3ca)  que  mostre  25  links  (tag  html  <a>)  cada  um  contendo  o  número  correspondente  de  1  a  25;    5.  contando…  2  modifique  o  exercício  anterior,  transformando  a  página  em  php  e  u3lizando  o  comando  for;  

Page 28: introdução* · introdução* curso: php/ aula:01 introdução/ funcionamento/ práca / exercícios# rogério#gonçalves#– rogerio@digitale.com.br#

conceitos  básicos  

curso:  php  /  aula:  01  introdução  /  funcionamento  /  práSca  /  exercícios    

 

vetores/arrays    •  vetores  são  conjuntos  de  variáveis  alocados  em  um  mesmo  "espaço"  e  

organizados/ordenados  por  uma  chave  (índice)  

 •  vetores,  em  php,  são  definidos  como  variáveis  (u3lizando  o  cifrão  $)  e  seus  

tamanhos  são  dinâmicos,  ou  seja,  não  precisam  ser  definidos  

!<?!!

!$frutas = array( "Laranja", "Abacaxi", "Limão" );!!

!$estados = array( "SP", "RJ", "MG", "ES" );!!

!$numeros = array( 1, 10, 1662, 17288901, 6 );!!

!?>!

rogério  gonçalves  –  [email protected]  

Page 29: introdução* · introdução* curso: php/ aula:01 introdução/ funcionamento/ práca / exercícios# rogério#gonçalves#– rogerio@digitale.com.br#

conceitos  básicos  

curso:  php  /  aula:  01  introdução  /  funcionamento  /  práSca  /  exercícios    

 

vetores/arrays    •  para  acessar  um  valor  dentro  de  array  u3liza-­‐se  os  caracteres  colchetes  ([  ])  junto  

com  a  chave  do  item  a  ser  acessado  

!<?!!

!$frutas = array( "Laranja", "Abacaxi", "Limão" );!!

!echo $frutas; // saida: Array!!

!echo $frutas[0]; // saida: Laranja!!

!echo $frutas[1]; // saida: Abacaxi!!

!echo $frutas[2]; // saida: Limão!!

!echo $frutas[3]; // saida: ?!!

!?>!

rogério  gonçalves  –  [email protected]  

Page 30: introdução* · introdução* curso: php/ aula:01 introdução/ funcionamento/ práca / exercícios# rogério#gonçalves#– rogerio@digitale.com.br#

conceitos  básicos  

curso:  php  /  aula:  01  introdução  /  funcionamento  /  práSca  /  exercícios    

 

vetores/arrays    •  os  arrays  armazenam  (e  mantém  ordem)  dos  valores  armazenados  através  do  

conceito  do  par  chave/valor  •  se  nenhuma  chave  é  definida,  o  php  adota  o  padrão  numérico  sequencial  (0..n)  •  chaves  podem  ser  explicitamente  definidas  pelo  operador  de  atribução  (=>)  

!<?!!

!// imagine o vetor assim!!$frutas = array( "Laranja", "Abacaxi", "Limão" );!

!!// para o php ele é assim!!$frutas = array( 0=>"Laranja", 1=>"Abacaxi", "2"=>"Limão" )!

!!?>!

rogério  gonçalves  –  [email protected]  

Page 31: introdução* · introdução* curso: php/ aula:01 introdução/ funcionamento/ práca / exercícios# rogério#gonçalves#– rogerio@digitale.com.br#

conceitos  básicos  

curso:  php  /  aula:  01  introdução  /  funcionamento  /  práSca  /  exercícios    

 

vetores/arrays  >  foreach    •  estrutura  de  loop  contado  (semelhante  ao  for)  porém  percorre  um  array  do  

inicio  ao  fim  

!<?!!

!$frutas = array( "Laranja", "Abacaxi", "Limão" );!!

!foreach( $frutas as $fruta ){!!

! !echo $fruta;!!!!}!

!!// saida: LaranjaAbacaxiLimão !

!!?>!

rogério  gonçalves  –  [email protected]  

Page 32: introdução* · introdução* curso: php/ aula:01 introdução/ funcionamento/ práca / exercícios# rogério#gonçalves#– rogerio@digitale.com.br#

exercícios  

curso:  php  /  aula:  01  introdução  /  funcionamento  /  prá3ca  /  exercícios    

 

rogério  gonçalves  –  [email protected]  

Page 33: introdução* · introdução* curso: php/ aula:01 introdução/ funcionamento/ práca / exercícios# rogério#gonçalves#– rogerio@digitale.com.br#

exercícios  

curso:  php  /  aula:  01  introdução  /  funcionamento  /  prá3ca  /  exercícios    

 

6.  array  de  estados  monte  um  array  contendo  os  estados  (não  as  siglas)  do  brasil,  percorra  esse  vetor  e  exiba  cada  estado  dentro  de  uma  tag  <span>;  [a  saber:  Acre,  Alagoas,  Amapá,  Amazonas,  Bahia,  Ceará,  Distrito  Federal,  Espírito  Santo,  Goiás,  Maranhão,  Mato  Grosso,  Mato  Grosso  do  Sul,  Minas  Gerais,  Pará,  Paraíba,  Paraná,  Pernambuco,  Piauí,  Rio  de  Janeiro,  Rio  Grande  do  Norte,  Rio  Grande  do  Sul,  Rondônia,  Roraima,  Santa  Catarina,  São  Paulo,  Sergipe,  Tocan3ns]    7.  array  de  estados  (2)  usando  o  mesmo  array  do  exercício  6,  inclua  a  sigla  de  cada  estado  como  sua  chave,  percorra  esse  vetor  e  exiba  cada  estado  dentro  de  uma  tag  <span>;  se  o  estado  for  são  paulo  use  a  tag  <strong>  ao  invés  de  <span>;  [a  saber:  AC,  AL,  AP,  AM,  BA,  CE,  DF,  ES,  GO,  MA,  MT,  MS,  MG,  PA,  PB,  PR,  PE,  PI,  RJ,  RN,  RS,  RO,  RR,  SC,  SP,  SE,  TO]    8.  array  de  estados  (3)  adapte  o  exercício  7  para  exibir  o  vetor  dentro  de  um  combo-­‐box  <select>  onde  a  sigla  deve  ser  o  valor  do  <op3on>  e  o  nome  do  estado  deve  ser  texto  exibido  aos  usuários;    9.  array  de  estados  (4)  adapte  o  exercício  8  para  trazer  o  estado  de  são  paulo  como  selecionado  (selected);  

rogério  gonçalves  –  [email protected]  

Page 34: introdução* · introdução* curso: php/ aula:01 introdução/ funcionamento/ práca / exercícios# rogério#gonçalves#– rogerio@digitale.com.br#

exercícios  

curso:  php  /  aula:  01  introdução  /  funcionamento  /  prá3ca  /  exercícios    

 

10.  array  de  arrays  monte  um  array  contendo  10  elementos  (também  array)  como  no  formato  abaixo,  o  preencha  com  dados  fic{cios:    

array[<num_matricula>]  =  array[  "nome"=><nome>,  "idade"=><idade>,  "email"=><email>  ];    11.  array  de  arrays  (2)  percorra  o  array  do  exercício  10  e  mostre  os  dados  no  seguinte  formato  html:    

 <h1>Matrícula:  <num_matricula></h1>    <p>      <strong>Nome:  </strong><nome><br  />      <strong>Idade:  </strong><idade><br  />      <strong>E-­‐mail:  </strong><email><br  />    </p>    <hr  />  

rogério  gonçalves  –  [email protected]  

Page 35: introdução* · introdução* curso: php/ aula:01 introdução/ funcionamento/ práca / exercícios# rogério#gonçalves#– rogerio@digitale.com.br#

funções  e  escopo  

curso:  php  /  aula:  01  introdução  /  funcionamento  /  práSca  /  exercícios    

 

funções    •  funções  são  u3lizadas  principalmente  para  2  propósitos:  (1)  agrupar  código  

semelhante  e  (2)  reaproveitar  blocos  de  código  u3lizado  com  frequência  •  em  php  são  indicados  pela  palavra-­‐chave  funcSon  e  podemo  ou  não  receber  

parâmetros  e  podem  ou  não  retornar  uma  variável  

!<?!!function soma( $n1, $n2 ){!

!! !return $n1 + $n2;!

!!}!

!!soma( 10, 11 ); // saida: ?!!?>!

rogério  gonçalves  –  [email protected]  

Page 36: introdução* · introdução* curso: php/ aula:01 introdução/ funcionamento/ práca / exercícios# rogério#gonçalves#– rogerio@digitale.com.br#

funções  e  escopo  

curso:  php  /  aula:  01  introdução  /  funcionamento  /  práSca  /  exercícios    

 

funções  >  retorno  !<?!!function soma( $n1, $n2 ){!

!! !return $n1 + $n2;!

!!}!

!!echo soma( 10, 11 ); // saida: 21!!?>!

rogério  gonçalves  –  [email protected]  

!<?!!function assinaSite(){!

!! !echo "<p>Site feito por mim &copy; 2012</p>";!

!!}!

!!assinaSite(); // saida: ?!!?>!

Page 37: introdução* · introdução* curso: php/ aula:01 introdução/ funcionamento/ práca / exercícios# rogério#gonçalves#– rogerio@digitale.com.br#

funções  e  escopo  

curso:  php  /  aula:  01  introdução  /  funcionamento  /  práSca  /  exercícios    

 

escopo    •  escopo  é  o  nome  do  termo  que  indica  o  grau  de  visibilidade  de  uma  variável  

dentro  de  uma  função  •  o  escopo,  em  php,  pode  ser  global  e  local,  por  exemplo  

!<?!!

!$nome = "Fulano";!!!!function escreveNome(){!

!! !echo $nome;!

!!}!

!!escreveNome(); // saida: ?!!!!?>!

rogério  gonçalves  –  [email protected]  

Page 38: introdução* · introdução* curso: php/ aula:01 introdução/ funcionamento/ práca / exercícios# rogério#gonçalves#– rogerio@digitale.com.br#

funções  e  escopo  

curso:  php  /  aula:  01  introdução  /  funcionamento  /  práSca  /  exercícios    

 

!<?!!

!$nome = "Fulano"; // escopo global!!!!function escreveNome( $nome ){ // escopo local!

!! !echo $nome;!

!!}!

!!escreveNome( $nome ); // saida: ?!!!!?>!

rogério  gonçalves  –  [email protected]  

escopo    •  global  x  local  

Page 39: introdução* · introdução* curso: php/ aula:01 introdução/ funcionamento/ práca / exercícios# rogério#gonçalves#– rogerio@digitale.com.br#

funções  e  escopo  

curso:  php  /  aula:  01  introdução  /  funcionamento  /  práSca  /  exercícios    

 

!<?!!

!$nome = "Fulano"; // escopo global!!!!function escreveNome(){ !

!! !global $nome; // diz que nome é global e não mais local!

!! !echo $nome;!

!!}!

!!escreveNome(); // saida: Fulano!!!!?>!

rogério  gonçalves  –  [email protected]  

escopo    •  quando  queremos  explicitamente  acessar  o  escopo  global  em  uma  função  

usamos  o  modificador  global  deste  modo:  

Page 40: introdução* · introdução* curso: php/ aula:01 introdução/ funcionamento/ práca / exercícios# rogério#gonçalves#– rogerio@digitale.com.br#

includes  

curso:  php  /  aula:  01  introdução  /  funcionamento  /  práSca  /  exercícios    

 

!<?!!

!include "minhas-funcoes.php";!!

!assinaSite();!! !!!?>!

rogério  gonçalves  –  [email protected]  

include    •  includes  são  muito  úteis  para  isolar  trechos  repe3dos  de  código  (php  e  não  php)  

em  arquivos  separados  e  acessá-­‐los  de  forma  centralizada  •  em  php  um  include  pode  ser  acessado  com  a  palavra-­‐chave  include  

Page 41: introdução* · introdução* curso: php/ aula:01 introdução/ funcionamento/ práca / exercícios# rogério#gonçalves#– rogerio@digitale.com.br#

includes  

curso:  php  /  aula:  01  introdução  /  funcionamento  /  práSca  /  exercícios    

 

!// arquivo rodape.html!!

!<p align="center">!!

! !Site desenvolvido por mim &copy; 2012<br />!!

! !<a href="www.meusite.com.br">meusite.com.br</a>!!

!</p>!

rogério  gonçalves  –  [email protected]  

include    •  vejamos  um  include  sem  código  php  

!// arquivo site.php!!!!<div class="rodape">!

!! !<? include "rodape.html"; ?>!

!!</div>!

Page 42: introdução* · introdução* curso: php/ aula:01 introdução/ funcionamento/ práca / exercícios# rogério#gonçalves#– rogerio@digitale.com.br#

exercícios  

curso:  php  /  aula:  01  introdução  /  funcionamento  /  prá3ca  /  exercícios    

 

rogério  gonçalves  –  [email protected]  

Page 43: introdução* · introdução* curso: php/ aula:01 introdução/ funcionamento/ práca / exercícios# rogério#gonçalves#– rogerio@digitale.com.br#

exercícios  

curso:  php  /  aula:  01  introdução  /  funcionamento  /  prá3ca  /  exercícios    

 

12.  função  base  crie  uma  função  básica  que  receba  dois  parâmetros  e  retorne  o  menor  deles;  se  forem  iguais  ela  deve  retornar  0.    13.  função  cabecalho()  crie  uma  função  cabecalho()  que  escreva  (ou  retorne)  o  cabeçalho  da  sua  página  pessoal  no  formato  html  abaixo  e  chame  essa  função  dentro  do  corpo  (<body)  da  página:    

 <p  class="topo"  align="center">      <strong><seu_nome></strong><br  />      <u>bem  vindo  a  minha  página  pessoal</u><br  />      <span>data:  <data_atual>  /  hora:  <hora_atual></span>    </p>  

 14.  mais  páginas  crie  outras  duas  páginas  html  e  chame  a  função  cabecalho()  dentro  do  <body>  de  cada  uma  delas;  faça  os  ajustes  para  que  o  sistema  fique  o3mizado;  

rogério  gonçalves  –  [email protected]  

Page 44: introdução* · introdução* curso: php/ aula:01 introdução/ funcionamento/ práca / exercícios# rogério#gonçalves#– rogerio@digitale.com.br#

strings  e  datas  

curso:  php  /  aula:  01  introdução  /  funcionamento  /  práSca  /  exercícios    

 

rogério  gonçalves  –  [email protected]  

strings    •  strings  são  cadeias  de  caracteres  •  em  php,  strings  podem  conter  até  2GB  •  em  conjunto  com  o  3po  integer  (numérico)  são  os  3pos  mais  u3lizados  em  

qualquer  lógica  •  o  php  fornece  uma  gama  muito  grande  de  funções  para  manipulação  de  strings  o  

que  as  torna  um  3po  ainda  mais  poderoso  e  completo  •  vejamos  as  principais  funções  •  mas  antes,  um  conceito  básico  para  strings....  

Page 45: introdução* · introdução* curso: php/ aula:01 introdução/ funcionamento/ práca / exercícios# rogério#gonçalves#– rogerio@digitale.com.br#

strings  e  datas  

curso:  php  /  aula:  01  introdução  /  funcionamento  /  práSca  /  exercícios    

 

!<?!!

!$nome = "Fulano";!!!!echo "Olá " . $nome . ", bem vindo ao meu site";!

!!// saida: Olá Fulano, bem vindo ao meu site!

!!echo "Olá $nome, bem vindo ao meu site"; // saida: ?!

!!// nas aspas duplas (") as variáveis são lidas !! !!!echo 'Olá $nome, bem vindo ao meu site'; // saida: ?!

!!// nas aspas simples (') as variáveis NÃO são lidas!

!?>!

rogério  gonçalves  –  [email protected]  

strings    •  concatenação  -­‐  união  de  duas  strings  (operador  .)  

Page 46: introdução* · introdução* curso: php/ aula:01 introdução/ funcionamento/ práca / exercícios# rogério#gonçalves#– rogerio@digitale.com.br#

strings  e  datas  

curso:  php  /  aula:  01  introdução  /  funcionamento  /  práSca  /  exercícios    

 

!<?!!

!$nome = "Fulano";!!$cargo = "Programador";!!$linguagem = "PHP";!!!!echo "Olá " . $cargo . $nome . ", este site é sobre " . $linguagem;!!!// saida: Olá ProgramadorFulano, este site é sobre PHP!

!!?>!

rogério  gonçalves  –  [email protected]  

strings  

Page 47: introdução* · introdução* curso: php/ aula:01 introdução/ funcionamento/ práca / exercícios# rogério#gonçalves#– rogerio@digitale.com.br#

strings  e  datas  

curso:  php  /  aula:  01  introdução  /  funcionamento  /  práSca  /  exercícios    

 

rogério  gonçalves  –  [email protected]  

strings  >  algumas  funções  úteis    •  echo(  $str  )  ou  echo  $str  ou  =  $str  [forma  curta]  •  strtoupper(  $str  )  e  strtolower(  $str  )  •  substr(  $str,  $inicio,  [$tamanho]  )  •  strlen(  $str  )  •  str_replace(  $buscar,  $trocar,  $str  )  •  trim(  $str  )  •  strpos(  $str  )  •  implode(  $caracter,  $arr  )  •  explode(  $delimitador,  $string  )  

Page 48: introdução* · introdução* curso: php/ aula:01 introdução/ funcionamento/ práca / exercícios# rogério#gonçalves#– rogerio@digitale.com.br#

strings  e  datas  

curso:  php  /  aula:  01  introdução  /  funcionamento  /  práSca  /  exercícios    

 

rogério  gonçalves  –  [email protected]  

datas    •  para  manipulação  de  datas  o  php  fornece  a  função  date()  que  é  muito  completa  •  basicamente  essa  função  date()  formata  um  3mestamp  de  acordo  com  os  

parâmetros  que  são  passados  •  se  nenhum  3mestamp  é  passado,  o  atual  é  u3lizado  

!<?!!

!$hoje = date(); !// hoje recebe o timestamp atual, ou seja,!! ! ! ! !// este exato momento mas a função date()!! ! ! ! !// não funciona sem um parâmetro!

!!?>!

Page 49: introdução* · introdução* curso: php/ aula:01 introdução/ funcionamento/ práca / exercícios# rogério#gonçalves#– rogerio@digitale.com.br#

strings  e  datas  

curso:  php  /  aula:  01  introdução  /  funcionamento  /  práSca  /  exercícios    

 

rogério  gonçalves  –  [email protected]  

datas  >  formatação    •  para  uma  pessoa,  um  3mestamp  pode  não  significar  nada  ou  então  serão  

necessários  alguns  cálculos  para  que  signifique  alguma  coisa  •  nesse  caso,  precisamos  formata-­‐lo  em  um  formato  mais  amigável  •  o  php  fornece  uma  lista  completa  de  opções  de  formatação  de  3mestamps  

•  hDp://br.php.net/manual/pt_BR/func3on.date.php  

Page 50: introdução* · introdução* curso: php/ aula:01 introdução/ funcionamento/ práca / exercícios# rogério#gonçalves#– rogerio@digitale.com.br#

strings  e  datas  

curso:  php  /  aula:  01  introdução  /  funcionamento  /  práSca  /  exercícios    

 

rogério  gonçalves  –  [email protected]  

datas  >  formatação  

!<?!!

!$esteAno = date( "Y" ); !// $esteAno recebe o ano atual!!$esteDia = date( "d" ); !// $esteDia recebe o dia atual!!$esteMes = date( "m" ); !// $esteMes recebe o mês atual!

!!$hoje = date( "m/d/Y" ); // $hoje recebe a data no formato!! ! ! ! ! ! !// dd/mm/aaaa!

!!$agora = date( "H:i" ); !// $agora recebe a hora atual no !! ! ! ! ! ! !// formato hh:mm!

!!$var = date( "l" ); ! !// ?!

!!$var = date( "r" ); ! !// ?!

!!// ...!

!!?>!

Page 51: introdução* · introdução* curso: php/ aula:01 introdução/ funcionamento/ práca / exercícios# rogério#gonçalves#– rogerio@digitale.com.br#

exercícios  

curso:  php  /  aula:  01  introdução  /  funcionamento  /  prá3ca  /  exercícios    

 

rogério  gonçalves  –  [email protected]  

Page 52: introdução* · introdução* curso: php/ aula:01 introdução/ funcionamento/ práca / exercícios# rogério#gonçalves#– rogerio@digitale.com.br#

exercícios  

curso:  php  /  aula:  01  introdução  /  funcionamento  /  prá3ca  /  exercícios    

 

15.  olá  fulano  dada  uma  variável  $nome  contendo  o  nome  completo  de  uma  pessoa,  mostre  apenas  o  primeiro  nome  daquela  pessoa;    16.  cadastro  de  emails  dado  o  vetor  de  e-­‐mails  abaixo,  percorra-­‐os  e  mostre  cada  e-­‐mail  sem  espaços  e  com  as  letras  todas  em  minúsculas:    

 $emails  =  array(        "[email protected]",      "        [email protected]            ",      "[email protected]",      "orç[email protected]",      "marke3ng@          yahoo.com.br              "    );  

 

17.  cadastro  de  emails  (2)  adapte  o  exercício  16  para  remover  os  espaços  do  interior  dos  emails  e  não  mostrar  e-­‐mails  contendo  "ç";  

rogério  gonçalves  –  [email protected]  

Page 53: introdução* · introdução* curso: php/ aula:01 introdução/ funcionamento/ práca / exercícios# rogério#gonçalves#– rogerio@digitale.com.br#

exercícios  

curso:  php  /  aula:  01  introdução  /  funcionamento  /  prá3ca  /  exercícios    

 

18.  em  que  dia  estamos?  mostre  o  dia  da  semana  em  português;    19.  data  completa  mostre  a  data  atual  do  sistema  no  seguinte  formato  html:  

   <p  align="center">Sábado,  14  de  abril  de  2012  ás  15:45</p>  

 20.  converteData  crie  uma  função  que  receba  uma  data  no  formato  "dd/mm/YYYY"  e  retorne  a  mesma  data  no  formato  "YYYY-­‐mm-­‐dd";  crie  outra  função  (ou  a  mesma)  que  faça  o  processo  inverso;  

rogério  gonçalves  –  [email protected]  

Page 54: introdução* · introdução* curso: php/ aula:01 introdução/ funcionamento/ práca / exercícios# rogério#gonçalves#– rogerio@digitale.com.br#

dicas  

curso:  php  /  aula:  01  introdução  /  funcionamento  /  práSca  /  exercícios    

 

rogério  gonçalves  –  [email protected]  

Page 55: introdução* · introdução* curso: php/ aula:01 introdução/ funcionamento/ práca / exercícios# rogério#gonçalves#– rogerio@digitale.com.br#

dicas  

curso:  php  /  aula:  01  introdução  /  funcionamento  /  práSca  /  exercícios    

 

rogério  gonçalves  –  [email protected]  

comentários    •  comentários  são  mecanismos  excelentes  para  iden3ficar  e  documentar  trechos  

de  código  para  outros  programadores  do  projeto  ou  para  você  mesmo  •  evite  comentários  a  cada  linha  e  prefira  comentar  trechos  que  fazem  parte  de  

uma  mesma  lógica  ou  sub-­‐lógica  •  evite  comentários  que  não  dizem  nada  ou  comentários  em  linhas  ou  trechos  

auto-­‐explica3vos  

•  comente  suas  funções  

!<?!!

!// se a página for vazia defino ela como 1!!if( $pagina == "" ) $pagina = 1;!

!!?>!

Page 56: introdução* · introdução* curso: php/ aula:01 introdução/ funcionamento/ práca / exercícios# rogério#gonçalves#– rogerio@digitale.com.br#

dicas  

curso:  php  /  aula:  01  introdução  /  funcionamento  /  práSca  /  exercícios    

 

rogério  gonçalves  –  [email protected]  

comentários    •  busque  algo  como:  

!<?!!// inicio as variáveis!!$usuarioLogado = false;!!$nome = "";!!$pagina = 1;!

!!// trato os parâmetros recebidos!!// ...!!// ...!!// ...!

!!// verifico no banco de dados se o usuário existe!!// ...!!// ...!!// ...!

!!?>!

Page 57: introdução* · introdução* curso: php/ aula:01 introdução/ funcionamento/ práca / exercícios# rogério#gonçalves#– rogerio@digitale.com.br#

dicas  

curso:  php  /  aula:  01  introdução  /  funcionamento  /  práSca  /  exercícios    

 

rogério  gonçalves  –  [email protected]  

identação    •  nenhuma  linguagem  moderna  obriga  a  identação  porém  quanto  mais  (e  melhor)  

ela  for  usada,  mais  ní3do  e  fácil  de  manter  o  código  sera  •  como  o  php  está,  na  maioria  das  vezes,  integrado  ao  html  é  muito  fácil  perder  o  

controle  dos  blocos  quando  não  há  identação  •  é  importante  que  o  próprio  html  também  seja  identado  para  facilitar  

manutenções  no  código  •  veja  o  exemplo  a  seguir...  

Page 58: introdução* · introdução* curso: php/ aula:01 introdução/ funcionamento/ práca / exercícios# rogério#gonçalves#– rogerio@digitale.com.br#

dicas  

curso:  php  /  aula:  01  introdução  /  funcionamento  /  práSca  /  exercícios    

 

rogério  gonçalves  –  [email protected]  

identação  <html><body><head><title>Titulo</title>!</head><body>!<? $dias = array("Segunda","Terça","Quarta","Quinta","Sexta","Sábado",!"Domingo");!echo "<h1>Dias da semana</h1>";!foreach( $dias as $dia ){ ?><p><? echo $dia; ?></p><? } ?></body>!</html>!

Page 59: introdução* · introdução* curso: php/ aula:01 introdução/ funcionamento/ práca / exercícios# rogério#gonçalves#– rogerio@digitale.com.br#

dicas  

curso:  php  /  aula:  01  introdução  /  funcionamento  /  práSca  /  exercícios    

 

rogério  gonçalves  –  [email protected]  

identação  <html>!

!<head>!! !<title>Titulo</title>!!</head>!!<body>!! !<?!! !$dias = array( !! ! !"Segunda", "Terça", "Quarta", "Quinta", ! ! !"Sexta","Sábado","Domingo" !! !);!

!! !echo "<h1>Dias da semana</h1>";!! !foreach( $dias as $dia ){ ?>!

!! ! !<p><? echo $dia; ?></p>!! ! !!! !<? } ?>!!</body>!

</html>!

Page 60: introdução* · introdução* curso: php/ aula:01 introdução/ funcionamento/ práca / exercícios# rogério#gonçalves#– rogerio@digitale.com.br#

dicas  

curso:  php  /  aula:  01  introdução  /  funcionamento  /  práSca  /  exercícios    

 

rogério  gonçalves  –  [email protected]  

debug    •  debug  é  o  nome  dado  a  técnica  de  localizar  erros  •  no  php,  por  ser  uma  linguagem  server-­‐side  interpretada,  é  di�cil  monitorar  cada  

interação  executada  pelo  servidor    •  muitos  servidores  omitem  erros  internos  ou  alertas  de  processamento  e  por  isso  

as  vezes  é  dificil  localizar  o  que  está  errado  em  uma  lógica  •  uma  dica  interessante,  em  php,  é  escrever  (no  html)  o  conteúdo  de  variáveis  e  

vetores  que  podem  estar  causando  a  falha  •  também  é  interessante  imprimir  informações  antes  e  depois  de  trechos  mais  

complexos  e  dentro  de  ifs,  switchs,  func3ons  e  etc  para  iden3ficar  aonde  o  interpretador  do  php  chegou  e  aonde  ele  não  chegou  

•  os  comandos  mais  úteis  para  esse  3po  de  debug  são  echo  para  variáveis  e  print_r  para  arrays  

•  (falaremos  mais  de  debug  nos  próximos  módulos)  

Page 61: introdução* · introdução* curso: php/ aula:01 introdução/ funcionamento/ práca / exercícios# rogério#gonçalves#– rogerio@digitale.com.br#

dicas  

curso:  php  /  aula:  01  introdução  /  funcionamento  /  práSca  /  exercícios    

 

rogério  gonçalves  –  [email protected]  

documentação  on-­‐line    •  a  documentação  on-­‐line  do  php  é  um  recurso  extremamente  completo  e  ú3l  •  totalmente  aberta  (não  requer  nenhum  cadastro)  •  boa  parte  em  português  \o/    

•  hDp://www.php.net/manual/pt_BR/  

Page 62: introdução* · introdução* curso: php/ aula:01 introdução/ funcionamento/ práca / exercícios# rogério#gonçalves#– rogerio@digitale.com.br#

fim  da  aula  01    

dúvidas?  [email protected]  

 referências:  hDp://php.net  

hDp://en.wikipedia.org/wiki/PHP  

curso:  php  /  aula:  01  introdução  /  funcionamento  /  prá3ca  /  exercícios    

 

rogério  gonçalves  –  [email protected]