• Save
Php
Upcoming SlideShare
Loading in...5
×
 

Php

on

  • 1,700 views

 

Statistics

Views

Total Views
1,700
Views on SlideShare
1,700
Embed Views
0

Actions

Likes
1
Downloads
0
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • Para versão PHP 4.0, Ze ev Suraki e A nd i Gutmans reescreveram a maior parte do engine PHP, criando-se a ZEND Engine
  • Hoje PHP é um acrônimo recursivo: Hypertext Preprocessor
  • Tags de abertura e fechamento:
  • Toda variável é identificada pelo sinal '$' antes do nome O tipo da variável não precisa ser explicitamente definido
  • O tipo da variável não precisa ser explicitamente definido
  • O uso de aspas duplas permite a interpolação de variáveis, que consiste em incluir o valor de uma variável dentro de outra.
  • Arrays são mapas ordenados. Um mapa é um tipo que relaciona valores a chaves . Este tipo é otimizado de várias maneiras, então você pode usá-lo como um array real, ou uma lista (vetor), hashtable (que é uma implementação de mapa), dicionário, coleção, pilha, fila e provavelmente mais. Como você pode ter outro array PHP como um valor, você pode facilmente simular árvores.
  • As matrizes poderão ser indexadas: numericamente pelo nome
  • Arrays Associativos são também conhecidos como Dictionaries ou Hashes
  • Exemplo: 0, 'green'=>1, 'blue'=>2); foreach( $cores as $key => $value) { echo "$key => $value\\n"; } ?>
  • Array_pop  retira e retorna o último elemento do array Array_push  insere um ou mais elementos no fim de um array Array_rand  retorna um ou mais elementos do array Array_reverse  retorna um array com ordem inversa Array_shift  retira e retorna o primeiro elemento de um array
  • Mixed: indica que o parâmetro pode aceitar múltiplos tipos mas não necessariamente todos os tipos. Number: indica que o parâmetro pode ser tanto integer ou float mixed mixed indica que um parâmetro pode aceitar vários (mas não necessariamente todos) os tipos gettype(), por exemplo, aceita todos os tipos do PHP, enquanto str_replace () somente aceita strings e arrays. number number indica que um parâmetro pode ser tanto um integer ou float . callback Algumas funções como call_user_func () ou usort () aceitam callback de funções definidas por usuário como parâmetro. Funções de callback não podem ser somente simples funções, mas também métodos de objetos incluindo métodos estáticos de classes. Uma função PHP é simplesmente passado pelo seu nome como uma string. Você pode passar qualquer função nativa ou definida por usuário. Note que construtores da linguagem como array() , echo() , empty() , eval () , exit() , isset () , list() , print() ou unset() não podem ser chamados usando um callback. A method of an instantiated object is passed as an array containing an object as the element with index 0 and a method name as the element with index 1. Static class methods can also be passed without instantiating an object of that class by passing the class name instead of an object as the element with index 0. Apart from common user-defined function, create_function () can be used to create an anonymous callback function.
  • Coerção  é a conversão de um tipo em outro tipo diferente mediante operação realizada com tipos diferentes. Por exemplo: $a=1; $a = $a + "5"; Nesse exemplo a variável $a é numérica (integer) na primeira atribuição e string na segunda atribuição
  • typecast = "Conversão de Tipos"
  • Casts são conhecidos por "Moldagem" em português
  • É aconselhável o uso de letras maiúsculas para dar nomes a constantes Somente dados escalares ( boolean , integer , float e string ) pode ser colocados em constantes A constant is an identifier (name) for a simple value. As the name suggests, that value cannot change during the execution of the script (except for magic constants , which aren't actually constants). A constant is case-sensitive by default. By convention, constant identifiers are always uppercase.
  • NomeDescrição __LINE__ A linha atual do script. __FILE__ O caminho completo e nome do arquivo. Se utilizado dentro de um include, o nome do arquivo incluído será retornado. Desde o PHP 4.0.2, __FILE__ sempre contém um caminho absoluto com links simbólicos resolvidos enquanto em versões antigas ela continha um caminho relativo sob certas circunstâncias. __DIR__ O diretório do arquivo. Se usado dentro de um include, o diretório do arquivo incluído é retornado. Isto é equivalente a dirname(__FILE__) . Este nome do diretório não possui barra no final, a não ser que seja o diretório raiz. (Adicionado no PHP 5.3.0.) __FUNCTION__ O nome da função (Acrescentado no PHP 4.3.0). A partir do PHP 5 esta constante retorna o nome da função como ela foi declarada (sensível a maiúsculas e minúsculas). No PHP 4 sempre retorna o nome em minúsculas. __CLASS__ O nome da classe (Acrescentado no PHP 4.3.0). A partir do PHP 5 esta constante retorna o nome da função como ela foi declarada (sensível a maiúsculas e minúsculas). No PHP 4 sempre retorna o nome em minúsculas. __METHOD__ O nome do método de classe. (Acrescentado no PHP 5.0.0). O nome do método é retornado como foi declarado (sensível a maiúsculas e minúsculas). __NAMESPACE__ O nome do atual namespace (sensível a maiúsculas e minúsculas). Esta constante é definida em tempo de compilação (Adicionada no PHP 5.3.0).
  • "||" tem precedência maior que "or" "&&" tem precedência maior que "and"
  • Operadores de mesma prioridade são avaliados da esquerda para direita. A precedência dos operadores diminui de cima para baixo
  • Qualquer script PHP é construído por uma série de instruções. Uma instrução pode ser uma atribuição, uma chamada de função, um 'loop' (laço), uma instrução condicional, ou mesmo uma instrução que não faz nada (um comando vazio). Instruções geralmente terminam com um ponto e vírgula. Além disso, as instruções podem ser agrupados em um grupo de comandos através do encapsulamento de um grupo de comandos com chaves criando-se um bloco Um grupo de comandos (bloco) é uma instrução também.
  • If($x == $y) Comando1; Comando2; If($x == $y) { Comando1; Comando2; }
  • Avalia o valor de uma expressão para escolher qual bloco de instruções deverá ser executado
  • Avalia uma expressão e caso esta seja verdadeira é executado o comando enquanto a condição permanecer verdadeira. O laço executará 0 ou mais vezes dependendo o valor inicial
  • Condição avaliada no final do bloco. Bloco é executado pelo menos uma vez e termina quando a expressão for avaliada falsa.
  • Condição inicial (valor inicial da variável contadora) Condição de parada (condição de execução. Enquanto for TRUE, o bloco de comandos será executado) atualização (valor a ser incrementado após cada execução)
  • break cancela a execução do comando for, foreach, while, do-while ou switch atual. break aceita um argumento numérico opcional que diz a ele quantas estruturas aninhadas englobadas devem ser quebradas. continue é usado dentro de estruturas de loops para saltar o resto da iteração do loop atual e continuar a execução na avaliação e no início da próxima iteração.
  • Uma função pode receber informações quando de sua chamada. Essas informações são os argumentos passados para função. Uma função poderá retornar um valor
  • Values are returned by using the optional return statement. Any type may be returned, including lists and objects. This causes the function to end its execution immediately and pass control back to the line from which it was called. See return() for more information
  • Include e Include_once retornam um warning no caso de erro, isto é, caso a página incluida não possa ser lida, porém a página continua em processamento Require e require_once retornam um erro fatal em caso de erro na inclusão da página
  • Quando um formulário é submetido para um script PHP, qualquer variável do formulário será automaticamente disponível para o script
  • htmlspecialchars(); Esta função é idêntica a htmlspecialchars() em toda forma, exceto que com htmlentities() , todos caracteres que tem entidade HTML equivalente são convertidos para estas entidades. Se você está querendo decodificar (o inverso), você pode usar html_entity_decode(). stripslashes(); urlencode(); Retorna uma string em que todos os caracteres não-alfanuméricos com exceção de -_. são substituídos com um sinal de porcento ( % ) seguido por dois dígitos hexadecimais e espaços codificados como um sinal de ( + ). É codificada do mesmo jeito que dados vindos de um formulário WWW é codificado, isto é, da mesma maneira que application/x-www-form-urlencoded urldecode(); Decodifica qualquer %## codificado na string.
  • Várias variáveis pré-definidas no PHP são "superglobais", que significa que elas estão disponível em todos escopos para todo o script. Não há necessidade de fazer global $variable; para acessá-lo dentro de funções ou métodos. Veja mais informações em: http://www.php.net/manual/pt_BR/language.variables.superglobals.php $GLOBALS Contains a reference to every variable which is currently available within the global scope of the script. The keys of this array are the names of the global variables. $GLOBALS has existed since PHP 3. $_SERVER Variables set by the web server or otherwise directly related to the execution environment of the current script. Analogous to the old $HTTP_SERVER_VARS array (which is still available, but deprecated). $_GET Variáveis providas pelo script via URL query string. Análogo ao array $HTTP_GET_VARS array (which is still available, but deprecated). $_POST Variáveis providas pelo script via HTTP POST. Análogo array $HTTP_POST_VARS (which is still available, but deprecated). $_COOKIE Variables provided to the script via HTTP cookies. Analogous to the old $HTTP_COOKIE_VARS array (which is still available, but deprecated).
  • $_FILES Variables provided to the script via HTTP post file uploads. Analogous to the old $HTTP_POST_FILES array (which is still available, but deprecated). See POST method uploads for more information. $_ENV Variables provided to the script via the environment. Analogous to the old $HTTP_ENV_VARS array (which is still available, but deprecated). $_REQUEST Variables provided to the script via the GET, POST, and COOKIE input mechanisms, and which therefore cannot be trusted. The presence and order of variable inclusion in this array is defined according to the PHP variables_order configuration directive. This array has no direct analogue in versions of PHP prior to 4.1.0. See also import_request_variables() . Caution: Since PHP 4.3.0, FILE information from $_FILES does not exist in $_REQUEST. Note: When running on the command line , this will not include the argv and argc entries; these are present in the $_SERVER array. Um array associativo que por padrão contém informações de $_GET , $_POST e $_COOKIE . $_SESSION Variables which are currently registered to a script's session. Analogous to the old $HTTP_SESSION_VARS array (which is still available, but deprecated). See the Session handling functions section for more information.
  • A função session_start() deve vir antes de qualquer saída HTML.
  • http://docs.php.net/manual/pt_BR/book.mysql.php
  • Veja mais funções em: http://www.php.net/manual/pt_BR/ref.datetime.php

Php Php Presentation Transcript

  • PHP Mauro César Lopes 27-09-2009 1
  • AlteraçõesData Alteração30/10/2009 2
  • PHP Desenvolvido originalmente por Rasmus Lerdorf em 1994 site do PHP: http://www.php.net PHP 2.0 1995 PHP 3.0 Junho/1998 PHP 4.0 Maio/2000 PHP 5.0 Julho/2004 3 View slide
  • Características do PHP Código aberto Embutido no HTML Baseado no servidor Suporte a diversos Banco de Dados Portabilidade 4 View slide
  • HistóricoPHP/FI (Forms Interpreter) (1995)PHP/FI 2.0 (1997)PHP 3.0 (Junho de 1998)PHP 4.0 (maio de 2000)PHP 5.0 (Julho de 2007) 5
  • Áreas que os scripts PHP são usados Scripts no lado do servidor (server-side) Scripts de linha de comando Aplicações Desktop 6
  • Sistemas operacionais Linux Unix like: Solaris, OpenBSD, MacOS X, ... Microsoft Windows 7
  • Servidores HTTP Apache IIS (Internet Information Service) 8
  • Tipo de programação Procedural Orientada a Objetos 9
  • Funcionalidades do PHP Gerar HTML Geração de imagens Arquivos PDF Animações em Flash 10
  • Suporte a banco de dados MySQL Oracle Interbase PostgresSQL Outros ... 11
  • Criação de scripts PHP Todo trecho de programa PHP deve estar entre as tags <?php e ?>para que o servidor Web saiba que esse trecho trata-se de um código em PHP e que deve ser processadoExemplo:<?php echo "Hello, world !";?> 12
  • Variáveis Variáveis proveem uma maneira de atribuir um nome a uma área de memória que conterá um dado Inicia por $ seguido de uma letra ou _ - é case sensitive, isto é, sensível ao caso (distinção entre letras maiúsculas e minúsculas) Por exemplo, a variável $Cor é completamente diferente da variável $cor 13
  • Comentários De uma linha: // este é o comentário de uma linha # este é o comentário de uma linha De mais de uma linha: delimitado por /* e */ 14
  • Tipos de dadosNão é necessário declarar uma variável antes de usá-la. Basta atribuir um valor inicial. A checagem de tipos é feita dinamicamente.Exemplo:$x=5;$x="policamp";$x=3.14; Inteiro Ponto flutuante String Array ObjetoChecagem dinâmica de tipos 15
  • Inteiros (integer ou long) $x = 4567; # inteiro $y = -127; # inteiro negativo $o = 0116; # inteiro em representação octal (base 8) $hex = 0x0F; # inteiro em representação hexadecimal (base 16) 16
  • Ponto Flutuante (double ou float) $PI=3.14; $MOL=6.02e23; # uso da notação científica 17
  • Strings Uma string é uma cadeia (sequência) de caracteres delimitadas pelos caracteres " ou Exemplos:"1", "Policamp", Campinas, Minas Gerais Strings podem ser concatenadas usando o operador .Exemplos:$paragrafo_html = "<p>" . $texto . "</p>"; 18
  • Strings Podem ser delimitadas por aspas simples (literal) ou aspas duplas (onde há interpretação de varáveis e caracteres especiais). Caracteres especiais:  n (new line)  r (carriage return)  t (tab)  (barra invertida)  $ (cifrão)  (aspa simple)  " (aspa dupla) 19
  • Booleano Expressa um valor lógico que pode ser verdadeiro (TRUE) ou falso (FALSE) Exemplo:<?php $valida=true; if($valida) { print "Validadon"; }?> 20
  • Arrays São estruturas de dados que podem armazenar múltiplos valoresExemplo:$cores= array(vermelho, verde, azul);$cor = $cores[1]; // retorna "verde" (2º elemento do array)$cores[1]=amarelo; // atribui novo valor (ao 2º elemento do array) 21
  • Arrays Podem ser definidos como mapeamentos ou vetores indexadosExemplo:<?php $cores[0]="Red"; $cores[1]="Green"; $cores[2]="Blue";?> 22
  • Arrays - tipos de índices Ordenado  baseado em número (começa no 0) (indexada numericamente) Associativo  formado por caracteres alfanuméricos (indexada por nome) 23
  • Arrays// cria e inicializa um array (indexada numericamente)$cores = array("Red", "Green", "Blue");ou// cria e inicializa um array usando índices (explicitamente)$cores = array(0=>Red, 1=> "Green", 2=>"Blue");ou// cria e inicializa um array usando índices (numéricos)$cores[]="Red";$cores[]="Green";$cores[]="Blue"; 24
  • Arrays AssociativosSão conjunto ordenados de chaves e valores, onde cada valor é acessado através de uma chave associada.Exemplo:$estados_e_capital = array ( SP => São Paulo, MG => Belo Horizonte, RJ => Rio de Janeiro, ES => Vitória); 25
  • Arrays Associativos<?php $cor[red]=0; $cor[green]=255; $cor[blue]=0;?>ou<?php $cores=array(red=>0, green=>1, blue=>2);?> 26
  • Arrays (3) Usamos a função unset() para destruir todo o array. 27
  • Funções de array array_pop($array)  retira e retorna o último elemento do array array_push ($array,$var)  insere um ou mais elementos no fim de um array array_shift ($array)  retira e retorna o primeiro elemento de um array array_unshift ($a,$val)  insere um novo elemento no inicio de um array array_rand ($array)  retorna um ou mais elementos do array array_reverse ($array)  retorna um array com ordem inversa array_keys ($array)  retorna as chaves de um array array_values ($array)  retorna os valores de um array sizeof ()  retorna o número de elementos do array count ()  retorna a quantidade de elementos de um array 28
  • Pseudo-TypesSão tipos "falso" que ajudam da legibilidade: mixed: indica que o parâmetro pode aceitar múltiplos tipos mas não necessariamente todos os tipos. number: indica que o parâmetro pode ser tanto integer ou float callback 29
  • Função each Função each  Retorna o par chave/valor corrente de um array e avança o seu cursor Percorre os elemento de uma lista$chamada = array ( "aluno1" => "francisco", "alunos2" => "jose");while(list($chave,$valor)=each($chamada){ echo "<p>Chave=[$chave], Valor=[$valor]n";} 30
  • Listas Cria variáveis como se fossem arrays Assim como array(), não é exatamente uma função, e sim uma construção da própria linguagem. list() é usada para criar uma lista de variáveis em apenas uma operação. Exemplo:list($a,$b,$c)=array("a","b","c");É uma forma de atribuição de vários valores ao mesmo tempo a diferentes variáveis 31
  • Transformação de Tipos por coerçãoCoerção  é a conversão de um tipo em outro tipo diferente mediante operação realizada com tipos diferentes. Por exemplo:$a=1;$a = $a + "5";Nesse exemplo a variável $a é numérica (integer) na primeira atribuição e string na segunda atribuição 32
  • Transformação explicita de tipos Feita via typecast (como em linguagem C) Exemplo:$a = 6; # a é um integer (6)$a = (float) 6; # é um float (6.0) 33
  • Casts permitidos(int), (integer) Integer(real), (double), (float) Float(string) String(array) Array(objeto) objeto 34
  • ConstantesUma constante é um identificador (nome) para um único valor que não se altera durante a execução de um script) Pré-definidas Definidas pelo usuárioExemplo:define("MOL", 6.14e22);define("PI", 3.1415);echo MOL;echo PI; 35
  • Constantes - Exemplo<?php // Nomes de constantes válidos define("FOO", "alguma coisa"); define("FOO2", "alguma outra coisa"); define("FOO_BAR", "alguma coisa mais"); // Nomes de constantes inválidas define("2FOO", "alguma coisa"); // Isto é válido, mas deve ser evitado: // O PHP pode vir a fornecer uma constante mágica // que danificará seu script define("__FOO__", "alguma coisa");?> 36
  • Constantes "Mágicas"<?php print __FILE__ ; # nome do arquivo echo "n"; echo __LINE__; # nº da linha echo "n"; echo __FUNCTION__; # nome da função echo "n";?> 37
  • Operadores Aritméticos Atribuição Bit a bit Lógicos Comparação Expressão condicional Incremento e decremento 38
  • Operadores Aritméticos + Adição - Subtração * Multiplicação / Divisão % Resto da divisão (módulo) 39
  • Operadores de Atribuição = ($a=5); += ($a = $a + 5; $a+=5;) -= *= /= %= .= 40
  • Operadores de Atribuição (2) <<= >> &= |= ^= 41
  • Operadores Bit a Bit & (and) – operação E | (or) – operação OU ^ (xor) – operação OU-exclusivo ~ (not) – operação NÃO << - deslocamento de bits a esquerda  multiplicação por 2 >> - deslocamento de bits a direita  divisão por 2 42
  • Operadores Lógicos and (e) or (ou) xor (ou-exclusivo) ! (negação) && (e) || (ou) 43
  • Operadores de Comparação (ou Condicionais) == (igualdade) != (diferença) < (menor que) > (maior que) <= (menor ou igual a) >= (maior ou igual a) 44
  • Operador Ternário (ou Condicional)(expressão) ? (expressão2) : (expressão3);Exemplo:$a=5;$a > 5 ? $b="1" : $b="0";é equivalente a:if($a>5) $b="1";else $b="0"; 45
  • Operadores Unários -oper : troca o sinal do operando ++ -- ++$a : pré-incremento (incrementa $a em um e depois retorna $a) $a++ : pós-incremento --$a : pré-decremento $a-- : pós-decremento 46
  • Precedência de Operadores- ! ~ ++ --- * / %- + - .- << >>- > < >= <=- == != <>- &- ^- |- &&- ||- ?:- = += -= *= /= %= &= ~= <<= >>= ^=- AND- XOR- OR 47
  • Estruturas de Controle Blocos Comandos condicionais Comando de repetição 48
  • Blocos São sequência de comandos delimitados por abre e fecha chaves ({ e }) 49
  • Comando Condicional if (expressão) comando; if(expressão) { comando1; ... comandoN; } 50
  • Comando Condicional (2) If (expressão) comando1; else comando2; If(expressão): comando1; ... comandoN; else comando1; ... comandoN; endif 51
  • Comando Condicional (3)if(expressão1) { comando1;}elseif(expressão2) { comando2;}...else{ comandoN;} 52
  • Exemplo<?php $salario = 1000; $desconto = 0.10; // 10% $total = $salario - $salario*$desconto; if($total>900) { echo ""; }?> 53
  • switchswitch (expressão) { case valor1: comando1; break; case valor2: comando2; break;} 54
  • Exemplo - switch<?php $i = 1; switch($i) { case 0: print "i é igual a 0"; break; case 1: print "i é igual a 1"; break; case 2: print "i é igual a 2"; break; default: print "i não é igual a 0, 1 ou 2"; break;}?> 55
  • Comandos de repetição (laços) while do .. while for foreach 56
  • while while (expressão) { comando; } while (expressão) : comando1; ... comandoN; endwhile; 57
  • Exemplo – comando while<?php $a = 1; while ($a < 5) { print $a; $a++; }?> 58
  • do..while$a=0;do{ echo "a=$an"; $a++;}while ($a<=10); 59
  • Exemplo – do .. while<?php $acabou = false; do { print "loop ..."; $acabou=true; } while (!$acabou);?> 60
  • forfor (expr1; expr2; expr3 ) { comando1 .. comandoN} 61
  • foreachApresenta duas sintaxes:foreach ($nome_array as $elemento){ comandos}ouforeach ($nome_array as $chave => $valor){ comandos} 62
  • foreach (exemplo)<?php // define um array com cinco elementos $a = array(1,2,3,4,5); foreach ($a as $valor) { echo "valor=$valor<br>"; }?> 63
  • foreach (exemplo)<?php $a = array ( "cod1" => 10, "cod2" => 20, "cod3" => 30, "cod4" => 40); foreach ($a as $chave => $valor) { echo "<p>chave=$chave, valor=$valor"; }?> 64
  • Comandos break e continuebreak: pode ser usado em laços do, for e while.O break "quebra" a execução e continua executando o próximo comandobreak [n]; // onde n indica o número de estruturas que deverão ser finalizadas 65
  • Comandos break e continue continue: interrompe a execução e avalia novamente a condição de testecontinue [n]; // onde n indica o número de níveis que deverão ser iniciados 66
  • Exemplo - break<?php# break.phpfor($i=0; $i < 100; $i++) { if($i == 10) { break; } echo " $i ";}?> 67
  • Exemplo - continue<?php // exibe os números pares for($i=0; $i < 100; $i++) { if($i % 2) { continue; } echo " $i " . <br>; }?> 68
  • Funções Definição Argumentos Passagem de parâmetros (valor ou referência) Argumentos com valores pré-definidos 69
  • Funções - Sintaxefunction nome_da_função( [arg1, [arg2, ...,[argN]]]){ comando1; ... comandoN; [ return valor_de_retorno ];} 70
  • Funções definidas pelo usuárioUma função deve ser definida com a usando a sintaxe indicada abaixo:<?php function foo($arg_1, $arg_2, /* ..., */ $arg_n) { echo "Função Exemplo.n"; return $retval; }?> 71
  • Valores RetornoA declaração return é opcionalQualquer tipo poderá ser retornado incluindo listas e objetos. 72
  • Exemplo do uso do return<?php function quadrado($num) { return $num * $num; } echo quadrado(4); // saída 16.?> 73
  • Exemplo: Retornando um array com múltiploselementos<?php function numeros_pequenos() { return array (0, 1, 2); } list($zero,$um,$dois)=numeros_pequenos();?> 74
  • Passagem de parâmetros Existem dois tipos de passagem de parâmetros:  por valor (by value)  por referência (by reference) O padrão é a passagem por valor. 75
  • Exemplo de passagem de parâmetros<?php function incByValue($var, $valor) { $var += $valor; } function incByRef(&$var, $valor) { $var += $valor; } $a = 1; echo incByValue($a,2); // retorna a=1 echo "a=$an"; $a = 1; echo incByRef($a,2); // retorna a=3 echo "a=$an";?> 76
  • Definição de valores padrões na chamada de funções<?phpfunction incrementa($x, $valor=1){ $x += $valor; return $x;}$a = 5;echo "1. " . incrementa($a) . "<br>";echo "2. " . incrementa($a,-4) . "<br>";echo "3. " . incrementa($a,5) . "<br>";?> 77
  • Modificadores de variáveis Variáveis estáticas (static)  mantém o valor que lhes foi atribuído na última execução. Usa o operador static. Variáveis variáveis ($$) Variáveis de ambiente 78
  • Exemplo: uso de variável estática<?php function obtemProximo() { static $contador=0; return ++$contador; } echo obtemProximo(),"n"; // retorna 1 echo obtemProximo(),"n"; // retorna 2 echo obtemProximo(),"n"; // retorna 3?> 79
  • Variáveis de Ambiente<?php phpinfo();?> 80
  • Inclusão de arquivos include  caso o arquivo não seja encontrado, é retornado um warning e o processamento da página continua require  caso o arquivo não seja encontrado, é retornado um erro fatal include_once  se o arquivo já estiver sido incluso ele será ignorado require_onceObs: include e include_once retornam uma advertência (warning) no caso de erro. require e require_once retornam um erro fatal em caso de erro. 81
  • Include x Require O comando include é reavaliado a cada chamada A instrução require pode incluir apenas um arquivo (a função require não inclui arquivos dinamicamente) 82
  • Exemplobiblioteca.php<?php /* * função quadrado * retorna o quadrado de um número * */ function quadrado($num) { return $num * $num; }?> 83
  • Exemploteste_include.php<?php // carrega o arquivo com a função necessária include biblioteca.php; // imprime o quadrado de 2 echo quadrado(2);?> 84
  • Tipo de variável string gettype(mixed var); Possíveis valores de retorno:  Integer  Double  String  Array  Object  Unknown type 85
  • Formulários HTML<form method="[GET|POST]" action="" name ="">...</form> 86
  • Tratando informações recebidas deFormulários$_POST: array global que permite a leitura de variáveis passadas através de um formulário HTML usando método POST$_GET : array global que permite a leitura de variáveis passadas na URL através de um formulário HTML usando método GET 87
  • Método GET $nome = $_GET[nome] $email = $_GET[email] echo "$_GET[nome]"; echo "$_GET[email]"; 88
  • Método POST $_POST[nome] $_POST[email] echo "$_POST[nome]"; echo "$_POST[email]"; 89
  • Exemplo – Método POST form.html script.php<form method="POST" <?php action="script.php"> $nome=$_POST["nome"];Nome: Echo "<p>nome=$nome";<input name="nome" </php> type="text"></form> 90
  • Exemplo – Método GET form.html script.php <?php<form method="GET" $nome=$_GET["nome"]; action="script.php"> echo "<p>nome=$nome";Nome: </php><input name="nome" type="text"></form> 91
  • Algumas funções úteis string htmlspecialchars ( string $string [, int $quote_style [, string $charset]] )  Converte caracteres especiais para a realidade HTML string stripslashes ( string $str )  Retorna uma string com as barras invertidas retiradas. ( se torna e assim por diante.) Duas barras invertidas () se tornam uma (). urlencode(string $str);  Codifica uma URL urldecode(string $str);  Decodifica qualquer %## codificado na string. nl2br() — Insere quebras de linha HTML antes de todas newlines em uma string 92
  • Variáveis Superglobals$GLOBALS Contém uma referencia a todas as variáveis disponíveis no escopo global no script. As chaves desse array são os nomes das variáveis globais.$_SERVER Variáveis setadas pelo servidor web ou de outra forma relacionadas diretamente ao ambiente de execução do ambiente corrente.$_GET Variáveis providas pelo script via URL query string.$_POST Variáveis providas pelo script via HTTP POST.$_COOKIE Variáveis providas ao script via HTTP cookies. 93
  • Variáveis Superglobals (2)$_FILES Variáveis providas ao script através do upload de arquivos via POST usando HTTP.$_ENV Variáveis de ambientes providas ao script.$_REQUEST Variáveis providas ao script via mecanismos de entrada como GET, POST e COOKIE. Veja também import_request_variables().$_SESSION Variáveis que estão registradas a uma sessão de associada a um script. 94
  • Funções úteis na validação de formulários bool empty ( mixed $var ) – verifica se determinada variável esta vazia (nula) strlen() – retorna o número de caracteres de uma string strstr() – acha a primeira ocorrência de uma string. Se não encontrar retorna falso (FALSE) bool isset ( mixed $var [, mixed $var [, $...]] ) Informa se a variável foi iniciada (Retorna TRUE se var existir; FALSE senão) 95
  • Cookies e Sessions HTTP é um protocolo "sem estado" O que significa o protocolo HTTP ser um protocolo "sem estado" ?  Significa que ele não guarda informações entre uma transação e outra (elas são independentes). Portanto é necessário um mecanismo que permita que sejam criadas "relações entre as transações" 96
  • Cookies e Sessions Cookie e Session são mecanismos que permitem armazenar informações enquanto o usuário navega entre diferentes páginas de um site 97
  • Exemplos de uso de cookies e sessões Autenticação de usuários Carrinho de compras Exibição de anúncios ou imagens Personalização de páginas 98
  • Uso de Cookies É um arquivo texto armazenado no computador do usuário (cliente) para ser posteriormente recuperado pelo servidor Formado por um par nome/valor Tempo de validade: tempo no qual o cookie estará armazenado no micro do usuário O uso de cookie poderá ser habilitado / desabilitado pelo navegador (no cliente) 99
  • Uso de cookies bool setcookie (string nome [, string valor [, int validade [, string caminho [, string dominio [, int seguro]]]]]), onde:nome: nome do cookie (obrigatório)valor: é o conteúdo do cookie (se não for fornecido o cookie será removido)validade: tempo de validade do Cookiecaminho: caminho no servidor onde o cookie estará disponíveldomínio: domínio para o qual o cookie estará disponívelSeguro: 0 ou 1 (se 1 o cookie apenas será transmitido caso segue uma conexão segura (HTTPS)) 100
  • Exemplo setcookie("username","joao@net"); setcookie ("username"); // remove o cookie usernameObs: o envio de cookies deverá ser a primeira coisa a ser feita na transmissão de uma página (antes inclusive das tags <html> e <body>) 101
  • Recuperação de CookiesUso do array superglobal $_COOKIEExemplo:setcookie("username","joao@net");E em uma outra página:$_COOKIE["username"]; // lê o valor do cookie 102
  • Recuperação de CookiesIMPORTANTE: os cookies não poderão ser usados dentro da própria página que os criou. Ele poderá apenas ser usado a partir do envio da próxima solicitação vinda do navegador do usuário (do cliente) 103
  • Exemplo de uso: autenticação de usuários"Autenticação é uma maneira que você tem de se certificar de que somente os usuários que possuem autorização estão acessando uma área restrita do seu site" 104
  • Passos para AutenticaçãoPodemos dividir a autenticação de usuários com o uso de cookies em três passos:• Criação de uma página de login• Criação de uma rotina de validação para que seja usada nas páginas que fazem uso das áreas restritas• Criação de uma página de logout para os usuários autenticados a fim de realizar a exclusão do cookie. 105
  • Exemplo de login usando cookies login.html  página inicial de login login.php  processa o pedido de login; valida usuário e senha no banco de dados valida_cookies.inc  valida os cookies pagina_inicial.php  página validada logout.php  limpa os cookies armazenados no cliente; redireciona para página de login 106
  • Sessão (Session)É um período de tempo durante o qual uma pessoa navega pelas páginas de um sitePermitem o compartilhamento de informações entre diferentes páginasCada sessão possui um session id (SID) que é um identificador único 107
  • Propagação do SessionIDPoderá ser feito por: cookies propagação de variáveis na URL (endereço destino) 108
  • Criação de Sessão no PHP Manual  Explícita (session_start)  Implícita (ao registrar uma variável com a função session_register) Automática  Depende da diretiva session.auto_start estar habilitada no arquivo php.ini 109
  • Exemplo de Session<?php $contador= $_SESSION[contador];session_start(); echo "<p>Contador=$contador";if(!isset($_SESSION[contador])) { $_SESSION[contador]=1; $sid=session_id();}else { echo "<p>session_id= $sid"; $_SESSION[contador]++;} ?> 110
  • Cookies x Sessões Cookies Sessões  Tempo de duração Tempo de duração Dura enquanto o usuárioPode permanecer permanecer dentro do site armazenado por mais  Local de armazenamento tempo (mesmo após o Arquivos localizados no navegador ser eliminado) servidor (um arquivo por sessão) Local de armazenamentoPequenos arquivos armazenados na máquina do usuário 111
  • Cookies x Sessões Cookies Sessões Pode permanecer armazenado por Dura enquanto o Tempo de mais tempo (mesmo após o usuário permanecer duração navegador ser eliminado) dentro do site Arquivos localizados no Local de servidor (um arquivo Pequenos arquivos armazenados na armazena por sessão) máquina do usuário mento 112
  • Parâmetros de Configuração - Session sessionSession Support enabledRegistered save handlers files user sqliteRegistered serializer handlers php php_binary wddx 113
  • Parâmetros de Configuração - Session Directive Local Value Master Valuesession.auto_start Off Offsession.bug_compat_42 On Onsession.bug_compat_warn On Onsession.cache_expire 180 180session.cache_limiter nocache nocachesession.cookie_domain no value no valuesession.cookie_httponly Off Offsession.cookie_lifetime 0 0session.cookie_path / /session.cookie_secure Off Offsession.entropy_file no value no valuesession.entropy_length 0 0session.gc_divisor 100 100session.gc_maxlifetime 1440 1440session.gc_probability 1 1session.hash_bits_per_character 4 4session.hash_function 0 0 114
  • Parâmetros de Configuração - Sessionsession.name PHPSESSID PHPSESSIDsession.referer_check no value no valuesession.save_handler files filessession.save_path C:xampptmp C:xampptmpsession.serialize_handler php phpsession.use_cookies On Onsession.use_only_cookies Off Offsession.use_trans_sid 0 0 115
  • Comandos básicos de saída echo  é uma comando que imprime uma ou mais variáveis no console print  é uma função que imprime uma string no console var_dump  imprime o conteúdo de uma variável print_r  imprime o conteúdo de uma variável, mas num formato mais legível para o programador 116
  • Manipulação de Arquivos fopen feof fgets fwrite fclose file_put_contents file_get_contents 117
  • Manipulação de Arquivos file copy rename unlink file_exists is_file 118
  • Manipulação de Diretórios mkdir getcwd chdir rmdir opendir closedir readdir 119
  • Manipulação de Arquivos e Diretórios int fopen(string arquivo, string modo [, int usar_path ´, resource contexto]]) onde:  arquivo:  modo:  usar_path:  contexto: 120
  • Manipulação de strings – algumas funções strtoupper()  retorna a string usando letras maiúsculas strtolower ()  retorna a string usando letras minúsculas substr ()  retorna uma substring strpad ()  strrepeat ()  strlen ()  retorna o tamanho da string str_replace ()  substitui uma string por outra str_pos ()  retorna a posição de início de uma string em outra string 121
  • Classes e Objetos Classes Métodos 122
  • Classe - Exemploclass Complexo { private $real; private $imag; public function real() { return $this->real; } public function imag() { return $this->imag; }} 123
  • Criação de Objetos$z = new Complexo;$parte_real = $z->real();$parte_imag = $z->imag(); 124
  • Bibliografia DallOglio, P. PHP Programando com Orientação a Objetos. Novatec. 2007. NIEDERAUER, J. Web Interativa com Ajax e PHP. Novatec, 2007. NIEDERAUER, J. Desenvolvendo Web Sites com PHP. Novatec, 2007. Manual do PHP. http://br.php.net/manual 125
  • Backup Slides 126
  • PHP e MySQL 127
  • Conectando do BD MySQL<?php $conexao = mysql_connect( "localhost", "usuario", "password");?> 128
  • Selecionando a Base de Dados $nomebanco = mysql_select_db(teste, $conexao); 129
  • Exemplo de Consulta em SQL<?php $resultado = mysql_query( "select * from produto" ); while($linha=mysql_fetch_array($resultado) { foreach($linha as $valor) { echo "$valor<br />"; } } mysql_close($conexao);?> 130
  • Fechando uma conexão mysql_close($conexao) 131
  • mysql APImysql_affected_rows() – retorna o número de linhas afetadas por uma operaçãomysql_fetch_array() – armazena a linha atual em um array associativomysql_fetch_object() – retorna uma linha como um objetomysql_fetch_row() – armazena a linha atual em um arraymysql_result() – retorna uma coluna do resultadomysql_num_rows() – retorna o numero de linhas de uma consultamysql_num_fields() – retorna o numero de colunas de uma consultamysql_field_name() – retorna o nome de uma coluna em uma consulta 132
  • mysql API int mysql_connect(str host, str username, str password) int mysql_select_db(str database [, int link_identifier]) int mysql_query(str query [, int link_identifier]) array mysql_fetch_array(int result [, int result_type]) 133
  • mysql API array mysql_fetch_row(int result) int mysql_insert_id([int link_identifier]) --> retorna o número de linhas após execução de um comando select int mysql_affected_rows([int link_identifier]) --> retorna o nº de linhas que foram afetados em uma tabela por comandos update, insert e delete 134
  • mysql API mysql_error() 135
  • Exemplo Aplicação de Cadastro de Alunos  http://127.0.0.1/aluno/tela1.html Apresentação de Notícias  http://127.0.0.1/noticias2 136
  • Exemplos de Funções 137
  • Funções date e time string date ( string $format [, int $timestamp ] )Formata a data e a hora local int time ( void )Retorna o timestamp Unix atual 138
  • Exemplos<?php echo date("Y-m-d",0),"n"; echo date("Y-m-d",time()),"n"; echo date("d/m/Y",time()),"n"; echo date("d/m/y",time()),"n"; echo date("d/m/y H:i:s",time()),"n";?>1969-12-312008-11-2727/11/200827/11/0827/11/08 09:20:11 139
  • Função mktime int mktime ([ int $hora[, int $minuto[, int $second[, int $mes[, int $dia[, int $ano[, int $is_dst ]]]]]]] ) Obtém um timestamp Unix para uma data 140
  • Exemplo<?phpecho date("d/m/Y H:i:s", mktime(2, 12, 4, 10, 3, 01));?> 141
  • Função strtotime $data_formatada = date("d/m/Y",strtotime($data)); echo "<td>$data_formatada</td>"; 142
  • Datas - MySQL date_format(date, format)Exemplo:SELECT *, date_format(data,%d/%m/%Y) dtFROM teste.gasto gwhere date_format(data,%d/%m/%Y)=26/11/2008 143
  • ExemploSeleciona os gastos entre duas datas:SELECT *, date_format(data,%d/%m/%Y) dtFROM teste.gasto gwhere date_format(data,%Y%m%d) between 20081124 and 20081125 144
  • Questões Qual é a diferença entre os comandos echo e print ?  echo "1","2"; // ok  print "1","2"; // erro: o comando print não suporta , separando os operadores Qual é a diferença entre os comandos require e include ? 145
  • Cabeçalho de um script PHP<?php---------?> 146
  • Definição de variáveis Em PHP não é necessário fazer a declaração de variáveis 147
  • Delimitadores de string  aspas simpless=um $nomen; ""  aspas duplass="um $nomen"; `` aspas invertidas (apóstrofo) heredoc$str = <<<EOD Aqui podemos definir uma stringEOD; 148
  • Definição de Constantes bool define (string nome, misto valor [, bool case_insensitive]) Exemplo:define (OK,true);define(NOK,false);echo OK; 149
  • Tipos de Variáveis Numéricas Alfanuméricas (Strings) Arrays Objetos 150
  • Classes Classes: são agrupamentos de variáveis e funções Objeto: é uma instância de uma classe 151
  • Diferenças entre echo e print TRUE 1 – qualquer valor não vazio é tratado como verdadeiro FALSE 0 echo "1","2"; // ok print "1","2"; // erro: o comando print não suporta , separando os operadores 152
  • PHP 5.3 Migração http://docs.php.net/migration53 Manual do PHP http://docs.php.net/manual/pt_BR/index.php Referência de Funções http://docs.php.net/manual/pt_BR/funcref. php 153
  • Links Revista PHP Magazinehttp://www.phpmagazine.org.br 154
  • Funções MySQL mysql_affected_rows — Obtém o número de linhas atingidas na operação anterior do MySQL mysql_change_user — Muda o usuário da conexão ativa mysql_client_encoding — Retorna o nome do conjunto de caracteres mysql_close — Fecha a conexão MySQL mysql_connect — Abre uma conexão com um servidor MySQL mysql_create_db — Cria um banco de dados MySQL mysql_data_seek — Move o ponteiro interno do resultado mysql_db_name — Obtém dados do resultado(nome de banco de dados) mysql_db_query — Envia uma consulta MySQL mysql_drop_db — Exclui um banco de dados MySQL 155
  • Funções MySQL mysql_errno — Retorna o valor numérico da mensagem de erro da operação MySQL anterior mysql_error — Retorna o texto da mensagem de erro da operação MySQL anterior mysql_escape_string — Escapa uma string para usar em uma consulta MySQL mysql_fetch_array — Obtém uma linha como uma matriz associativa, uma matriz numérica, ou ambas mysql_fetch_assoc — Obtém um linha do resultado como uma matriz associativa mysql_fetch_field — Obtém informações sobre uma coluna de um resultado e retorna como um objeto mysql_fetch_lengths — Obtém o tamanho de cada saída no resultado mysql_fetch_object — Obtém o resultado de uma linha como um objeto mysql_fetch_row — Obtém uma linha como uma array numérica mysql_field_flags — Obtém as flags associadas ao campo especificado em um resultado 156
  • Funções MySQL mysql_field_len — Retorna o tamanho do campo especificado mysql_field_name — Obtém o nome do campo especificado em um resultado mysql_field_seek — Define o ponteiro do resultado para o índice de campo especificado mysql_field_table — Obtém o nome da tabela na qual o campo especificado esta mysql_field_type — Obtém o tipo do campo especificado em um resultado mysql_free_result — Libera um resultado da memória mysql_get_client_info — Obtém informações do cliente MySQL mysql_get_host_info — Obtém informações do servidor MySQL mysql_get_proto_info — Obtém informações do protocolo MySQL mysql_get_server_info — Obtém informações do servidor MySQL 157
  • Funções MySQL mysql_info — Obtém informação sobre a consulta mais recente mysql_insert_id — Obtém o ID gerado pela operação INSERT anterior mysql_list_dbs — Lista os bancos de dados disponíveis em um servidor MySQL mysql_list_fields — Lista os campos de uma tabela MySQL mysql_list_processes — Lista os processos MySQL mysql_list_tables — Lista as tabelas em um banco de dados MySQL mysql_num_fields — Obtém o numero de campos em um resultado mysql_num_rows — Obtém o número de linhas em um resultado mysql_pconnect — Abre uma conexão persistente com um servidor MySQL mysql_ping — pinga uma conexão com o servidor ou reconecta se não houver conexão 158
  • Funções MySQL mysql_query — Envia uma consulta MySQL mysql_real_escape_string — Escapa os caracteres especiais numa string para usar em um comando SQL, levando em conta o conjunto atual de caracteres. mysql_result — Retorna dados do resultado mysql_select_db — Seleciona um banco de dados MySQL mysql_set_charset — Sets the client character set mysql_stat — Retorna o status atual do sistema mysql_tablename — Retorna o nome da tabela do campo mysql_thread_id — Returna o ID da thread atual mysql_unbuffered_query — Envia uma query para o MySQL, sem retornar e colocar em buffer as linhas do resultado 159
  • MySQLi http://docs.php.net/manual/pt_BR/mysqli.sum 160