PHP
Uma pequena introdução
Quem sou eu?
• Jonatas Oliveira
• Programador PHP desde 2005
• Programador e desenvolvedor Web da
  Diginet

• Entusiasta ...
O que é o PHP?
• Linguagem scripting de propósito geral
• Server-side (executada no lado do servidor)
• Voltada para criaç...
Conteúdo dinâmico

• Conteúdo produzido sob demanda
• A página final não existe no servidor
• Exemplo de conteúdo dinâmico
...
Funcionamento interno
 (simplificado) do PHP
• Requisição do usuário
• Servidor Web
• PHP
• HTML (opcional)
• Navegador do ...
Áreas de atuação do PHP

 • Server-side Scripting
   • Foco principal
   • Criar páginas dinâmicas para web
   • Necessita...
Áreas de atuação do PHP
 • Command line scripting
   • Executar pequenas tarefas
   • Necessita somente do parser PHP
 • A...
Por que PHP?


• Sintaxe básica simples
• Começo fácil
• Boa documentação em português
Por que PHP?
• Disponível em várias plataformas
  • Linux
  • Unix
  • Mac OS X
  • Windows
  • Outros
Por que PHP?

• Suporte de muitos servidores web
  • Apache
  • Microsoft IIS
  • Outros, se não existir módulo, ainda pod...
Por que PHP?
• Suporte a muitos banco de dados
  • MySQL
  • PostgreSQL
  • ODBC
  • SQLite
  • MS-SQL
  • E muitos outros
Por que PHP?
• Comunicação com outros serviços
  • LDAP
  • IMAP
  • SNMP
  • NNTP
  • POP3
  • HTTP
O que o PHP pode fazer
• Qualquer coisa que um programa CGI pode
  fazer

 • Coletar dados de um formulário
 • Criar conte...
O que o PHP pode fazer

• Ainda mais...
  • Criar imagens dinamicamente (gd)
  • Gerar arquivos PDF
  • Criar filmes em Fla...
O que o PHP pode fazer
• E ainda mais...
  • Pode salvar qualquer tipo de saída no
    sistema de arquivos, ao invés de mo...
Alguns projetos que
      usam PHP

• Wikipedia (mediawiki)
• Wordpress
• Drupal
• Existem muito mais, lógico
Introdução a linguagem

Hello World!


<?php
   echo quot;<p>Hello World!</p>quot;;
?>
Introdução a linguagem
• Hello World!
  • Delimitadores para o parser
   •   <?php ?>

   •   <? ?>

   •   <?= ?>, atalho...
Introdução a linguagem

• Hello World!
  • Comentários
   •   #

   •   //

   •   /* multiline */
Introdução a linguagem
• Variáveis
  • Representadas por $ mais o nome da
    variável

 • Diferencia maiúsculas e minúscu...
Introdução a linguagem

• Variáveis
  • Não requer declaração
  • O tipo é alterado dinamicamente
  • Os resultados são pa...
Introdução a linguagem
• Tipos
  • Boolean
  • Números
  • String
  • Arrays
  • Objects
  • Resources
  • NULL
Introdução a linguagem
• Boolean
 •   True, False

 • São considerados falso
     •   FALSE

     • inteiro 0 ou float 0.0
...
Introdução a linguagem


• Boolean
  • Operadores
   • ==
Introdução a linguagem


• Números
  • Inteiro (decimal, octal, hexadecimal), Real,
     Float, Notação científica

  • Tam...
Introdução a linguagem
• Números
  • Operadores
   •+
   •-
   • / (retorna float, para inteiro usa-se
      round(1/2))

 ...
Introdução a linguagem
• String
  •   ''   (single-quoted)

      • Literal, não expande nenhum código
        interno
  •...
Introdução a linguagem

• String
  • Suporte a UTF-8 via funções
    utf8_encode()    e utf8_decode()

  • Operadores
   •...
Introdução a linguagem

• Arrays
  • Funções auxiliares
    •   unset()

    •   array_values()   (reindex)
    •   print_r()
Introdução a linguagem

• Objects
  • Convertendo para objeto
   • De objeto para objeto não acontece
      nada

   • Qua...
Introdução a linguagem

• Se valor NULL, a instância será criada vazia,
  se for um array, as chaves serão
  propriedades ...
Introdução a linguagem


• Resources
  • Variáveis especiais com referência externa
  • Exemplo: conexão com banco de dados
Introdução a linguagem


• NULL
  • Tipo especial para indicar que não tem
    valor
Introdução a linguagem
• Funções verificadoras de tipo
  •   is_bool()

  •   is_numeric()

  •   is_float()

  •   is_int(...
Estrutura de controle

Condicional

<?php
	   $nome = 'PHP';
	   if ($nome == 'PHP') {
	   	 // Faz alguma coisa.
	   }
?>
Estrutura de controle


•   if

•   else

•   elseif
Estrutura de controle

Sintaxe alternativa

<?php if (5 > 1): ?>
5 é maior que 1.
<?php elseif (5 > 6) ?>
5 é maior que 6....
Estrutura de controle

Switch
<?php
	       $i = 0;
	       switch ($i) {
	       	    case 0:
	       	    	   echo quot;...
Laço
While e do-while

<?php
  $i = 0;
  while ($i <= 10) {
    echo $i++;
  }

  $i = 0;
  do {
    echo $i++;
  } while ...
Laço

For

<?php
  for ($i = 0; $i <= 10; $i++) {
    echo $i;
  }

  for ($i = 0; $i <= 10; print $i++);
?>
Laço
Foreach
<?php
  for ($i = 0; $i <= 10; $i++) {
    echo $i;
  }

    for ($i = 0; $i <?php
	               $arr = arr...
Laço


•    break
    • Pára a execução do laço
•    continue
    • Passa para a próxima iteração do laço
Função
<?php
	   function soma($valor1, $valor2=1) {
	   	 return $valor1 + $valor2;
	   }

	    $resultado = soma(10, 15)...
Orientação a objetos
• Classes
 • new

     • Cria uma nova instância de uma classe
 •   $this

     • Referência ao objet...
Orientação a objetos
• Classes
 •   ->

     • Acesso aos membros da instância
 •   ::

     • Acesso aos membros da class...
Orientação a objetos
• Classes
 •   __construct

     • Contrutor da classe, chamado quando
       se usa new Classe()
 • ...
Orientação a objetos
• SPL - Standard PHP Library
  • Série de classes e interfaces para ajudar na
    resolução de proble...
Segurança

• Recordista em CVE (Common
  Vulnerabilities and Exposures) pelo National
  Vulnerability Database

 • 12% in ...
Segurança

• Fatores que aumentam a vulnerabilidade
  • Programadores com maus hábitos
  • Dados manipulados sem checagem
...
Debug

•   error_reporting(E_ALL);

•   ini_set('display_errors', true);

• Log em arquivo (via php.ini)
    • display_err...
Contato


 jonatas.oliveira@digi.com.br

http://blog.jonatasoliveira.com
Próximos SlideShares
Carregando em…5
×

PHP - Uma Pequena Introducao

2.726 visualizações

Publicada em

Palestra sobre Introdução ao PHP apresentada durante o Dia Livre 8.06 que ocorreu no dia 21/06/2008 no CEFET-RN.

Publicada em: Tecnologia
0 comentários
2 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
2.726
No SlideShare
0
A partir de incorporações
0
Número de incorporações
514
Ações
Compartilhamentos
0
Downloads
98
Comentários
0
Gostaram
2
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

PHP - Uma Pequena Introducao

  1. 1. PHP Uma pequena introdução
  2. 2. Quem sou eu? • Jonatas Oliveira • Programador PHP desde 2005 • Programador e desenvolvedor Web da Diginet • Entusiasta do movimento software livre • Membro do PSL-RN e +web
  3. 3. O que é o PHP? • Linguagem scripting de propósito geral • Server-side (executada no lado do servidor) • Voltada para criação de conteúdo dinâmico para web • Tipagem fraca e dinâmica • Último release 5.2.6 em Maio de 2008
  4. 4. Conteúdo dinâmico • Conteúdo produzido sob demanda • A página final não existe no servidor • Exemplo de conteúdo dinâmico • Busca no google
  5. 5. Funcionamento interno (simplificado) do PHP • Requisição do usuário • Servidor Web • PHP • HTML (opcional) • Navegador do usuário
  6. 6. Áreas de atuação do PHP • Server-side Scripting • Foco principal • Criar páginas dinâmicas para web • Necessita do PHP instalado, de um servidor web e de um navegador para funcionar
  7. 7. Áreas de atuação do PHP • Command line scripting • Executar pequenas tarefas • Necessita somente do parser PHP • Aplicação desktop • Possível (mas não recomendado) • Aplicações gráficas e multi-plataforma com PHP + GTK
  8. 8. Por que PHP? • Sintaxe básica simples • Começo fácil • Boa documentação em português
  9. 9. Por que PHP? • Disponível em várias plataformas • Linux • Unix • Mac OS X • Windows • Outros
  10. 10. Por que PHP? • Suporte de muitos servidores web • Apache • Microsoft IIS • Outros, se não existir módulo, ainda pode funcionar como processador CGI
  11. 11. Por que PHP? • Suporte a muitos banco de dados • MySQL • PostgreSQL • ODBC • SQLite • MS-SQL • E muitos outros
  12. 12. Por que PHP? • Comunicação com outros serviços • LDAP • IMAP • SNMP • NNTP • POP3 • HTTP
  13. 13. O que o PHP pode fazer • Qualquer coisa que um programa CGI pode fazer • Coletar dados de um formulário • Criar conteúdo dinâmico • Enviar e receber cookies • Criar sessão com navegador
  14. 14. O que o PHP pode fazer • Ainda mais... • Criar imagens dinamicamente (gd) • Gerar arquivos PDF • Criar filmes em Flash dinamicamente • Gerar saída de qualquer tipo de texto (não só HTML)
  15. 15. O que o PHP pode fazer • E ainda mais... • Pode salvar qualquer tipo de saída no sistema de arquivos, ao invés de mostrar, para criar cache do conteúdo • Acessar arquivos do sistema de arquivos • Pode salvar qualquer tipo de saída no sistema de arquivos, ao invés de mostrar, para criar cache do conteúdo
  16. 16. Alguns projetos que usam PHP • Wikipedia (mediawiki) • Wordpress • Drupal • Existem muito mais, lógico
  17. 17. Introdução a linguagem Hello World! <?php echo quot;<p>Hello World!</p>quot;; ?>
  18. 18. Introdução a linguagem • Hello World! • Delimitadores para o parser • <?php ?> • <? ?> • <?= ?>, atalho para <? echo ...; ?> • Todo comando termina com ;
  19. 19. Introdução a linguagem • Hello World! • Comentários • # • // • /* multiline */
  20. 20. Introdução a linguagem • Variáveis • Representadas por $ mais o nome da variável • Diferencia maiúsculas e minúsculas • $variavel é diferente $Variavel • Nomes de variáveis válidos iniciam com uma letra ou underscore e seguem com letras, números ou underscore
  21. 21. Introdução a linguagem • Variáveis • Não requer declaração • O tipo é alterado dinamicamente • Os resultados são passados por valor, para ser passado por referência usa &$variavel
  22. 22. Introdução a linguagem • Tipos • Boolean • Números • String • Arrays • Objects • Resources • NULL
  23. 23. Introdução a linguagem • Boolean • True, False • São considerados falso • FALSE • inteiro 0 ou float 0.0 • string vazia e string quot;0quot; • array vazio • NULL
  24. 24. Introdução a linguagem • Boolean • Operadores • ==
  25. 25. Introdução a linguagem • Números • Inteiro (decimal, octal, hexadecimal), Real, Float, Notação científica • Tamanho depende da plataforma
  26. 26. Introdução a linguagem • Números • Operadores •+ •- • / (retorna float, para inteiro usa-se round(1/2)) •* •%
  27. 27. Introdução a linguagem • String • '' (single-quoted) • Literal, não expande nenhum código interno • quot;quot; (double-quoted) • Expande qualquer código dentro da string • <<<'EOT' ... EOT; nowdoc
  28. 28. Introdução a linguagem • String • Suporte a UTF-8 via funções utf8_encode() e utf8_decode() • Operadores • . (ponto, para concatenar strings)
  29. 29. Introdução a linguagem • Arrays • Funções auxiliares • unset() • array_values() (reindex) • print_r()
  30. 30. Introdução a linguagem • Objects • Convertendo para objeto • De objeto para objeto não acontece nada • Qualquer outro tipo para objeto, nova instância de stdClass
  31. 31. Introdução a linguagem • Se valor NULL, a instância será criada vazia, se for um array, as chaves serão propriedades da instância com seus respectivos valores • Para qualquer outro tipo será criado o método quot;scalarquot; que conterá o valor
  32. 32. Introdução a linguagem • Resources • Variáveis especiais com referência externa • Exemplo: conexão com banco de dados
  33. 33. Introdução a linguagem • NULL • Tipo especial para indicar que não tem valor
  34. 34. Introdução a linguagem • Funções verificadoras de tipo • is_bool() • is_numeric() • is_float() • is_int() • is_string() • is_object() • is_array()
  35. 35. Estrutura de controle Condicional <?php $nome = 'PHP'; if ($nome == 'PHP') { // Faz alguma coisa. } ?>
  36. 36. Estrutura de controle • if • else • elseif
  37. 37. Estrutura de controle Sintaxe alternativa <?php if (5 > 1): ?> 5 é maior que 1. <?php elseif (5 > 6) ?> 5 é maior que 6. <?php endif; ?>
  38. 38. Estrutura de controle Switch <?php $i = 0; switch ($i) { case 0: echo quot;i igual a 0quot;; break; case 1: echo quot;i igual a 1quot;; break; default: echo quot;i não é nem igual a 0 nem igual a 1quot;; } ?>
  39. 39. Laço While e do-while <?php $i = 0; while ($i <= 10) { echo $i++; } $i = 0; do { echo $i++; } while ($i <= 10); ?>
  40. 40. Laço For <?php for ($i = 0; $i <= 10; $i++) { echo $i; } for ($i = 0; $i <= 10; print $i++); ?>
  41. 41. Laço Foreach <?php for ($i = 0; $i <= 10; $i++) { echo $i; } for ($i = 0; $i <?php $arr = array(1, 2, 3, 4, 5); foreach ($arr as $value) { echo $value; } $arr = array(quot;nomequot; => quot;PHPquot;, quot;versaoquot; => 5.2.6); foreach ($arr as $key => $value) { echo quot;Chave: $key; Valor: $value<br/>nquot;; } ?>
  42. 42. Laço • break • Pára a execução do laço • continue • Passa para a próxima iteração do laço
  43. 43. Função <?php function soma($valor1, $valor2=1) { return $valor1 + $valor2; } $resultado = soma(10, 15); echo $resultado; // Saída: 25 $funcao = 'soma'; $resultado = $funcao(20, 1); echo $resultado; // Saída: 21 ?>
  44. 44. Orientação a objetos • Classes • new • Cria uma nova instância de uma classe • $this • Referência ao objeto que chamou • parent • Referência a classe extendida
  45. 45. Orientação a objetos • Classes • -> • Acesso aos membros da instância • :: • Acesso aos membros da classe • extends • Faz uma classe herdar propriedades e métodos de outra
  46. 46. Orientação a objetos • Classes • __construct • Contrutor da classe, chamado quando se usa new Classe() • __destruct • Destrutor da classe • Autoloading • É chamado sempre que uma classe é usada e ela não está disponível no namespace local
  47. 47. Orientação a objetos • SPL - Standard PHP Library • Série de classes e interfaces para ajudar na resolução de problemas • Iteradores • Diretórios e Arquivos • XML • Arrays • Contagem • Exceções
  48. 48. Segurança • Recordista em CVE (Common Vulnerabilities and Exposures) pelo National Vulnerability Database • 12% in 2003, 20% in 2004, 28% in 2005, 43% in 2006, 36% in 2007, and 33.8% for the first quarter of 2008
  49. 49. Segurança • Fatores que aumentam a vulnerabilidade • Programadores com maus hábitos • Dados manipulados sem checagem • register_globals (deprecated)
  50. 50. Debug • error_reporting(E_ALL); • ini_set('display_errors', true); • Log em arquivo (via php.ini) • display_errors = Off log_errors = On error_log = /arquivo/de/log
  51. 51. Contato jonatas.oliveira@digi.com.br http://blog.jonatasoliveira.com

×