Linguagem PHP
    Bruno Cunha
     Paulo Alves


                                Computação – 6º Período
   Conceitos e Paradigmas de Linguagens de Programação
O que é PHP?
O PHP: Hypertext Preprocessor

O Linguagem de Scripting fracamente tipada

O Interpretada em tempo de execução

O Procedural e Orientada a Objetos

O Normalmente utilizada para criar
  aplicações web

                                             2
O que é PHP?
O   Portabilidade
    O Sistemas Operacionais
        O Windows                 O RISC OS

        O AS/400                  O SGI IRIX 6.5.x

        O Mac OS X                O Solaris (SPARC, INTEL)

        O Novell NetWare          O Solaris OpenCSW packages

        O OS/2                    O Redhat/CentOS Binaries

    O Não disponível para Linux
        O Compilar o código-fonte ou

        O Pegar o interpretador compilado no site da distro



                                                               3
Como Funciona o PHP?
Cliente                                 Servidor



                                                                          ...
                   Arquivo PHP      Base de Dados     Serviço de E-Mail




  Requisição

                                   Interação
  Documento HTML
                    Servidor Web               Interpretador PHP




                                                                                4
Como Funciona o PHP?
Cliente                                 Servidor



                                                                          ...
                   Arquivo PHP      Base de Dados     Serviço de E-Mail




  Requisição

                                   Interação
  Documento HTML
                    Servidor Web               Interpretador PHP




                                                                                5
Linha de Comando




                   6
Quem usa PHP?
            O Wikipedia
            O Yahoo!
            O Facebook
            O Oracle
            O Twitter
            O Wordpress
            O Netbeans
            O Eclipse
            O + outros 20 milhões de domínios

                                                    7
Fonte: Netcraft (http://www.netcraft.com/Survey/)
Breve história do PHP
O Personal Home Page / Forms Interpreter
  O Criada por Rasmus Lerdorf
  O PHP/FI 1.0 liberada em 1995
  O PHP/FI 2.0 liberada em 1997


O PHP: Hypertext Preprocessor
  O Criada por Andi Gutmans e Zeev Suraski
  O PHP 3.0 liberada em 1998
  O PHP 4.4 liberada em 2005

                                             8
Breve história do PHP
O PHP: Hypertext Preprocessor 5
  O Novo modelo de objetos
  O PHP 5.0 liberada em 2004
  O PHP 5.3 liberada em 2009


O PHP: Hypertext Preprocessor 5.3.3
  O Versão Atual
  O Liberada em Julho de 2010


                                      9
Sintaxe
Usando a linguagem PHP




                         10
Atribuição de Variável
<?php
$hello = „Hello World‟;
echo $hello;
?>



Saída:
Hello World!
Tipos de Dados
O Primitivos
  O Valores lógicos
       O TRUE, FALSE
   O   Números inteiros
       O 2
       O 0x12
   O   Números com ponto flutuante
       O 4.5
       O 7E – 10
   O   Cadeias de caracteres
       O “Olá, $nome”
       O „Olá, $nome‟


                                     12
Tipos de Dados
O Compostos
  O Arrays
    O Vetor multidimensional abstrato, através do
      qual se pode construir listas, filas, pilhas,
      dicionários e outras construções similares
  O Objetos
    O Variável de um tipo de dados criado pelo
      usuário que pode conter múltiplos atributos,
      definida através de um método construtor.


                                                      13
Tipos de Dados
O Especiais
  O Resource
     O existente a partir da versão 4 da linguagem, usada
       para referenciar recursos externos: bases de dados,
       arquivos, sockets...
  O Null
     O objeto nulo, atribuido a toda variável apagada, não
       carregada ou após uma atribuição da constante null
  O Mixed
     O usado em declarações de protótipos, determinando
       que mais de um tipo de retorno é esperado ou mais
       de um tipo de parâmetro pode ser usado


                                                             14
Manipulação de Tipos
O Tipagem dinâmica
   O Tipo não é declarado
O Fracamente tipada
   O Conversão de tipos implícita

<?php
$foo = "0"; // $foo é string
$foo += 2; // $foo é agora um inteiro
$foo = $foo + 1.3; // $foo é agora um float
$foo = 5 + "10 pequenos porcos"; // $foo é inteiro
$foo = 5 + "10 minúsculos porcos"; // $foo é inteiro
?>
                                                       15
Identificadores
O Variáveis
   O Sempre antecedido pelo símbolo “$”.
O Constantes
   O São declaradas pela função “define” ou palavra
     reservada “const”.
   O São referenciadas sem o “$”.

<?php
define(“PI”, 3.1415); // normal
const RAIO = 35; // > PHP 5.3
$circunferencia = 2 * PI * RAIO;
?>
                                                      16
Variáveis Variáveis
O Variáveis com capacidade para guardar o
  nome de outras variáveis.

<?php
$a = „ola‟;
$$a = „ mundo‟;
//$$a é o mesmo que escrever $ola.
echo ($a.$ola); // olamundo
echo ($a.$$a); // olamundo
?>

                                            17
Arrays (Vetores)
   Índice Automático                 Índice Explícito
<?php                           <?php
$foo[] = 'bar'; // [0] => bar   $foo[0] = 'bar'; // [0] => bar
$foo[] = 'baz'; // [1] => baz   $foo[1] = 'baz'; // [1] => baz

                                $foo = array(
$foo = array(
                                         0 => 'bar', // [0] => bar
         'bar', // [0] => bar
                                         1 => 'baz', // [1] => baz
         'baz', // [1] => baz            );
         );                     ?>
?>
                                                                 18
<?php                                      <?php
$tab = array (4=> 1, 2, 3, 9=> 4,5,6,7);   $tab = array (“b”=>1, “a”=2, 3, 4);
echo $tab[0]; // produz erro               echo $tab[“a”]; // imprime 2
echo $tab[4]; // imprime 1                 echo $tab[0]; // imprime 3
echo $tab[5]; // imprime 2                 echo $tab[2]; // produz erro
?>                                         ?>




 <?php
 $tab = array (1, array (2,3));
 echo $tab[1][0]; // imprime 2
 echo $tab[0]; // imprime 1
 echo $tab[0][0]; // produz erro
 ?>
Comparação
•    Equivalência
      <?php
      if (2 == 3) { echo „Não‟; }
      if (3 == '3') { echo „Sim‟; }
      if (2 != 3) { echo „Sim‟; }
      ?>


•   Identidade
      <?php
      if (3 === '3') { echo „Não‟; }
      if (3 === 3) { echo „Sim‟; }
      if (3 !== 4) { echo „Sim‟; }
      ?>
Interpolação em Strings
    Aspas Simples               Aspas Duplas

<?php                      <?php
$x = 2;                    $x = 2;
echo „Comi $x cookies.‟;   echo “Comi $x cookies.”;
// Comi $x cookies.        echo “Comi {$x} cookies. ”;
?>                         // Comi 2 cookies.
                           ?>


                                                         21
Estruturas de controle
O   Condicionais
    O if, else, ifelse / if else, switch

O   Iteradores
    O while, for, do while e foreach

O   Foreach
       <?php
       $lista = array(0, 1, 2, 3, 4);
       foreach ($lista as $item) {echo $item;}
       foreach ($lista as $chave => $valor)
       {
            echo “Item {$chave}: {$valor}”;
       }
       ?>


                                                 22
Classes e Objetos
<?php
class Foo
{
  public static $meu_estatico = 'foo';
  private $nao_estatica = 'bar';

    public static function umMetodoEstatico()
    {
       echo $this->nao_estatica;
    }
    public function valorEstatico()
    {
       return self::$meu_estatico;
    }
}
Foo::umMetodoEstatico();
$objeto = new Foo();
echo $objeto->valorEstatico();
?>

                                                23
Classes e Objetos
<?php
class Foo
{                                               Todo método/função é
  public static $meu_estatico = 'foo';          declarado com “function”
  private $nao_estatica = 'bar';
                                                Uso de seta “->” para acessar
    public static function umMetodoEstatico()
                                                propriedades e métodos
    {
       echo $this->nao_estatica;
    }                                           Operador “::” para acesso a
    public function valorEstatico()
                                                métodos ou propriedades
    {
       return self::$meu_estatico;              estáticas e constantes de
    }                                           uma classe.
}
Foo::umMetodoEstatico();
$objeto = new Foo();
echo $objeto->valorEstatico();
?>

                                                                              24
O   Passagem por Valor                 O   Passagem por Omissão
     <?php                             <?php
     function soma ($n)
     {                                 function gostoDe ($bebida, $outra=„leite‟)
          $soma=0;                     {
          for ($i=1; $i <= $n; $i++)
                $soma += $i;                return “Gosto de {$bebida} com
          return $soma;                     {$outra}.”;
     }
     ?>
                                       }
                                       echo gostoDe(„café‟);
O Passagem por Referência              // Gosto de café com leite.
                                       echo gostoDe(„vodka‟, „sprite‟);
     <?php
     function soma (&$n)
                                       // Gosto de vodka com sprite.
     {                                 ?>
          $soma=0;
          for ($i=1; $i <= $n; $i++)
                $soma += $i;
          return $soma;
     }
     ?>
Extensões
O Filesystem
  O $arquivo = file_get_contents(„arquivo.txt‟);
  O file_ put_ contents(„arquivo.txt‟, $dados);

O Processamento de Imagem (GD)
O E-Mail (Mail)
O Data e Hora
O Manipulação de Arrays
O Expressão Regular (POSIX Extended)

                                                   26
Bancos de Dados Suportados
O   Adabas D              O   Direct MS-SQL
O   dBase                 O   MySQL
O   Empress               O   ODBC
O   FilePro (read-only)   O   Oracle (OCI7 and OCI8)
O   Hyperwave             O   Ovrimos
O   IBM DB2               O   PostgreSQL
O   Informix              O   SQLite
O   Ingres                O   Solid
O   InterBase             O   Sybase
O   FrontBase             O   Velocis
O   mSQL                  O   Unix dbm

                                                       27
Projetos
O PHP-GTK
  O Criação de interfaces gráficas para o PHP
O Roadsend PHP
  O Compilador de PHP para binário
O Phalanger
  O Compilador de PHP para Byte-Codes
O Quercus
  O Permite executar PHP em Java
O HipHop
  O Tradutor de código-fonte PHP para C++

                                                28
Observações Finais
O PHP não suporta Threads.
O Programador não é obrigado a tratar
  excessões.
O PHP não gera somente HTML, é possível
  criar também PDF, imagens, animações
  em Flash, XML, etc.
O PHP tem suporte a comunicação com a
  maioria dos protocolos: POP3, COM,
  NNTP, IMAP, SNMP e incontáveis outros.
                                           29
30
Interface com PHP-GTK




                        31
Perguntas?
             32

Linguagem PHP

  • 1.
    Linguagem PHP Bruno Cunha Paulo Alves Computação – 6º Período Conceitos e Paradigmas de Linguagens de Programação
  • 2.
    O que éPHP? O PHP: Hypertext Preprocessor O Linguagem de Scripting fracamente tipada O Interpretada em tempo de execução O Procedural e Orientada a Objetos O Normalmente utilizada para criar aplicações web 2
  • 3.
    O que éPHP? O Portabilidade O Sistemas Operacionais O Windows O RISC OS O AS/400 O SGI IRIX 6.5.x O Mac OS X O Solaris (SPARC, INTEL) O Novell NetWare O Solaris OpenCSW packages O OS/2 O Redhat/CentOS Binaries O Não disponível para Linux O Compilar o código-fonte ou O Pegar o interpretador compilado no site da distro 3
  • 4.
    Como Funciona oPHP? Cliente Servidor ... Arquivo PHP Base de Dados Serviço de E-Mail Requisição Interação Documento HTML Servidor Web Interpretador PHP 4
  • 5.
    Como Funciona oPHP? Cliente Servidor ... Arquivo PHP Base de Dados Serviço de E-Mail Requisição Interação Documento HTML Servidor Web Interpretador PHP 5
  • 6.
  • 7.
    Quem usa PHP? O Wikipedia O Yahoo! O Facebook O Oracle O Twitter O Wordpress O Netbeans O Eclipse O + outros 20 milhões de domínios 7 Fonte: Netcraft (http://www.netcraft.com/Survey/)
  • 8.
    Breve história doPHP O Personal Home Page / Forms Interpreter O Criada por Rasmus Lerdorf O PHP/FI 1.0 liberada em 1995 O PHP/FI 2.0 liberada em 1997 O PHP: Hypertext Preprocessor O Criada por Andi Gutmans e Zeev Suraski O PHP 3.0 liberada em 1998 O PHP 4.4 liberada em 2005 8
  • 9.
    Breve história doPHP O PHP: Hypertext Preprocessor 5 O Novo modelo de objetos O PHP 5.0 liberada em 2004 O PHP 5.3 liberada em 2009 O PHP: Hypertext Preprocessor 5.3.3 O Versão Atual O Liberada em Julho de 2010 9
  • 10.
  • 11.
    Atribuição de Variável <?php $hello= „Hello World‟; echo $hello; ?> Saída: Hello World!
  • 12.
    Tipos de Dados OPrimitivos O Valores lógicos O TRUE, FALSE O Números inteiros O 2 O 0x12 O Números com ponto flutuante O 4.5 O 7E – 10 O Cadeias de caracteres O “Olá, $nome” O „Olá, $nome‟ 12
  • 13.
    Tipos de Dados OCompostos O Arrays O Vetor multidimensional abstrato, através do qual se pode construir listas, filas, pilhas, dicionários e outras construções similares O Objetos O Variável de um tipo de dados criado pelo usuário que pode conter múltiplos atributos, definida através de um método construtor. 13
  • 14.
    Tipos de Dados OEspeciais O Resource O existente a partir da versão 4 da linguagem, usada para referenciar recursos externos: bases de dados, arquivos, sockets... O Null O objeto nulo, atribuido a toda variável apagada, não carregada ou após uma atribuição da constante null O Mixed O usado em declarações de protótipos, determinando que mais de um tipo de retorno é esperado ou mais de um tipo de parâmetro pode ser usado 14
  • 15.
    Manipulação de Tipos OTipagem dinâmica O Tipo não é declarado O Fracamente tipada O Conversão de tipos implícita <?php $foo = "0"; // $foo é string $foo += 2; // $foo é agora um inteiro $foo = $foo + 1.3; // $foo é agora um float $foo = 5 + "10 pequenos porcos"; // $foo é inteiro $foo = 5 + "10 minúsculos porcos"; // $foo é inteiro ?> 15
  • 16.
    Identificadores O Variáveis O Sempre antecedido pelo símbolo “$”. O Constantes O São declaradas pela função “define” ou palavra reservada “const”. O São referenciadas sem o “$”. <?php define(“PI”, 3.1415); // normal const RAIO = 35; // > PHP 5.3 $circunferencia = 2 * PI * RAIO; ?> 16
  • 17.
    Variáveis Variáveis O Variáveiscom capacidade para guardar o nome de outras variáveis. <?php $a = „ola‟; $$a = „ mundo‟; //$$a é o mesmo que escrever $ola. echo ($a.$ola); // olamundo echo ($a.$$a); // olamundo ?> 17
  • 18.
    Arrays (Vetores) Índice Automático Índice Explícito <?php <?php $foo[] = 'bar'; // [0] => bar $foo[0] = 'bar'; // [0] => bar $foo[] = 'baz'; // [1] => baz $foo[1] = 'baz'; // [1] => baz $foo = array( $foo = array( 0 => 'bar', // [0] => bar 'bar', // [0] => bar 1 => 'baz', // [1] => baz 'baz', // [1] => baz ); ); ?> ?> 18
  • 19.
    <?php <?php $tab = array (4=> 1, 2, 3, 9=> 4,5,6,7); $tab = array (“b”=>1, “a”=2, 3, 4); echo $tab[0]; // produz erro echo $tab[“a”]; // imprime 2 echo $tab[4]; // imprime 1 echo $tab[0]; // imprime 3 echo $tab[5]; // imprime 2 echo $tab[2]; // produz erro ?> ?> <?php $tab = array (1, array (2,3)); echo $tab[1][0]; // imprime 2 echo $tab[0]; // imprime 1 echo $tab[0][0]; // produz erro ?>
  • 20.
    Comparação • Equivalência <?php if (2 == 3) { echo „Não‟; } if (3 == '3') { echo „Sim‟; } if (2 != 3) { echo „Sim‟; } ?> • Identidade <?php if (3 === '3') { echo „Não‟; } if (3 === 3) { echo „Sim‟; } if (3 !== 4) { echo „Sim‟; } ?>
  • 21.
    Interpolação em Strings Aspas Simples Aspas Duplas <?php <?php $x = 2; $x = 2; echo „Comi $x cookies.‟; echo “Comi $x cookies.”; // Comi $x cookies. echo “Comi {$x} cookies. ”; ?> // Comi 2 cookies. ?> 21
  • 22.
    Estruturas de controle O Condicionais O if, else, ifelse / if else, switch O Iteradores O while, for, do while e foreach O Foreach <?php $lista = array(0, 1, 2, 3, 4); foreach ($lista as $item) {echo $item;} foreach ($lista as $chave => $valor) { echo “Item {$chave}: {$valor}”; } ?> 22
  • 23.
    Classes e Objetos <?php classFoo { public static $meu_estatico = 'foo'; private $nao_estatica = 'bar'; public static function umMetodoEstatico() { echo $this->nao_estatica; } public function valorEstatico() { return self::$meu_estatico; } } Foo::umMetodoEstatico(); $objeto = new Foo(); echo $objeto->valorEstatico(); ?> 23
  • 24.
    Classes e Objetos <?php classFoo { Todo método/função é public static $meu_estatico = 'foo'; declarado com “function” private $nao_estatica = 'bar'; Uso de seta “->” para acessar public static function umMetodoEstatico() propriedades e métodos { echo $this->nao_estatica; } Operador “::” para acesso a public function valorEstatico() métodos ou propriedades { return self::$meu_estatico; estáticas e constantes de } uma classe. } Foo::umMetodoEstatico(); $objeto = new Foo(); echo $objeto->valorEstatico(); ?> 24
  • 25.
    O Passagem por Valor O Passagem por Omissão <?php <?php function soma ($n) { function gostoDe ($bebida, $outra=„leite‟) $soma=0; { for ($i=1; $i <= $n; $i++) $soma += $i; return “Gosto de {$bebida} com return $soma; {$outra}.”; } ?> } echo gostoDe(„café‟); O Passagem por Referência // Gosto de café com leite. echo gostoDe(„vodka‟, „sprite‟); <?php function soma (&$n) // Gosto de vodka com sprite. { ?> $soma=0; for ($i=1; $i <= $n; $i++) $soma += $i; return $soma; } ?>
  • 26.
    Extensões O Filesystem O $arquivo = file_get_contents(„arquivo.txt‟); O file_ put_ contents(„arquivo.txt‟, $dados); O Processamento de Imagem (GD) O E-Mail (Mail) O Data e Hora O Manipulação de Arrays O Expressão Regular (POSIX Extended) 26
  • 27.
    Bancos de DadosSuportados O Adabas D O Direct MS-SQL O dBase O MySQL O Empress O ODBC O FilePro (read-only) O Oracle (OCI7 and OCI8) O Hyperwave O Ovrimos O IBM DB2 O PostgreSQL O Informix O SQLite O Ingres O Solid O InterBase O Sybase O FrontBase O Velocis O mSQL O Unix dbm 27
  • 28.
    Projetos O PHP-GTK O Criação de interfaces gráficas para o PHP O Roadsend PHP O Compilador de PHP para binário O Phalanger O Compilador de PHP para Byte-Codes O Quercus O Permite executar PHP em Java O HipHop O Tradutor de código-fonte PHP para C++ 28
  • 29.
    Observações Finais O PHPnão suporta Threads. O Programador não é obrigado a tratar excessões. O PHP não gera somente HTML, é possível criar também PDF, imagens, animações em Flash, XML, etc. O PHP tem suporte a comunicação com a maioria dos protocolos: POP3, COM, NNTP, IMAP, SNMP e incontáveis outros. 29
  • 30.
  • 31.
  • 32.