Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
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
Upcoming SlideShare
Loading in …5
×

PHP - Uma Pequena Introducao

2,752 views

Published on

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

Published in: Technology
  • Be the first to comment

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

×