Faculdade União. Professor Luciano Roberto Rocha - PDF
Download "Faculdade União. Professor Luciano Roberto Rocha"
William Bento Caiado
1 Faculdade União PHPPRÁTICO Professor Luciano Roberto Rocha
2 Arquitetura de Softwares Principais modelos de aplicações: Standalone Cliente-servidor Arquitetura baseada na Web
3 Modelo standalone Todos os recursos necessários a execução do programa estão localizados em apenas uma máquina Processos SGBD Interface com o usuário Sistema de arquivos Plataforma de execução
4 Cliente-servidor Aplicação dividida em duas camadas Requisição (request) - Input Resposta (response) - Output Interface com o usuário Sistema de arquivos SGBD Processos Servidor Cliente (gordo)
5 Sistemas baseados na Web Modelo dividido em três camadas Requisição (request) - Input Resposta (response) - Output Sistema de arquivos Processos Servidor WEB SGBD Sistema de arquivos Interface com o usuário Processos Cliente (magro) Sistemas legados, SGBDs, etc.
6 Principais Web Browsers 0,62% 61,56% 1,15% 28,86% 2.16% Fonte: W3Counter mai/2008
7 Disponibilização de Páginas Estáticas Requisição (request) - Input Resposta (response) - Output browser url servidor web http link path Textos Imagens vídeos Textos Imagens vídeos usuário arquivos
8 Histórico da linguagem PHP surgiu por volta de 1994 criado por Rasmus Ledorf com o nome de Personal Home Page Tools para substituir um conjunto de scripts Perl que ele usava no desenvolvimento de sua página pessoal; Mais tarde Zeev Suraski e Andi Gutmans reescreveram o analisador do PHP que contava com o primeiro recurso de orientação a objetos; Hoje o termo PHP é um acrônimo recursivo para Hypertext Preprocessor (pré-processador de hipertextos)
9 Integração PHP - HTML Requisição (request) - Input SERVIDOR WEB Resposta (response) - Output É um script PHP! O servidor Web aciona o módulo PHP. O cliente (browser) solicita uma página ao servidor Web. USUÁRIO O cliente (browser) exibe ao usuário o conteúdo HTML. 5. O servidor Web envia a página HTML ao cliente. O módulo PHP interpreta os trechos em PHP do script e devolve ao servidor Web a página processada.
10 Principais características linguagem extremamente modularizada, ideal para uso web seu propósito principal é de implementar soluções web velozes, simples e eficientes pode ser embarcada no código HTML provê suporte a um grande número de bases de dados suporta os protocolos: IMAP, SNMP, NNTP, POP3, HTTP, LDAP, XML-RPC, SOAP.
11 Principais Vantagens open source código executado no servidor (server-side) velocidade e robustez independência de plataforma estruturado e orientação a objeto portabilidade: "Write once, run anywhere curva de aprendizagem curta tipagem fraca sintaxe similar a linguagem C/C++ e o PERL
12 Sintaxe Básica Tags de abertura e fechamento do código php 1 2 <?php linha 1 linha 2... <script language = php > linha 1 linha 2... </script> 3 4 <? linha 1 linha 2... <% linha 1 linha 2... %>
13 Sintaxe Básica Tags de abertura e fechamento do código php Exemplos: 1. <?php echo 'se você quer servir documentos XHTML ou XML, faça assim'; 2. <script language="php"> echo 'alguns editores (como FrontPage) não gostam de instruções de processamento'; </script> 3. <? echo 'esta é a mais simples, uma instrução de processamento SGML'; 4. <% echo 'Você pode opcionalmente usar tags no estilo ASP'; %> Enquanto as tags vistas nos exemplos um e dois estão sempre disponíveis, o exemplo um é mais comumente usado, e recomendado, das duas. Tags curtas (exemplo três) estão disponíveis apenas quando são ativadas pela configuração short_open_tag no arquivo php.ini. Tags no estilo ASP (exemplo quatro) estão disponíveis apenas quando ativadas atráves da diretiva de configuração asp_tags no arquivo php.ini.
14 Separação de instruções O PHP requer que as instruções sejam terminadas com um ponto-e-vírgula ao final de cada comando. A tag de fechamento de um bloco de código PHP automaticamente implica em um ponto-e-vírgula; você não precisa ter um ponto-e-vírgula terminando a última linha de um bloco PHP. A tag de fechamento irá incluir uma nova linha logo após, se estiver presente. <?php echo 'Este é um teste'; <?php echo 'Este é um teste' <?php echo 'Nós omitimos a última tag de fechamento';
15 Comentários O PHP suporta comentários no estilo 'C', 'C++' e shell do Unix shell (estilo Perl). Por exemplo: <?php echo 'Isto é um teste'; // Estilo de comentário de uma linha em echo 'Isto é ainda outro teste'; /* Este é um comentário de múltiplas linhas ainda outra linha de comentário */ echo 'Um teste final'; # Comentário de uma linha no estilo shell c++ Os comentários de estilo "uma linha" apenas comentam até o final da linha ou do bloco PHP de código corrente, o que chegar primeiro. Isto significa que código HTML após //... ou #... SERÁ exibido: <h1>isto é um <?php # echo 'simples'; exemplo.</h1> <p>o cabeçalho acima irá dizer 'Isto é um exemplo'.</p>
16 Tipos O PHP suporta os oitos tipos primitivos. São quatros tipos básicos: boolean integer float (número de ponto flutuante, ou também double) string Dois tipos compostos: array object E finalmente dois tipos especiais: resource NULL
17 Tipos <?php $a_bool = TRUE; // um booleano $a_str = "foo"; // uma string $a_str2 = 'foo'; // uma string $an_int = 12; // um inteiro $an_flt = 1.63; // um float O PHP não requer (ou suporta) a definição de tipo explícita na declaração de variáveis: o tipo de uma variável é determinado pelo contexto em que a variável é utilizada. Isto significa que, se você atribuir um valor string para a variável $var, $var se torna uma string. Se você então atribuir um valor inteiro para $var, ela se torna um inteiro.
18 Manipulação de Tipos Um exemplo da conversão automática do PHP é o operador de adição '+'. Se qualquer um dos operadores for float, então todos os operadores são avaliados como floats, e o resultado será um float. De outra forma, se os operadores forem interpretados como integers então o resultado será um integer. <?php $foo = "0"; // $foo é string (ASCII 48) $foo += 2; // $foo é agora um inteiro (2) $foo = $foo + 1.3; // $foo é agora um float (3.3) $foo = 5 + "10 pequenos porcos"; // $foo é inteiro (15) $foo = 5 + "10.5 minúsculos porcos"; // $foo é float (15.5)
19 Variáveis As variáveis no PHP são representadas por um cifrão ($) seguido pelo nome da variável. Os nomes de variável no PHP fazem distinção entre maiúsculas e minúsculas. Um nome de variável válido se inicia com uma letra ou sublinhado, seguido de qualquer número de letras, algarismos ou sublinhados. <?php $var = 'Bob'; $Var = 'Joe'; echo "$var, $Var"; // exibe "Bob, Joe" $4site = 'not yet'; // inválido; começa com um número $fração = 'not yet'; // inválido; possui caracteres especiais $_4site = 'not yet'; // válido; começa com um sublinhado $täyte = 'mansikka'; // válido; 'ä' é um caracter ASCII 228
20 Variáveis pré-definidas O PHP oferece um grande número de variáveis pré-definidas para qualquer script que ele execute. Alguns exemplos: $GLOBALS Referencia todas variáveis disponíveis no escopo global $_SERVER Informação do servidor e ambiente de execução $_GET HTTP GET variáveis $_POST HTTP POST variables $_FILES HTTP File Upload variáveis $_REQUEST Variáveis de requisição HTTP $_SESSION Variáveis de sessão $_ENV Environment variables $_COOKIE HTTP Cookies $php_errormsg A mensagem de erro anterior $HTTP_RAW_POST_DATA Informação não-tratada do POST $http_response_header Cabeçalhos de resposta HTTP $argc O número de argumentos passados para o script $argv Array de argumentos passados para o script
21 Operadores As principais categorias de operadores do PHP são: Operadores de Atribuição Operadores de String Operadores Aritméticos Operadores Relacionais (de comparação) Operadores de Incremento/Decremento Operadores Lógicos Outros operadores menos utilizados: Operador Bit-a-bit Operadores de controle de erro Operadores de Execução Operadores de Arrays Operadores de tipo
22 Operadores de Atribuição O operador básico de atribuição é "=". A sua primeira inclinação deve ser a de pensar nisto como "é igual". Não. Isto quer dizer, na verdade, que o operando da esquerda recebe o valor da expressão da direita (ou seja, "é configurado para"). O valor de uma expressão de atribuição é o valor atribuído. Ou seja, o valor de "$a = 3" é 3. Além do operador básico de atribuição, há "operadores combinados que permitem pegar um valor de uma expressão e então usar seu próprio valor para o resultado daquela expressão. Por exemplo: <?php $a = 3; $a += 5; // configura $a para 8, como se disséssemos: $a = $a + 5; $b = "Bom "; $b.= "Dia!"; // configura $b para "Bom Dia!", como em $b = $b. "Dia!";
23 Operadores de String Há dois operadores de string. O primeiro é o operador de concatenação ('.'), que retorna a concatenação dos seus argumentos direito e esquerdo. O segundo é o operador de atribuição de concatenação ('.='), que acrescenta o argumento do lado direito no argumento do lado esquerdo. Exemplos: <?php $a = "Olá "; $b = $a. "mundo!"; // agora $b contém "Olá mundo!" $a = "Olá "; $a.= "mundo!"; // agora $a contém "Olá mundo!"
24 Operadores Aritméticos Lembra-se da aritmética básica da escola? Estes operadores funcionam exatamente como aqueles. Exemplo Nome Resultado -$a Negação Oposto de $a. $a + $b Adição Soma de $a e $b. $a - $b Subtração Diferença entre $a e $b. $a * $b Multiplicação Produto de $a e $b. $a / $b Divisão Quociente de $a por $b. $a % $b Módulo Resto de $a dividido por $b. O operador de divisão ("/") sempre retorna um valor com ponto flutuante, a não ser que os dois operados seja inteiros. Operandos de módulo são convertidos para inteiros (removendo a parte decimal) antes de processar.
25 Operadores Relacionais Permitem que se estabeleça relação entre dois valores ou seja, realiza a comparação entre dois valores. Exemplo Nome Resultado $a == $b Igual Verdadeiro (TRUE TRUE) se $a é igual a $b. $a === $b Idêntico Verdadeiro (TRUE TRUE) se $a é igual a $b, e eles são do mesmo tipo (introduzido no PHP4). $a!= $b Diferente Verdadeiro se $a não é igual a $b. $a <> $b Diferente Verdadeiro se $a não é igual a $b. $a!== $b Não idêntico Verdadeiro de $a não é igual a $b, ou eles não são do mesmo tipo (introduzido no PHP4). $a < $b Menor que Verdadeiro se $a é estritamente menor que $b. $a > $b Maior que Verdadeiro se $a é estritamente maior que $b. $a <= $b Menor ou igual Verdadeiro se $a é menor ou igual a $b. $a >= $b Maior ou igual Verdadeiro se $a é maior ou igual a $b.
26 Operadores de Incremento/Decremento O PHP suporta operadores de pré e pós-incremento e decremento no estilo C. Exemplo Nome Efeito ++$a Pré-incremento Incrementa $a em um, e então retorna $a. $a++ Pós-incremento Retorna $a, e então incrementa $a em um. --$a Pré-decremento Decrementa $a em um, e então retorna $a. $a-- Pós-decremento Retorna $a, e então decrementa $a em um.
27 Operadores de Lógicos Esses operadores são utilizados para realizar junções ou disjunções lógicas entre valores. Exemplo Nome Resultado $a and $b E Verdadeiro (TRUE TRUE) se tanto $a quanto $b são verdadeiros. $a or $b OU Verdadeiro se $a ou $b são verdadeiros. $a xor $b XOR Verdadeiro se $a ou $b são verdadeiros, mas não ambos.! $a NÃO Verdadeiro se $a não é verdadeiro. $a && $b E Verdadeiro se tanto $a quanto $b são verdadeiros. $a $b OU Verdadeiro se $a ou $b são verdadeiros.
28 Estrutura de Controle - if A construção if é uma das mais importantes implementações de muitas linguagens, incluindo o PHP. Ela permite a execução condicional de fragmentos de código. O PHP implementa uma estrutura if que é similar aquela do C: if (expressao) instrucoes Exemplo: <?php if ($a > $b) echo "a é maior que b"; // Quando existir mais de uma instrução utiliza-se os construtores { e } <?php if ($a > $b) { echo "a é maior que b"; $b = $a; }
29 Estrutura de Controle - else else estende um comando if para executar uma instrução caso a expressão no comando if seja avaliada como FALSE. Exemplo: <?php if ($a > $b) { echo "a é maior que b"; } else { echo "a NÃO é maior que b"; } O comando else só é executado se a expressão if for avaliada como FALSE, e se havendo qualquer expressão elseif, somente se todas elas forem avaliadas como FALSE também.
30 Estrutura de Controle - elseif/else if elseif, como seu nome sugere, é uma combinação de if e else. Da mesma forma que o else, ele estende um comando if para executar uma instrução diferente no caso de a expressão if original ser avaliada como FALSE. Porém, ao contrário de else, ele executará aquela expressão alternativa somente se a expressão condicional do elseif for avaliada como TRUE. Exemplo: <?php if ($a > $b) { echo "a é maior que b"; } elseif ($a == $b) { echo "a é igual a b"; } else { echo "a é menor que b b"; } Podem haver vários elseifs dentro da mesma instrução if. No PHP, você também pode escrever 'else if' (em duas palavras) e o comportamento será idêntico a um 'elseif' (em uma só palavra).
31 Estrutura de Controle - while while são o tipo mais simples de criar um 'loop' em PHP. Eles se comportam como seus compatíveis em C. O formato básico de um comando while é: while (expressao) instrucoes Ele pede que o PHP execute os comandos aninhados repetidamente, enquanto a expressão do while é avaliada como TRUE. O valor da expressão é verificada cada vez que se passa no começo do 'loop', desta forma, mesmo que este valor mude durante a execução do(s) comando(s) aninhado(s), a execução não parará até o fim da iteração (cada vez que o PHP executa os comandos dentro do 'loop' é uma iteração). <?php /* exemplo 1 */ $i = 1; while ($i <= 10) { echo $i++; /* o valor impresso será $i depois do acréscimo (post-increment) */ }
32 Estrutura de Controle - do-while Loopsdo-while são bem similares aos loopswhile, exceto pelo fato de que a condição é verificada no fim de cada iteração em vez de no começo. A diferença principal dos loops while regulares é que a primeira iteração de um loopdo-while é garantidamente executada (a condição só é verificada no fim da iteração) Há apenas uma sintaxe para loopsdo-while: <?php $i = 0; do { echo $i; } while ($i > 0); O loop acima rodaria exatamente uma vez, desde que depois da primeira iteração, quando a condição é verificada, ela é avaliada como FALSE ($i não é maior que zero 0) e a execução do loop termina.
33 Estrutura de Controle - for Loopsfor são os laços mais complexos em PHP. Eles se comportam como os seus compatíveis em C. A sintaxe de um loopfor é: for (expr1; expr2; expr3) instrucoes A primeira expressão (expr1) é avaliada (executada) uma vez incondicionalmente no começo do loop. No começo de cada iteração, expr2 é avaliada. Se ela é avaliada como TRUE, o loop continua e o(s) comando(s) aninhado(s) é(são) executado(s). Se é avaliada como FALSE, a execução do 'loop' termina. No fim de cada iteração, expr3 é avaliada (executada). <?php /* exemplo 1 */ for ($i = 1; $i <= 10; $i++) { echo $i; }
34 Estrutura de Controle - switch A instruçãoswitch é similar a uma série de instruções IFs seguidas. Em muitas ocasiões, você poderá ter que comparar a mesma variável (ou expressão) com muitos valores diferentes, executando códigos diferentes dependendo com qual valor ele se encaixar. É exatamente para isso que a instruçãoswitch faz. Os exemplos seguintes mostram duas maneiras diferentes de escrever a mesma coisa, uma utilizando uma série de ifs e elseifs e a outra utlizando a instrução switch: <?php if ($i == 0) { echo "i igual a 0"; } elseif ($i == 1) { echo "i igual a 1"; } elseif ($i == 2) { echo "i igual a 2"; } <?php switch ($i) { case 0: echo "i igual a 0"; break; case 1: echo "i igual a 1"; break; case 2: echo "i igual a 2"; break; } break cancela a execução do comando for, foreach, while, do-while ou switch atual.