(Parte 1 de 26)

www.imasters.com.br

Curso: PHP

Autor: Bruno Rodrigues Siqueira (bruno@netfly.com.br)

Índice

Índice 2

1. Introdução 10

O que é PHP? 10

História do PHP 11

O que pode ser feito com PHP? 12

Tabela comparativa 12

2. Sintaxe Básica 13

Delimitando o código PHP 13

Separador de instruções 13

Nomes de variáveis 14

Comentários 14

3. Tipos 16

Tipos Suportados 16

Inteiros (integer ou long) 16

Números em Ponto Flutuante (double ou float) 16

Strings 17

Arrays 18

Listas 18

Objetos 19

Booleanos 19

Transformação de tipos 19

Coerções 20

Transformação explícita de tipos 20

Com a função settype 21

4. Constantes 22

Constantes pré-definidas 22

Definindo constantes 22

5. Operadores 23

Aritméticos 23

de strings 23

de atribuição 23

bit a bit 24

Lógicos 24

Comparação 24

Expressão condicional 25

de incremento e decremento 25

Ordem de precedência dos operadores 25

6. Estruturas de Controle 27

Blocos 27

Comandos de seleção 27

if 27

switch 30

comandos de repetição 31

while 31

do... while 32

for 33

Quebra de fluxo 34

Break 34

Continue 34

7. Funções 36

Definindo funções 36

Valor de retorno 36

Argumentos 36

Passagem de parâmetros por referência 37

Argumentos com valores pré-definidos (default) 38

Escopo 39

8. Variáveis 41

O modificador static 41

Variáveis Variáveis 42

Variáveis enviadas pelo navegador 42

URLencode 42

Variáveis de ambiente 43

Verificando o tipo de uma variável 43

Função que retorna o tipo da variável 43

Funções que testam o tipo da variável 43

Destruindo uma variável 44

Verificando se uma variável possui um valor 44

Arrays Multidimensionais 45

9. Classes e Objetos 46

Classe 46

Objeto 46

A variável $this 46

SubClasses 47

Construtores 47

10. PHP avançado 49

Interagindo com o browser 49

Utilizando formulários HTML 49

Cookies 51

Sessão 51

Require 52

Include 52

Formulários Avançados 52

Arquivos Remotos 53

Lendo 53

Escrevendo 53

Tratamento de erros 54

11.SQL 55

O que é? 55

SELECT 55

Subseleções 56

INSERT 56

UPDATE 56

DELETE 57

O que há em comum entre: DELETE x UPDATE 57

CREATE 57

DROP 58

ALTER 58

12. Bancos de dados compatíveis com o PHP: 58

13. Biblioteca de Funções 59

Bibliotecas requeridas 59

Array 59

Array 59

array_keys [PHP4] 59

Array_merge [PHP4] 60

Array_pop[PHP4] 60

Array_push[PHP4] 60

Array_shift[PHP4] 60

Array_slice[PHP4] 60

Array_splice[PHP4] 60

Array_unshift[PHP4] 61

Array_values[PHP4] 61

Array_walk 61

Arsort 61

Asort 61

Compact[PHP4] 61

Count 62

Current 62

Each 62

End 62

Extract 62

In_array[PHP4] 63

Key 63

Ksort 63

List 63

Next 63

Pos 63

Prev 63

Range 63

Reset 64

Rsort 64

Shuffle 64

Sizeof 64

Sort 64

Uasort 64

Uksort 64

Usort 65

Matemática para números inteiros 65

Bcpow 65

Bcscale 65

Datas 65

Checkdate 65

Date 65

Getdate 66

Gettimeofday 66

Gmdate 67

Gmmktime 67

Gmstrftime 67

Microtime 67

Mktime 67

Strftime 67

Time 68

Diretório 68

Chdir 68

Classe dir 69

Closedir 69

Opendir 69

Readdir 69

Rewinddir 69

Execução de Programas 69

Escapeshellcmd 69

Exec 69

Passthru 70

System 70

Sistema de arquivos do servidor 70

Basename 70

Chgrp 70

Chmod 70

Chown 71

Clearstatcache 71

Copy 71

Delete 71

Dirname 71

Diskfreespace 71

Fclose 71

Feof 71

Fgetc 72

Fgetcsv 72

Fgets 72

Fgetss 72

File 72

File_exists 72

Fileatime 72

Filectime 73

Filegroup 73

Fileinode 73

Filemtime 73

Fileowner 73

Fileperms 73

Filesize 73

Filetype 74

Flock 74

Fopen 74

Fpassthru 75

Fputs 75

Fread 75

Fseek 75

Ftell 75

Fwrite 75

Is_dir 76

Is_executable 76

Is_file 76

Is_link 76

Is_readable 76

Is writeable 76

Link 76

Linkinfo 77

Mkdir 77

Pclose 77

Popen 77

Readfile 77

Readlink 77

Rename 77

Rewind 77

Rmdir 78

Set_file_buffer 78

Stat 78

Symlink 78

Tempnam 78

Touch 78

Umask 79

Unlink 79

Opções e informações do PHP 79

Error_log 79

Error_reporting 79

Extension_loaded 80

Get_cfg_var 80

Get_current_user 80

Get_magic_quotes_gpc 80

Get_magic_quotes_runtime 80

Getenv 80

Getlastmod 80

Getmyinode 81

Getmypid 81

Getmyuid 81

Getrusage 81

Phpinfo 81

Phpversion 81

Putenv 81

Set_magic_quotes_runtime 81

Set_time_limit 81

Matemática 82

Abs 82

Acos 82

Asin 82

Atan 82

Atan2 82

Base_convert 82

Bindec 82

Ceil 82

Cos 83

Decbin 83

Dechex 83

Decoct 83

Exp 83

Floor 83

Getrandmax 83

Hexdec 83

Log 83

Log10 83

Max 84

Min 84

Mt_rand 84

Mt_srand 84

Mt_getrandmax 84

Number_format 84

Octdec 84

Pi 84

Pow 84

Rand 85

Round 85

Sin 85

Sqrt 85

Srand 85

Tan 85

Criptografia 85

Mcrypt_cbc 85

Mcrypt_cfb 85

Mcrypt_create_iv 86

Mcrypt_ecb 86

Mcrypt_get_cipher_name 86

Mcrypt_get_block_size 86

Mcrypt_get_key_size 86

Mcrypt_ofb 86

Funções diversas 86

Connection_aborted 86

Connection_status 86

Connection_timeout 86

Dl 87

Eval 87

Die 87

Exit 87

Function_exists 87

Ignore_user_abort 87

Iptcparse 87

Leak 87

Mail 88

Pack 88

Register_shutdown_function 88

Serialize 88

Sleep 88

Unpack 88

Unserialize 89

Uniquid 89

Usleep 89

Rede 89

Checkdnsrr 89

Closelog 89

Debugger_on 89

Debugger_off 89

Fsockopen 89

Gethostbyaddr 89

Gethostbyname 90

Openlog 90

Pfsockopen 90

Set_socket_blocking 90

Syslog 90

Expressões regulares 90

Ereg 90

Ereg_replace 90

Eregi 91

Eregi_replace 91

Split 91

Sql_regcase 91

Tratamento de sessões 91

Session_decode[PHP4] 91

Session_destroy[PHP4] 91

Session_encode[PHP4] 91

Session_start[PHP4] 91

Session_id[PHP4] 92

Session_is_registered[PHP4] 92

Session_module_name[PHP4] 92

Session_name[PHP4] 92

Session_register[PHP4] 92

Session_save_path[PHP4] 92

Session_unregister[PHP4] 92

Strings 92

Addslashes 92

Bin2hex 93

Chop 93

Chr 93

Chunk_split 93

Convert_cyr_string 93

Crypt 93

Echo 93

Explode 93

Flush 94

Get_meta_tags 94

Htmlentities 94

Htmlspecialchars 94

Implode 94

Join 94

Ltrim 94

Md5 94

Nl2br 95

Ord 95

Parse_str 95

Print 95

Printf 95

Quoted_printable_decode 95

Quotemeta 95

Rawurldeconde 95

Rawurlenconde 96

Setlocale 96

Similar_text 96

Soundex 96

Sprintf 96

Strchr 96

Strcmp 96

Strcspn 96

Strip_tags 97

Stripslashes 97

Strlen 97

Strpos 97

Strrpos 97

Strrchr 97

Strrev 97

Strspn 97

Strstr 97

Strtok 98

Strtolower 98

Strtoupper 98

Str_replace 98

Strtr 98

Substr 98

Trim 98

Ucfirst 99

Ucwords 99

Funções para variáveis 99

Doubleval 99

Empty 99

Gettype 99

Intval 99

Is_array 99

Is_double 99

Is_float 99

Is_int 100

Is_integer 100

Is_long 100

Is_object 100

Is_real 100

Is_string 100

Isset 100

Settype 100

Strval 101

Unset 101

14. Referências na Internet 102

1. Introdução

O que é PHP?

PHP significa: Hypertext Preprocessor. Realmente, o produto foi originalmente chamado de “Personal Home Page Tools”; mas como se expandiu em escopo, um nome novo e mais apropriado foi escolhido por votação da comunidade. Você pode utilizar qualquer extensão que desejar para designar um arquivo PHP, mas os recomendados foram .php , .phtml. O PHP está atualmente na versão 4, chamado de PHP4 ou, simplesmente de PHP.

PHP é uma linguagem de criação de scripts embutida em HTML no servidor. Os produtos patenteados nesse nicho do mercado são as Active Server Pages da Microsoft, o Coldfusion da Allaire e as Java Server Pages da Sun. PHP é às vezes chamado de “o ASP de código-fonte aberto” porque sua funcionabilidade é tão semelhante ao produto/conceito, ou o que quer que seja, da Microsoft.

Exploraremos a criação de script no servidor, mais profundamente, nos próximos capítulos, mas, no momento, você pode pensar no PHP como uma coleção de supertags de HTML que permitem adicionar funções do servidor às suas páginas da Web. Por exemplo, você pode utilizar PHP para montar instantaneamente uma complexa página da Web ou desencadear um programa que automaticamente execute o débito no cartão de crédito quando um cliente realizar uma compra.

Falando estritamente, o PHP tem pouca relação com layout, eventos ou qualquer coisa relacionada à aparência de uma página da Web. De fato, a maior parte do que o PHP realiza é invisível para o usuário final. Alguém visualizando uma página de PHP não será capaz de dizer que não foi escrita em HTML, porque o resultado final do PHP é HTML.

O PHP é um módulo oficial do servidor http Apache, o líder do mercado de servidores Web livres que constitui aproximadamente 55 por cento da World Wide Web. Isso significa que o mecanismo de script do PHP pode ser construído no próprio servidor Web, tornando a manipulação de dados mais rápida. Assim como o servidor Apache, o PHP é compatível com várias plataformas, o que significa que ele executa em seu formato original em várias versões do UNIX e do Windows. Todos os projetos sob a égide da Apache Software Foundation – incluindo o PHP – são software de código-fonte aberto.

As várias versões do PHP foram aclamadas e premiadas nos últimos anos. O PHP3 foi o finalista em 1999 no LinuxWorld Editor´s Choice Awards (na categoria de biblioteca/ferramentas de programação) e ganhou o segundo lugar, perdendo só para o ColdFusion, em 1998 no Cnet Builder.com Product Awards (na categoria de melhor ferramenta de script de servidor – eles deram bastante importância ao IDE), ao passo que a combinação PHP3/MySQL ganhou prêmio de banco de dados do ano no Web98. Nada mau para um software sem relações públicas, sem publicidade e sem uma significativa exposição na mídia.

História do PHP

Rasmus Lerdorf – engenheiro de software, membro da equipe Apache e o homem misterioso do ano – é o criador e a força motriz original por trás do PHP. A primeira parte do PHP foi desenvolvida para utilização pessoal no final de 1994. Tratava-se de um wrapper de PerlCGI que o auxiliava a monitorar as pessoas que acessavam o seu site pessoal. No ano seguinte, ele montou um pacote chamado de Personal Home Page Tools (também conhecido como PHP Construction Kit) em resposta à demanda de usuários que por acaso ou por relatos falados depararam-se com o seu trabalho. A versão 2 foi logo lançada sob o título de PHP/FI e incluía o Form Interpreter, uma ferramenta para analisar sintaticamente consultas de SQL.

Em meados de 1997, o PHP estava sendo utilizado mundialmente em aproximadamente 50.000 sites. Obviamente estava se tornando muito grande para uma única pessoa administrar, mesmo para alguém concentrado e cheio de energia como Rasmus. Agora uma pequena equipe central de desenvolvimento mantinha o projeto sobre o modelo de “junta benevolente” do código-fonte aberto, com contribuições de desenvolvedores e usuários em todo o mundo. Zeev Suraski e Andi Gutmans, dois programadores israelenses que desenvolveram os analisadores de sintaxe PHP3 e PHP4, também generalizaram e estenderam seus trabalhos sob a rubrica de Zend.com (Zeev, Andi, Zend, entendeu?).

O quarto trimestre de 1998 iniciou um período de crescimento explosivo para o PHP, quando todas as tecnologias de código-fonte aberto ganharam uma publicidade intensa. Em outubro de 1998, de acordo com a melhor suposição, mais de 100.000 domínios únicos utilizavam PHP de alguma maneira. Um ano depois, o PHP quebrou a marca de um milhão de domínios. Enquanto escrevo esta apostila, o número explodiu para cerca de dois milhões de domínios.

O que pode ser feito com PHP?

Basicamente, qualquer coisa que pode ser feita por algum programa CGI pode ser feita também com PHP, como coletar dados de um formulário, gerar páginas dinamicamente ou enviar e receber cookies.

PHP também tem como uma das características mais importantes o suporte a um grande número de bancos de dados, como dBase, Interbase, mSQL, mySQL, Oracle, Sybase, PostgreSQL e vários outros. Construir uma página baseada em um banco de dados torna-se uma tarefa extremamente simples com PHP.

Além disso, PHP tem suporte a outros serviços através de protocolos como IMAP, SNMP, NNTP, POP3 e, logicamente, HTTP. Ainda é possível abrir sockets e interagir com outros protocolos.

Tabela comparativa

Custos Comparativos

Item

ASP

Cold Fusion

JSP

PHP

Desenvolvimento

US$ 0 – 480

US$ 395

US$ 0

US$ 0

Servidor

US$ 620

US$ 1.295

US$ 0 – 595

US$ 0

RDBMS

US$ 1.220 - 4220

US$ 0 - ~10.000

US$ 0 - ~10.000

US$ 0

Suporte de incidente

US$0 - 245

US$ 0 - 75

US$ 0 - 75

US$ 0

2. Sintaxe Básica

Delimitando o código PHP

O código PHP fica embutido no próprio HTML. O interpretador identifica quando um código é PHP pelas seguintes tags:

<?php

comandos

?>

<script language=”php”>

comandos

</script>

<?

comandos

?>

<%

comandos

%>

O tipo de tags mais utilizado é o terceiro, que consiste em uma “abreviação” do primeiro. Para utilizá-lo, é necessário habilitar a opção short-tags na configuração do PHP. O último tipo serve para facilitar o uso por programadores acostumados à sintaxe de ASP. Para utilizá-lo também é necessário habilitá-lo no arquivo de configuração do PHP (php.ini)

Separador de instruções

Para cada fim de linha de código tem que haver um ponto e vírgula, indicando ao sistema fim de instrução.

Exemplo.

<?

echo 'com ponto e vírgula' ;

?>

Linhas de comando, de controle, não precisam de ponto e vírgula.

Exemplo.:

<?

if ($x == $x){ //aqui não precisa de ponto e vírgula

echo 'com ponto e vírgula' ; //aqui precisa de ponto e vírgula

}

?>

Nomes de variáveis

Toda variável em PHP tem seu nome composto pelo caracter $ e uma string, que deve iniciar por uma letra ou o caracter “_”. PHP é case sensitive, ou seja, as variáveis $php e $PHP são diferentes. Por isso é preciso ter muito cuidado ao definir os nomes das variáveis. É bom evitar os nomes em maiúsculas, pois como veremos mais adiante, o PHP já possui alguma variáveis pré-definidas cujos nomes são formados por letras maiúsculas.

Comentários

Há dois tipos de comentários em código PHP:

Comentários de uma linha:

Marca como comentário até o final da linha ou até o final do bloco de código PHP - o que vier antes. Pode ser delimitado pelo caracter “#” ou por duas barras ( // ).

Exemplo:

<? echo “teste”; #isto é um teste

echo “teste”; //este teste é similar ao anterior

?>

Comentários de mais de uma linha:

Tem como delimitadores os caracteres “/*” para o início do bloco e “*/” para o final do comentário. Se o delimitador de final de código PHP ( ?> ) estiver dentro de um comentário, não será reconhecido pelo interpretador.

Exemplos:

<?

echo “teste”; /* Isto é um comentário com mais

de uma linha que funciona corretamente

(Parte 1 de 26)

Comentários