-
UNIVERSIDADE FEDERAL DE SERGIPE
CCET - CENTRO DE CINCIAS EXATAS E TECNOLOGIA
DCCE - DEPARTAMENTO DE CINCIA DA COMPUTAO E ESTATSTICA
Projeto Supervisionado
Tutorial da linguagem PHPpor Maurcio Vivas de Souza Barreto
[email protected]
[email protected]
Professor Orientador:
Giovanny Lucero
-
UNIVERSIDADE FEDERAL DE SERGIPECENTRO DE CINCIAS EXATAS E
TECNOLOGIA
DEPARTAMENTO DE ESTATSTICA E INFORMTICA
Projeto de Final de CursoSubmetido a uma banca examinadora
composta por:
________________________________________
Professor Giovanny Lucero
________________________________________
Professora Ana Rosimere
________________________________________
Professor Leonardo Nogueira Matos
2
-
Agradecimentos
A Giovanny, por ter acreditado no projeto e aceitado o desafio
de realiz-lo em to
pouco tempo;
A Ana Rosimere, pela ajuda que sempre deu durante todo o
curso;
A minha me, SEMPRE!
Aos professores do DCCE, pelo conhecimento que me
transmitiram;
A Mnica e Calliandra, tambm pelo incentivo, principalmente
enquanto ainda
estavam no curso;
A Marina, por existir;
A meus amigos, porque o so;
A Shi eu no vou agradecer, s pra ser do contra!
3
-
ndice
NDICE..............................................................................................................................5
1.
INTRODUO.............................................................................................................7
O QUE
PHP?.........................................................................................7O
QUE PODE SER FEITO COM
PHP?.........................................................7COMO
SURGIU A LINGUAGEM
PHP?........................................................7
2. SINTAXE
BSICA.......................................................................................................8
DELIMITANDO O CDIGO
PHP.................................................................8SEPARADOR
DE
INSTRUES...................................................................9NOMES
DE
VARIVEIS..............................................................................9COMENTRIOS.........................................................................................9
Comentrios de uma
linha:................................................................9Comentrios
de mais de uma
linha:...................................................9
3. CRIANDO OS PRIMEIROS
SCRIPTS...................................................................11
PRIMEIRO
EXEMPLO..............................................................................11UTILIZANDO
FORMULRIOS
HTML......................................................13INTERAGINDO
COM O
BROWSER............................................................14ACESSANDO
BANCOS DE
DADOS..........................................................16
Conexo com o
servidor...................................................................16Seleo
do banco de
dados...............................................................16Execuo
de queries
SQL.................................................................17Tratamento
de resultados de query
SELECT....................................18
4.
TIPOS..........................................................................................................................21
TIPOS
SUPORTADOS...............................................................................21Inteiros
(integer ou
long)..................................................................21Nmeros
em Ponto Flutuante (double ou
float)...............................22Strings...............................................................................................22Arrays...............................................................................................24
Listas..............................................................................................................................25Objetos..............................................................................................26Booleanos.........................................................................................26
TRANSFORMAO DE
TIPOS..................................................................26Coeres...........................................................................................26Transformao
explcita de
tipos.....................................................28Com a
funo
settype........................................................................28
5.
CONSTANTES............................................................................................................30
CONSTANTES
PR-DEFINIDAS................................................................30DEFININDO
CONSTANTES.......................................................................30
6.
OPERADORES...........................................................................................................31
ARITMTICOS.........................................................................................31DE
STRINGS............................................................................................31DE
ATRIBUIO......................................................................................31BIT
A
BIT................................................................................................32LGICOS................................................................................................32
4
-
COMPARAO........................................................................................32EXPRESSO
CONDICIONAL.....................................................................33DE
INCREMENTO E
DECREMENTO...........................................................33ORDEM
DE PRECEDNCIA DOS
OPERADORES.........................................34
7. ESTRUTURAS DE
CONTROLE.............................................................................35
BLOCOS.................................................................................................35COMANDOS
DE
SELEO.......................................................................35
if........................................................................................................36switch................................................................................................39
COMANDOS DE
REPETIO....................................................................41while.................................................................................................41do...
while.........................................................................................42for.....................................................................................................43
QUEBRA DE
FLUXO................................................................................45Break.................................................................................................45Continue...........................................................................................45
8.
FUNES...................................................................................................................47
DEFININDO
FUNES.............................................................................47VALOR
DE
RETORNO..............................................................................47ARGUMENTOS........................................................................................47
Passagem de parmetros por
referncia..........................................48Argumentos com
valores pr-definidos (default)..............................49
CONTEXTO.............................................................................................50ESCOPO..................................................................................................50
9.
VARIVEIS.................................................................................................................53
O MODIFICADOR
STATIC.........................................................................53VARIVEIS
VARIVEIS..........................................................................54VARIVEIS
ENVIADAS PELO
NAVEGADOR..............................................54
URLencode.......................................................................................54VARIVEIS
DE
AMBIENTE......................................................................55VERIFICANDO
O TIPO DE UMA
VARIVEL..............................................55
Funo que retorna o tipo da
varivel.............................................55Funes que
testam o tipo da
varivel.............................................56
DESTRUINDO UMA
VARIVEL................................................................56VERIFICANDO
SE UMA VARIVEL POSSUI UM VALOR............................57
A funo
isset....................................................................................57A
funo
empty.................................................................................57
10. CLASSES E
OBJETOS............................................................................................58
CLASSE..................................................................................................58OBJETO..................................................................................................58A
VARIVEL
$THIS.................................................................................58SUBCLASSES..........................................................................................59CONSTRUTORES.....................................................................................60
12.
CONCLUSES.........................................................................................................62
13. BIBLIOGRAFIA E
REFERNCIAS.....................................................................63
APNDICE 01 - FUNES PARA TRATAMENTO DE
STRINGS........................64
5
-
FUNES RELACIONADAS A
HTML......................................................64htmlspecialchars...............................................................................64htmlentities.......................................................................................64nl2br.................................................................................................64get_meta_tags...................................................................................65strip_tags..........................................................................................66urlencode..........................................................................................66urldecode..........................................................................................67
FUNES RELACIONADAS A
ARRAYS.....................................................67Implode
e
join...................................................................................67split...................................................................................................67explode..............................................................................................68
COMPARAES ENTRE
STRINGS.............................................................68similar_text.......................................................................................68strcasecmp........................................................................................69strcmp...............................................................................................69strstr..................................................................................................69stristr.................................................................................................70strpos................................................................................................70strrpos...............................................................................................70
FUNES PARA EDIO DE
STRINGS......................................................70chop..................................................................................................70ltrim..................................................................................................71trim...................................................................................................71strrev.................................................................................................71strtolower..........................................................................................72strtoupper.........................................................................................72ucfirst................................................................................................73ucwords.............................................................................................73str_replace........................................................................................74
FUNES
DIVERSAS...............................................................................74chr.....................................................................................................74ord
....................................................................................................74echo
..................................................................................................74print
.................................................................................................75strlen
................................................................................................75
APNDICE 02 - FUNES PARA TRATAMENTO DE
ARRAYS.........................76
FUNES
GENRICAS............................................................................76Array.................................................................................................76range.................................................................................................77shuffle...............................................................................................77sizeof.................................................................................................77
FUNES DE
NAVEGAO..................................................................77reset...................................................................................................78end....................................................................................................78next...................................................................................................78prev...................................................................................................78pos.....................................................................................................78key.....................................................................................................79each...................................................................................................79
6
-
FUNES DE
ORDENAO.....................................................................79sort....................................................................................................80rsort..................................................................................................80asort..................................................................................................80arsort................................................................................................80ksort..................................................................................................80usort..................................................................................................81uasort................................................................................................81uksort................................................................................................81
7
-
Resumo
O presente trabalho tem por objetivo relatar as atividades
desenvolvidas
durante a realizao do projeto supervisionado do aluno Maurcio
Vivas de Souza
Barreto, orientado pelo professor Giovanny Lucero.
O projeto consistiu numa pesquisa sobre a linguagem PHP uma
linguagem de script voltada para a construo de home-pages
dinmicas, que
executada no servidor http. Para a complementao do estudo sobre
a linguagem foi
desenvolvida uma aplicao, como exemplo da utilizao da linguagem
PHP.
A aplicao desenvolvida trata-se do preenchimento do formulrio
para a
GED Gratificao de Estmulo Docncia. Atravs do sistema
desenvolvido, qualquer
usurio cadastrado poder preencher os formulrios do GED atravs de
um navegador
http, e ao final do perodo poder imprimir o formulrio
preenchido.
8
-
1. Introduo
O que PHP?
PHP uma linguagem que permite criar sites WEB dinmicos,
possibilitando uma interao com o usurio atravs de formulrios,
parmetros da URL
e links. A diferena de PHP com relao a linguagens semelhantes a
Javascript que o
cdigo PHP executado no servidor, sendo enviado para o cliente
apenas html puro.
Desta maneira possvel interagir com bancos de dados e aplicaes
existentes no
servidor, com a vantagem de no expor o cdigo fonte para o
cliente. Isso pode ser til
quando o programa est lidando com senhas ou qualquer tipo de
informao
confidencial.
O que diferencia PHP de um script CGI escrito em C ou Perl que
o
cdigo PHP fica embutido no prprio HTML, enquanto no outro caso
necessrio que o
script CGI gere todo o cdigo HTML, ou leia de um outro
arquivo.
O que pode ser feito com PHP?
Basicamente, qualquer coisa que pode ser feita por algum
programa CGI
pode ser feita tambm com PHP, como coletar dados de um
formulrio, gerar pginas
dinamicamente ou enviar e receber cookies.
PHP tambm tem como uma das caractersticas mais importantes o
suporte a um grande nmero de bancos de dados, como dBase,
Interbase, mSQL,
mySQL, Oracle, Sybase, PostgreSQL e vrios outros. Construir uma
pgina baseada em
um banco de dados torna-se uma tarefa extremamente simples com
PHP.
Alm disso, PHP tem suporte a outros servios atravs de
protocolos
como IMAP, SNMP, NNTP, POP3 e, logicamente, HTTP. Ainda possvel
abrir sockets
e interagir com outros protocolos.
-
Como surgiu a linguagem PHP?
A linguagem PHP foi concebida durante o outono de 1994 por
Rasmus
Lerdorf. As primeiras verses no foram disponibilizadas, tendo
sido utilizadas em sua
home-page apenas para que ele pudesse ter informaes sobre as
visitas que estavam
sendo feitas. A primeira verso utilizada por outras pessoas foi
disponibilizada em 1995,
e ficou conhecida como Personal Home Page Tools (ferramentas
para pgina
pessoal). Era composta por um sistema bastante simples que
interpretava algumas
macros e alguns utilitrios que rodavam por trs das home-pages:
um livro de visitas,
um contador e algumas outras coisas.
Em meados de 1995 o interpretador foi reescrito, e ganhou o nome
de
PHP/FI, o FI veio de um outro pacote escrito por Rasmus que
interpretava dados de
formulrios HTML (Form Interpreter). Ele combinou os scripts do
pacote Personal
Home Page Tools com o FI e adicionou suporte a mSQL, nascendo
assim o PHP/FI, que
cresceu bastante, e as pessoas passaram a contribuir com o
projeto.
Estima-se que em 1996 PHP/FI estava sendo usado por cerca de
15.000
sites pelo mundo, e em meados de 1997 esse nmero subiu para mais
de 50.000. Nessa
poca houve uma mudana no desenvolvimento do PHP. Ele deixou de
ser um projeto
de Rasmus com contribuies de outras pessoas para ter uma equipe
de
desenvolvimento mais organizada. O interpretador foi reescrito
por Zeev Suraski e
Andi Gutmans, e esse novo interpretador foi a base para a verso
3.
Atualmente o uso do PHP3 vem crescendo numa velocidade incrvel,
e j
est sendo desenvolvida a verso 4 do PHP.
-
2. Sintaxe Bsica
Delimitando o cdigo PHP
O cdigo PHP fica embutido no prprio HTML. O interpretador
identifica
quando um cdigo PHP pelas seguintes tags:
comandos
O tipo de tags mais utilizado o terceiro, que consiste em
uma
abreviao do primeiro. Para utiliz-lo, necessrio habilitar a opo
short-tags na
configurao do PHP. O ltimo tipo serve para facilitar o uso por
programadores
acostumados sintaxe de ASP. Para utiliz-lo tambm necessrio
habilit-lo no PHP,
atravs do arquivo de configurao php.ini.
Separador de instrues
Entre cada instruo em PHP preciso utilizar o ponto-e-vrgula,
assim
como em C, Perl e outras linguagens mais conhecidas. Na ltima
instruo do bloco de
script no necessrio o uso do ponto-e-vrgula, mas por questes
estticas recomenda-
se o uso sempre.
-
Nomes de variveis
Toda varivel 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 variveis $vivas e $VIVAS so diferentes. Por isso preciso ter
muito cuidado ao
definir os nomes das variveis. bom evitar os nomes em maisculas,
pois como
veremos mais adiante, o PHP j possui alguma variveis
pr-definidas cujos nomes so
formados por letras maisculas.
Comentrios
H dois tipos de comentrios em cdigo PHP:
Comentrios de uma linha:
Marca como comentrio at o final da linha ou at o final do bloco
de
cdigo PHP o que vier antes. Pode ser delimitado pelo caracter #
ou por duas barras
( // ).
Exemplo:
Comentrios de mais de uma linha:
Tem como delimitadores os caracteres /* para o incio do bloco
e
*/ para o final do comentrio. Se o delimitador de final de cdigo
PHP ( ?> )
estiver dentro de um comentrio, no ser reconhecido pelo
interpretador.
-
Exemplos:
*/
-
3. Criando os primeiros scripts
Primeiro Exemplo
Neste exemplo, criaremos um script com uma sada simples, que
servir
para testar se a instalao foi feita corretamente:
Aprendendo PHP
Salve o arquivo como primeiro.php3 no diretorio de documentos
do
Apache (ou o Web Server escolhido). Abra uma janela do navegador
e digite o endereo
http://localhost/primeiro.php3. Verificando o cdigo fonte da
pgina
exibida, temos o seguinte:
Aprendendo PHP
Primeiro Script
Isso mostra como o PHP funciona. O script executado no
servidor,
ficando disponvel para o usurio apenas o resultado. Agora vamos
escrever um script
que produza exatamente o mesmo resultado utilizando uma
varivel:
-
Aprendendo PHP
Utilizando formulrios HTML
Ao clicar num boto Submit em um formulrio HTML as informaes
dos campos sero enviadas ao servidor especificado para que possa
ser produzida uma
resposta. O PHP trata esses valores como variveis, cujo nome o
nome do campo
definido no formulrio. O exemplo a seguir mostra isso, e mostra
tambm como o
cdigo PHP pode ser inserido em qualquer parte do cdigo HTML:
Aprendendo PHP
-
figura 01 figura 02
Isso ocorre porque o cdigo PHP testa o contedo da varivel
$texto.
Inicialmente ele uma string vazia, e por isso nada impresso na
primeira parte.
Quando algum texto digitado no formulrio e submetido, o PHP
passa a trat-lo como
uma varivel. Como no formulrio o campo possui o nome texto, a
varivel com seu
contedo ser $texto. Assim, no prximo teste o valor da varivel
ser diferente de uma
string vazia, e o PHP imprime um texto antes do formulrio.
Interagindo com o browser
PHP tambm permite interagir com informaes do browser
automaticamente. Por exemplo, o script a seguir mostra informaes
sobre o browser do
usurio. As figuras 03 e 04 mostram o resultado visto no Netscape
Communicator e o
Microsoft Internet Explorer, respectivamente.
Aprendendo PHP
figura 03 figura 04
Observe que o resultado mostra caractersticas de cada browser,
como a
verso, e no caso do Communicator at o idioma (en). Com isso, se
voc criar uma
pgina com recursos disponveis somente no Internet Explorer, por
exemplo, pode
esconder o cdigo dos outros browsers, com um cdigo semelhante ao
seguinte:
Aprendendo PHP
-
echo "Voc usa Internet Explorer";} else { echo "Voc no usa
Internet Explorer";}?>
Neste exemplo, ser apenas exibido um texto informando se est
sendo
utilizado o Microsoft Internet Explorer ou no, mas para outras
funes poderia ser
utilizado algo semelhante.
bom notar o surgimento de mais uma funo no cdigo anterior:
strpos(string1,string2). Essa funo retorna a posio da primeira
apario de
string2 em string1, contando a partir de zero, e no retorna
valor algum se no ocorrer.
Assim, para testar se a string $HTTP_USER_AGENT contm a string
MSIE, basta
testar se strpos devolve algum valor.
Acessando Bancos de Dados
Neste documento todos os exemplos referentes a acesso de bancos
de
dados utilizaro o gerenciador de banco de dados MySQL, que pode
ser copiado
gratuitamente no site http://www.mysql.org.
Para interagir com uma base de dados SQL existem trs
comandos
bsicos que devem ser utilizados: um que faz a conexo com o
servidor de banco de
dados, um que seleciona a base de dados a ser utilizada e um
terceiro que executa uma
query SQL.
Conexo com o servidor
A conexo com o servidor de banco de dados mySQL em PHP feita
atravs do comando mysql_connect, que tem a seguinte sintaxe:
int mysql_connect(string /*host [:porta]*/ , string /*login*/ ,
string /*senha*/ );
-
Os parmetros so bastante simples: o endereo do servidor(host), o
nome
do usurio (login) e a senha para a conexo. A funo retorna um
valor inteiro, que o
identificador da conexo estabelecida e dever ser armazenado numa
varivel para ser
utilizado depois. No nosso exemplo, temos como servidor de banco
de dados a mesma
mquina que roda o servidor http, como login o usurio root e
senha phppwd:
$conexao = mysql_connect(localhost, root, phppwd);
Assim, se a conexo for bem sucedida (existir um servidor no
endereo
especificado que possua o usurio com a senha fornecida), o
identificador da conexo
fica armazenado na varivel $conexo.
Seleo do banco de dados
Uma vez conectado, preciso selecionar o banco de dados existente
no
servidor com o qual desejamos trabalhar. Isso feito atravs da
funo int
mysql_select_db, que possui a seguinte sintaxe:
int mysql_select_db(string /*nome_base*/, int /*conexao*/ );
O valor de retorno 0 se o comando falhar, e 1 em caso de
sucesso. O
nome da base de dados a selecionar o primeiro parmetro
fornecido, seguido pelo
identificador da conexo. Se este for omitido, o interpretador
PHP tentar utilizar a
ltima conexo estabelecida. Recomenda-se sempre explicitar esse
valor, para facilitar a
legibilidade do cdigo. No nosso exemplo, a base de dados a ser
selecionada possui o
nome ged:
mysql_select_db(ged, $conexao);
Aps a execuo desse comando qualquer consulta executada para
aquela
conexo utilizar a base de dados selecionada.
-
Execuo de queries SQL
Aps estabelecida a conexo e selecionada a base de dados a ser
utilizada,
quase toda a interao com o servidor mySQL pode ser feita atravs
de consultas
escritas em SQL (Structured Query Language), com o comando
mysql_query, que
utiliza a seguinte sintaxe:int mysql_query(string consulta, int
[conexao] );
O valor de retorno 0 se falhar ou 1 em caso de sucesso. Sucesso
aqui
significa que a consulta est sintaticamente correta e foi
executada no servidor.
Nenhuma informao sobre o resultado retornada deste comando, ou
at mesmo se o
resultado o esperado. No caso da consulta ser um comando SELECT,
o valor de
retorno um valor interno que identifica o resultado, que poder
ser tratado com a
funo mysql_result() e outras. A string query no deve conter
ponto-e-vrgula no
final do comando, e o identificador da conexo opcional. Vamos
criar uma tabela
como exemplo:$cria = CREATE TABLE exemplo (codigo INT
AUTO_INCREMENT
PRIMARY KEY, nome CHAR(40), email CHAR(50));
mysql_query($cria, $conexao);
Agora vejamos como ficou o cdigo completo para executar uma
query
SQL numa base de dados mySQL, com um exemplo que cria uma tabela
chamada
exemplo e adiciona alguns dados:
$conexao = mysql_connect(localhost, root,
phppwd);mysql_select_db(ged, $conexao);
$cria = CREATE TABLE exemplo (codigo INT AUTO_INCREMENT PRIMARY
KEY, nome CHAR(40), email CHAR(50));
$insere1 = INSERT INTO exemplo (nome,email) VALUES (Mauricio
Vivas,[email protected]);
$insere2 = INSERT INTO exemplo (nome,email) VALUES (Jose da
Silva,[email protected]);
$insere3 = INSERT INTO exemplo (nome,email) VALUES (Fernando
Henrique Cardoso,[email protected]);
$insere4 = INSERT INTO exemplo (nome,email) VALUES (Bill
Clinton,[email protected]);
mysql_query($cria, $conexao);mysql_query($insere1,
$conexao);
-
mysql_query($insere2, $conexao);mysql_query($insere3,
$conexao);mysql_query($insere4, $conexao);
Tratamento de resultados de query SELECT
Ao executar uma query SQL SELECT atravs do comando
mysql_query, o identificador do resultado deve ser armazenado
numa varivel que
pode ser tratada de diversas formas. Duas maneiras interessantes
de faz-lo usam o
comando mysql_result e o comando mysql_fetch_row,
respectivamente.
O comando mysql_result tem a seguinte sintaxe:
int mysql_result(int resultado, int linha, mixed [campo]);
Onde resultado o identificador do resultado, obtido com o
retorno da
funo mysql_query, linha especifica a tupla a ser exibida, j que
uma query SELECT
pode retornar diversas tuplas, e campo o identificador do campo
a ser exibido, sendo o
tipo descrito como mixed pela possibilidade de ser de diversos
tipos (neste caso, inteiro
ou string). Vejamos um exemplo utilizando a tabela criada
anteriormente:
$consulta = SELECT nome, email FROM exemplo WHERE email LIKE
vivas;
$resultado = mysql_query($consulta, $conexao);
printf("Nome: ", mysql_result($resultado,0,"nome"), \n);
printf("e-mail: ", mysql_result($resultado,0,"email"),);
Com o exemplo acima, o resultado ser:
Nome: Mauricio Vivase-mail: [email protected]
importante notar que a utilizao desta funo um pouco
trabalhosa,
j que no caso de um resultado com vrias linhas preciso controlar
o nmero de linhas
para trat-las (pode-se utilizar a funo mysql_num_rows(int
resultado), que
-
retorna o nmero de linhas de um resultado), e no caso de uma
alterao no nome do
campo preciso alterar tambm a maneira de trat-lo. Por isso mais
aconselhvel que
se use uma outra funo, como por exemplo mysql_fetch_row, que
possui a seguinte
sintaxe:
array mysql_fetch_row(int result);
A varivel resultado o identificador da memria de resultados,
obtido
como retorno da funo mysql_query. O resultado produzido por esta
funo de
retirar a primeira linha da memria de resultados, se houver, e
coloc-la num array.
Assim torna-se mais fcil tratar um resultado com vrias linhas, e
sem utilizar os nomes
dos campos na rotina de tratamento do resultado:
$consulta = SELECT nome, email FROM exemplo;
$resultado = mysql_query($consulta, $conexao);
echo "\n";echo "Nomee-mail\n";while ($linha =
mysql_fetch_row($resultado)) { printf("$linha[0]);
printf("$linha[1]);}echo "\n";
O cdigo acima ir imprimir todos os registros da tabela exemplo
numa
tabela html. Se o programador desejar pular alguma(s) linha(s)
do resultado, poder
utilizar a funo mysql_data_seek, que tem por objetivo definir
qual ser a prxima
linha da memria de resultados a ser impressa. Sua sintaxe :
int mysql_data_seek(int resultado, int linha);
Sendo resultado o identificador do resultado e linha o numero
da
linha. Retorna 0 em caso de falha, e um valor diferente de zero
em caso de sucesso.
Existem diversas outras funes para o tratamento de resultados,
que
armazenam as linhas em arrays e objetos, assim como outras funes
para administrar o
banco de dados, mas como este documento trata-se de uma
introduo, inicialmente no
tratar tpicos mais avanados.
-
4. Tipos
Tipos Suportados
PHP suporta os seguintes tipos de dados:
Inteiro
Ponto flutuante
String
Array
Objeto
PHP utiliza checagem de tipos dinmica, ou seja, uma varivel
pode
conter valores de diferentes tipos em diferentes momentos da
execuo do script. Por
este motivo no necessrio declarar o tipo de uma varivel para
us-la. O
interpretador PHP decidir qual o tipo daquela varivel,
verificando o contedo em
tempo de execuo.
Ainda assim, permitido converter os valores de um tipo para
outro
desejado, utilizando o typecasting ou a funo settype (ver
adiante).
Inteiros (integer ou long)
Uma varivel pode conter um valor inteiro com atribuies que sigam
as
seguintes sintaxes:
$vivas = 1234; # inteiro positivo na base decimal$vivas = -234;
# inteiro negativo na base decimal$vivas = 0234; # inteiro na base
octal-simbolizado pelo 0
# equivale a 156 decimal$vivas = 0x34; # inteiro na base
hexadecimal(simbolizado
# pelo 0x) equivale a 52 decimal.
-
A diferena entre inteiros simples e long est no nmero de
bytes
utilizados para armazenar a varivel. Como a escolha feita pelo
interpretador PHP de
maneira transparente para o usurio, podemos afirmar que os tipos
so iguais.
Nmeros em Ponto Flutuante (double ou float)
Uma varivel pode ter um valor em ponto flutuante com atribuies
que
sigam as seguintes sintaxes:
$vivas = 1.234;$vivas = 23e4; # equivale a 230.000
Strings
Strings podem ser atribudas de duas maneiras:
a) utilizando aspas simples ( ' ) Desta maneira, o valor da
varivel ser exatamente o
texto contido entre as aspas (com exceo de \\ e \' ver tabela
abaixo)
b) utilizando aspas duplas ( " ) Desta maneira, qualquer varivel
ou caracter de
escape ser expandido antes de ser atribudo.
Exemplo:
A sada desse script ser "---$teste--\n".
A sada desse script ser "---Mauricio--" (com uma quebra de linha
no
final).
-
A tabela seguinte lista os caracteres de escape:
Sintax
e Significado\n Nova linha
\
Aspa dupla
No apndice 01 est disponvel uma lista das funes utilizadas
no
tratamento de strings.
Arrays
Arrays em PHP podem ser observados como mapeamentos ou como
vetores indexados. Mais precisamente, um valor do tipo array um
dicionrio onde os
ndices so as chaves de acesso. Vale ressaltar que os ndices
podem ser valores de
qualquer tipo e no somente inteiros. Inclusive, se os ndices
forem todos inteiros, estes
no precisam formar um intervalo contnuo
Como a checagem de tipos em PHP dinmica, valores de tipos
diferentes podem ser usados como ndices de array, assim como os
valores mapeados
tambm podem ser de diversos tipos.Exemplo:
Equivalentemente, pode-se escrever:
-
Listas
As listas so utilizadas em PHP para realizar atribuies
mltiplas.
Atravs de listas possvel atribuir valores que esto num array
para variveis. Vejamos
o exemplo:
Exemplo:
list($a, $b, $c) = array(a, b, c);
O comando acima atribui valores s trs variveis
simultaneamente.
bom notar que s so atribudos s variveis da lista os elementos do
array que possuem
ndices inteiros e no negativos. No exemplo acima as trs
atribuies foram bem
sucedidas porque ao inicializar um array sem especificar os
ndices eles passam a ser
inteiros, a partir do zero. Um fator importante que cada varivel
da lista possui um
ndice inteiro e ordinal, iniciando com zero, que serve para
determinar qual valor ser
atribudo. No exemplo anterior temos $a com ndice 0, $b com ndice
1 e $c com ndice
2. Vejamos um outro exemplo:
$arr =
array(1=>um,3=>tres,a=>letraA,2=>dois);list($a,$b,$c,$d)
= $arr;
Aps a execuo do cdigo acima temos os seguintes valores:$a ==
null$b == um$c == dois$d == tres
Devemos observar que varivel $a no foi atribudo valor, pois no
array
no existe elemento com ndice 0 (zero). Outro detalhe importante
que o valor tres
foi atribudo varivel $d, e no a $b, pois seu ndice 3, o mesmo
que $d na lista. Por
fim, vemos que o valor letraA no foi atribudo a elemento algum
da lista pois seu
ndice no inteiro.
Os ndices da lista servem apenas como referncia ao interpretador
PHP
para realizar as atribuies, no podendo ser acessados de maneira
alguma pelo
programador. De maneira diferente do array, uma lista no pode
ser atribuda a uma
varivel, servindo apenas para fazer mltiplas atribuies atravs de
um array.
-
No apndice 02 est disponvel uma lista das funes mais comuns para
o
tratamento de arrays.
Objetos
Um objeto pode ser inicializado utilizando o comando new para
instanciar
uma classe para uma varivel.
Exemplo:class teste {
function nada() {echo nada;
}}
$vivas = new teste;$vivas -> nada();
A utilizao de objetos ser mais detalhada mais frente.
Booleanos
PHP no possui um tipo booleano, mas capaz de avaliar expresses
e
retornar true ou false, atravs do tipo integer: usado o valor 0
(zero) para
representar o estado false, e qualquer valor diferente de zero
(geralmente 1) para
representar o estado true.
Transformao de tipos
A transformao de tipos em PHP pode ser feita das seguintes
maneiras:
Coeres
Quando ocorrem determinadas operaes (+, por exemplo) entre
dois
valores de tipos diferentes, o PHP converte o valor de um deles
automaticamente
(coero). interessante notar que se o operando for uma varivel,
seu valor no ser
alterado.
-
O tipo para o qual os valores dos operandos sero convertidos
determinado da seguinte forma: Se um dos operandos for float, o
outro ser
convertido para float, seno, se um deles for integer, o outro
ser convertido para
integer.
Exemplo:$vivas = 1; // $vivas a string 1$vivas = $vivas + 1; //
$vivas o integer 2$vivas = $vivas + 3.7;// $vivas o double
5.7$vivas = 1 + 1.5 // $vivas o double 2.5
Como podemos notar, o PHP converte string para integer ou
double
mantendo o valor. O sistema utilizado pelo PHP para converter de
strings para nmeros
o seguinte:
- analisado o incio da string. Se contiver um nmero, ele ser
avaliado. Seno, o valor ser 0 (zero);
- O nmero pode conter um sinal no incio (+ ou -);
- Se a string contiver um ponto em sua parte numrica a ser
analisada, ele ser considerado, e o valor obtido ser double;
- Se a string contiver um e ou E em sua parte numrica a ser
analisada, o valor seguinte ser considerado como expoente da
base
10, e o valor obtido ser double;
Exemplos:$vivas = 1 + 10.5; // $vivas == 11.5$vivas = 1 +
-1.3e3; // $vivas == -1299$vivas = 1 + teste10.5; // $vivas ==
1$vivas = 1 + 10testes; // $vivas == 11$vivas = 1 + " 10testes"; //
$vivas == 11$vivas = 1 + "+ 10testes"; // $vivas == 1
Transformao explcita de tipos
A sintaxe do typecast de PHP semelhante ao C: basta escrever o
tipo
entre parenteses antes do valor
-
Exemplo:$vivas = 15; // $vivas integer (15)$vivas = (double)
$vivas // $vivas double (15.0)$vivas = 3.9 // $vivas double
(3.9)$vivas = (int) $vivas // $vivas integer (3)
// o valor decimal truncado
Os tipos de cast permitidos so:
(int), (integer) muda para integer;
(real), (double), (float) muda para float;
(string) muda para string;
(array) muda para array;
(object) muda para objeto.
Com a funo settype
A funo settype converte uma varivel para o tipo especificado,
que
pode ser integer, double, string, array ou object.
Exemplo:$vivas = 15; // $vivas integersettype($vivas,double) //
$vivas double
-
5. Constantes
Constantes pr-definidas
O PHP possui algumas constantes pr-definidas, indicando a verso
do
PHP, o Sistema Operacional do servidor, o arquivo em execuo, e
diversas outras
informaes. Para ter acesso a todas as constantes pr-definidas,
pode-se utilizar a
funo phpinfo(), que exibe uma tabela contendo todas as
constantes pr-definidas,
assim como configuraes da mquina, sistema operacional, servidor
http e verso do
PHP instalada.
Definindo constantes
Para definir constantes utiliza-se a funo define. Uma vez
definido, o
valor de uma constante no poder mais ser alterado. Uma constante
s pode conter
valores escalares, ou seja, no pode conter nem um array nem um
objeto. A assinatura
da funo define a seguinte:
int define(string nome_da_constante, mixed valor);
A funo retorna true se for bem-sucedida. Veja um exemplo de
sua
utilizao a seguir:
define ("pi", 3.1415926536);$circunf = 2*pi*$raio;
-
6. Operadores
Aritmticos
S podem ser utilizados quando os operandos so nmeros (integer
ou
float). Se forem de outro tipo, tero seus valores convertidos
antes da realizao da
operao.
+ adio- subtrao
%
mdulo
de strings
S h um operador exclusivo para strings:
. concatenao
de atribuio
Existe um operador bsico de atribuio e diversos derivados.
Sempre
retornam o valor atribudo. No caso dos operadores derivados de
atribuio, a operao
feita entre os dois operandos, sendo atribudo o resultado para o
primeiro. A atribuio
sempre por valor, e no por referncia.
-
= atribuio simples+= atribuio com adio
.=
atribuio com concatenao
Exemplo:
$a = 7;$a += 2; // $a passa a conter o valor 9
bit a bit
Comparam dois nmeros bit a bit.
& e lgico| ou lgico
>>
shift right
Lgicos
Utilizados para inteiros representando valores booleanos
and e lgicoor ou lgico
||
ou lgico
Existem dois operadores para e e para ou porque eles tm
diferentes
posies na ordem de precedncia.
Comparao
-
As comparaes so feitas entre os valores contidos nas variveis, e
no
as referncias. Sempre retornam um valor booleano.
== igual a!= diferente de
>=
maior ou igual a
Expresso condicional
Existe um operador de seleo que ternrio. Funciona assim:
(expressao1)?(expressao2):( expressao3)
o interpretador PHP avalia a primeira expresso. Se ela for
verdadeira, a
expresso retorna o valor de expresso2. Seno, retorna o valor de
expresso3.
de incremento e decremento
++ incremento-- decremento
Podem ser utilizados de duas formas: antes ou depois da varivel.
Quando
utilizado antes, retorna o valor da varivel antes de
increment-la ou decrement-la.
Quando utilizado depois, retorna o valor da varivel j
incrementado ou decrementado.
Exemplos:
$a = $b = 10; // $a e $b recebem o valor 10$c = $a++; // $c
recebe 10 e $a passa a ter 11$d = ++$b; // $d recebe 11, valor de
$b j incrementado
-
Ordem de precedncia dos operadores
A tabela a seguir mostra a ordem de precedncia dos operadores
no
momento de avaliar as expresses;
Precedncia Associatividad
e
Operadores
1. esquerda ,
2.
no associa new
-
7. Estruturas de Controle
As estruturas que veremos a seguir so comuns para as linguagens
de
programao imperativas, bastando, portanto, descrever a sintaxe
de cada uma delas,
resumindo o funcionamento.
Blocos
Um bloco consiste de vrios comandos agrupados com o objetivo
de
relacion-los com determinado comando ou funo. Em comandos como
if, for,
while, switch e em declaraes de funes blocos podem ser
utilizados para permitir
que um comando faa parte do contexto desejado. Blocos em PHP so
delimitados pelos
caracteres { e }. A utilizao dos delimitadores de bloco em uma
parte qualquer do
cdigo no relacionada com os comandos citados ou funes no
produzir efeito
algum, e ser tratada normalmente pelo interpretador.Exemplo:if
($x == $y) comando1; comando2;
Para que comando2 esteja relacionado ao if preciso utilizar um
bloco:
if ($x == $y){ comando1; comando2;}
Comandos de seleo
Tambm chamados de condicionais, os comandos de seleo
permitem
executar comandos ou blocos de comandos com base em testes
feitos durante a
execuo.
-
if
O mais trivial dos comandos condicionais o if. Ele testa a
condio e
executa o comando indicado se o resultado for true (valor
diferente de zero). Ele
possui duas sintaxes:
if (expresso) comando;
if (expresso): comando; . . . comando;endif;
Para incluir mais de um comando no if da primeira sintaxe,
preciso
utilizar um bloco, demarcado por chaves.
O else um complemento opcional para o if. Se utilizado, o
comando
ser executado se a expresso retornar o valor false (zero). Suas
duas sintaxes so:
if (expresso) comando;else comando;
if (expresso): comando; . . . comando;else comando; . . .
comando;endif;
A seguir, temos um exemplo do comando if utilizado com else:
-
if ($a > $b) $maior = $a;else $maior = $b;
O exemplo acima coloca em $maior o maior valor entre $a e $b
Em determinadas situaes necessrio fazer mais de um teste, e
executar
condicionalmente diversos comandos ou blocos de comandos. Para
facilitar o
entendimento de uma estrutura do tipo:
if (expressao1) comando1;else if (expressao2) comando2; else if
(expressao3) comando3; else comando4;
foi criado o comando, tambm opcional elseif. Ele tem a mesma
funo de um else e um if usados sequencialmente, como no exemplo
acima. Num
mesmo if podem ser utilizados diversos elseifs, ficando essa
utilizao a critrio do
programador, que deve zelar pela legibilidade de seu script.
O comando elseif tambm pode ser utilizado com dois tipos de
sintaxe.
Em resumo, a sintaxe geral do comando if fica das seguintes
maneiras:
if (expressao1) comando;[ elseif (expressao2) comando; ][ else
comando; ]
-
if (expressao1) : comando; . . . comando;[ elseif (expressao2)
comando; . . . comando; ][ else comando; . . . comando; ]endif;
switch
O comando switch atua de maneira semelhante a uma srie de
comandos if na mesma expresso. Frequentemente o programador pode
querer
comparar uma varivel com diversos valores, e executar um cdigo
diferente a depender
de qual valor igual ao da varivel. Quando isso for necessrio,
deve-se usar o
comando switch. O exemplo seguinte mostra dois trechos de cdigo
que fazem a
mesma coisa, sendo que o primeiro utiliza uma srie de ifs e o
segundo utiliza
switch:
if ($i == 0) print i igual a zero;elseif ($i == 1) print i igual
a um;elseif ($i == 2) print i igual a dois;
switch ($i) {case 0: print i igual a zero; break;case 1: print i
igual a um; break;case 2: print i igual a dois; break;}
-
importante compreender o funcionamento do switch para no
cometer
enganos. O comando switch testa linha a linha os cases
encontrados, e a partir do
momento que encontra um valor igual ao da varivel testada, passa
a executar todos os
comandos seguintes, mesmo os que fazem parte de outro teste, at
o fim do bloco. por
isso usa-se o comando break, quebrando o fluxo e fazendo com que
o cdigo seja
executado da maneira desejada. Veremos mais sobre o break mais
adiante. Veja o
exemplo:
switch ($i) {case 0: print i igual a zero;case 1: print i igual
a um;case 2: print i igual a dois;
}
No exemplo acima, se $i for igual a zero, os trs comandos print
sero
executados. Se $i for igual a 1, os dois ltimos print sero
executados. O comando s
funcionar da maneira desejada se $i for igual a 2.
Em outras linguagens que implementam o comando switch, ou
similar, os
valores a serem testados s podem ser do tipo inteiro. Em PHP
permitido usar valores
do tipo string como elementos de teste do comando switch. O
exemplo abaixo funciona
perfeitamente:
switch ($s) {case casa: print A casa amarela;case arvore: print
a rvore bonita;case lampada: print joao apagou a lampada;
}
-
comandos de repetio
while
O while o comando de repetio (lao) mais simples. Ele testa
uma
condio e executa um comando, ou um bloco de comandos, at que a
condio testada
seja falsa. Assim como o if, o while tambm possui duas sintaxes
alternativas:
while () ;
while (): ; . . . ;endwhile;
A expresso s testada a cada vez que o bloco de instrues
termina,
alm do teste inicial. Se o valor da expresso passar a ser false
no meio do bloco de
instrues, a execuo segue at o final do bloco. Se no teste
inicial a condio for
avaliada como false, o bloco de comandos no ser executado.
O exemplo a seguir mostra o uso do while para imprimir os nmeros
de
1 a 10:$i = 1;while ($i
-
O exemplo utilizado para ilustrar o uso do while pode ser feito
da
seguinte maneira utilizando o do.. while:
$i = 0;do { print ++$i;} while ($i < 10);
for
O tipo de lao mais complexo o for. Para os que programam em C,
C+
+ ou Java, a assimilao do funcionamento do for natural. Mas para
aqueles que esto
acostumados a linguagens como Pascal, h uma grande mudana para o
uso do for. As
duas sintaxes permitidas so:
for (;;) ;
for (;;) : ; . . . ;endfor;
As trs expresses que ficam entre parnteses tm as seguintes
finalidades:
Inicializao: comando ou sequencia de comandos a serem
realizados
antes do inicio do lao. Serve para inicializar variveis.
Condio: Expresso booleana que define se os comandos que esto
dentro do lao sero executados ou no. Enquanto a expresso for
verdadeira (valor
diferente de zero) os comandos sero executados.
Incremento: Comando executado ao final de cada execuo do
lao.
Um comando for funciona de maneira semelhante a um while
escrito
da seguinte forma:
-
while () {comandos...
}
Quebra de fluxo
Break
O comando break pode ser utilizado em laos de do, for e
while,
alm do uso j visto no comando switch. Ao encontrar um break
dentro de um
desses laos, o interpretador PHP para imediatamente a execuo do
lao, seguindo
normalmente o fluxo do script.while ($x > 0) { ... if ($x ==
20) { echo erro! x = 20; break; ...}
No trecho de cdigo acima, o lao while tem uma condio para
seu
trmino normal ($x
-
O exemplo acima uma maneira ineficiente de imprimir os
nmeros
pares entre 0 e 99. O que o lao faz testar se o resto da diviso
entre o nmero e 2 0.
Se for diferente de zero (valor lgico true) o interpretador
encontrar um continue,
que faz com que os comandos seguintes do interior do lao sejam
ignorados, seguindo
para a prxima iterao.
-
8. Funes
Definindo funes
A sintaxe bsica para definir uma funo :
function nome_da_funo([arg1, arg2, arg3]) {Comandos;... ;[return
];
}
Qualquer cdigo PHP vlido pode estar contido no interior de
uma
funo. Como a checagem de tipos em PHP dinmica, o tipo de retorno
no deve ser
declarado, sendo necessrio que o programador esteja atento para
que a funo retorne o
tipo desejado. recomendvel que esteja tudo bem documentado para
facilitar a leitura
e compreenso do cdigo. Para efeito de documentao, utiliza-se o
seguinte formato de
declarao de funo:
tipo function nome_da_funcao(tipo arg1, tipo arg2, ...);
Este formato s deve ser utilizado na documentao do script, pois
o PHP
no aceita a declarao de tipos. Isso significa que em muitos
casos o programador deve
estar atento ao tipos dos valores passados como parmetros, pois
se no for passado o
tipo esperado no emitido nenhum alerta pelo interpretador PHP, j
que este no testa
os tipos.
Valor de retorno
Toda funo pode opcionalmente retornar um valor, ou
simplesmente
executar os comandos e no retornar valor algum.
No possvel que uma funo retorne mais de um valor, mas
permitido
fazer com que uma funo retorne um valor composto, como listas ou
arrays.
-
Argumentos
possvel passar argumentos para uma funo. Eles devem ser
declarados logo aps o nome da funo, entre parnteses, e tornam-se
variveis
pertencentes ao escopo local da funo. A declarao do tipo de cada
argumento
tambm utilizada apenas para efeito de documentao.
Exemplo:
function imprime($texto){ echo $texto;}
imprime(teste de funes);
Passagem de parmetros por referncia
Normalmente, a passagem de parmetros em PHP feita por valor,
ou
seja, se o contedo da varivel for alterado, essa alterao no
afeta a varivel original.
Exemplo:
function mais5($numero) { $numero += 5;}
$a = 3;mais5($a); //$a continua valendo 3
No exemplo acima, como a passagem de parmetros por valor, a
funo
mais5 intil, j que aps a execuo sair da funo o valor anterior da
varivel
recuperado. Se a passagem de valor fosse feita por referncia, a
varivel $a teria 8 como
valor. O que ocorre normalmente que ao ser chamada uma funo, o
interpretador
salva todo o escopo atual, ou seja, os contedos das variveis. Se
uma dessas variveis
for passada como parmetro, seu contedo fica preservado, pois a
funo ir trabalhar
na verdade com uma cpia da varivel. Porm, se a passagem de
parmetros for feita
por referncia, toda alterao que a funo realizar no valor passado
como parmetro
afetar a varivel que o contm.
-
H duas maneiras de fazer com que uma funo tenha parmetros
passados por referncia: indicando isso na declarao da funo, o
que faz com que a
pasagem de parmetros sempre seja assim; e tambm na prpria
chamada da funo.
Nos dois casos utiliza-se o modificador &. Vejamos um
exemplo que ilustra os dois
casos:
function mais5(&$num1, $num2) { $num1 += 5; $num2 += 5;}
$a = $b = 1;mais5($a, $b); /* Neste caso, s $num1 ter seu
valor
alterado, pois a passagem por referncia est definida na declarao
da funo. */
mais5($a, &$b); /* Aqui as duas variveis tero seus valores
alterados. */
Argumentos com valores pr-definidos (default)
Em PHP possvel ter valores default para argumentos de funes,
ou
seja, valores que sero assumidos em caso de nada ser passado no
lugar do argumento.
Quando algum parmetro declarado desta maneira, a passagem do
mesmo na chamada
da funo torna-se opcional.
function teste($vivas = testando) { echo $vivas;}
teste(); // imprime testandoteste(outro teste); // imprime outro
teste
bom lembrar que quando a funo tem mais de um parmetro, o que
tem valor default deve ser declarado por ltimo:
function teste($figura = circulo, $cor) { echo a figura um ,
$figura, de cor $cor;}
-
teste(azul); /* A funo no vai funcionar da maneira esperada,
ocorrendo um erro no interpretador. A declarao correta : */
function teste2($cor, $figura = circulo) { echo a figura um ,
$figura, de cor $cor;}
teste2(azul);
/* Aqui a funcao funciona da maneira esperada, ou seja, imprime
o texto: a figura um crculo de cor azul */
Contexto
O contexto o conjunto de variveis e seus respectivos valores
num
determinado ponto do programa. Na chamada de uma funo, ao
iniciar a execuo do
bloco que contm a implementao da mesma criado um novo contexto,
contendo as
variveis declaradas dentro do bloco, ou seja, todas as variveis
utilizadas dentro
daquele bloco sero eliminadas ao trmino da execuo da funo.
Escopo
O escopo de uma varivel em PHP define a poro do programa onde
ela
pode ser utilizada. Na maioria dos casos todas as variveis tm
escopo global.
Entretanto, em funes definidas pelo usurio um escopo local
criado. Uma varivel
de escopo global no pode ser utilizada no interior de uma funo
sem que haja uma
declarao.
Exemplo:$vivas = Testando;
function Teste() { echo $vivas;}
Teste();
O trecho acima no produzir sada alguma, pois a varivel $vivas
de
escopo global, e no pode ser referida num escopo local, mesmo
que no haja outra com
nome igual que cubra a sua visibilidade. Para que o script
funcione da forma desejada, a
varivel global a ser utilizada deve ser declarada.
-
Exemplo:$vivas = Testando;
function Teste() { global $vivas; echo $vivas;}
Teste();
Uma declarao global pode conter vrias variveis, separadas
por
vrgulas. Uma outra maneira de acessar variveis de escopo global
dentro de uma
funo utilizando um array pr-definido pelo PHP cujo nome
$GLOBALS. O ndice
para a varivel referida o proprio nome da varivel, sem o
caracter $. O exemplo
acima e o abaixo produzem o mesmo resultado:
Exemplo:$vivas = "Testando";
function Teste() { echo $GLOBALS["vivas"]; // imprime $vivas
echo $vivas; // no imprime nada }
Teste();
-
9. Variveis
O modificador static
Uma varivel esttica visvel num escopo local, mas ela
inicializada
apenas uma vez e seu valor no perdido quando a execuo do script
deixa esse
escopo. Veja o seguinte exemplo:
function Teste() { $a = 0; echo $a; $a++;}
O ltimo comando da funo intil, pois assim que for encerrada
a
execuo da funo a varivel $a perde seu valor. J no exemplo
seguinte, a cada
chamada da funo a varivel $a ter seu valor impresso e ser
incrementada:
function Teste() { static $a = 0; echo $a; $a++;}
O modificador static muito utilizado em funes recursivas, j que
o
valor de algumas variveis precisa ser mantido. Ele funciona da
seguinte forma: O valor
das variveis declaradas como estticas mantido ao terminar a
execuo da funo. Na
prxima execuo da funo, ao encontrar novamente a declarao com
static, o valor
da varivel recuperado.
Em outras palavras, uma varivel declarada como static tem o
mesmo
tempo de vida que uma varivel global, porm sua visibilidade
restrita ao escopo
local em que foi declarada e s recuperada aps a declarao.
Exemplo: function Teste() { echo "$a"; static $a = 0; $a++;}
-
O exemplo acima no produzir sada alguma. Na primeira execuo
da
funo, a impresso ocorre antes da atribuio de um valor funo, e
portanto o
contedo de $a nulo (string vazia). Nas execues seguintes da funo
Teste() a
impresso ocorre antes da recuperao do valor de $a, e portanto
nesse momento seu
valor ainda nulo. Para que a funo retorne algum valor o
modificador static deve
ser utilizado.
Variveis Variveis
O PHP tem um recurso conhecido como variveis variveis, que
consiste
em variveis cujos nomes tambm so variveis. Sua utilizao feita
atravs do duplo
cifro ($$).$a = teste;$$a = Mauricio Vivas;
O exemplo acima e equivalente ao seguinte:
$a = teste;$teste = Mauricio Vivas;
Variveis enviadas pelo navegador
Para interagir com a navegao feita pelo usurio, necessrio que o
PHP
possa enviar e receber informaes para o software de navegao. A
maneira de enviar
informaes, como j foi visto anteriormente, geralmente atravs de
um comando de
impresso, como o echo. Para receber informaes vindas do
navegador atravs de um
link ou um formulrio html o PHP utiliza as informaes enviadas
atravs da URL. Por
exemplo: se seu script php est localizado em
http://localhost/teste.php3 e
voc o chama com a url
http://localhost/teste.php3?vivas=teste,
automaticamente o PHP criar uma varivel com o nome $vivas
contendo a string
teste. Note que o contedo da varivel est no formato urlencode.
Os formulrios
html j enviam informaes automaticamente nesse formato, e o PHP
decodifica sem
necessitar de tratamento pelo programador.
-
URLencode
O formato urlencode obtido substituindo os espaos pelo caracter
+
e todos os outros caracteres no alfa-numricos (com exceo de _)
pelo caracter %
seguido do cdigo ASCII em hexadecimal.
Por exemplo: o texto Testando 1 2 3 !! em urlencode fica
Testando+1+2+3+%21%21
O PHP possui duas funes para tratar com texto em urlencode.
Seguem
suas sintaxes:
string urlencode(string texto);string urldecode(string
texto);
Essas funes servem respectivamente para codificar ou decodificar
um
texto passado como argumento. Para entender melhor o que um
argumento e como
funciona uma funo, leia o tpico funes.
Variveis de ambiente
O PHP possui diversas variveis de ambiente, como a $PHP_SELF,
por
exemplo, que contm o nome e o path do prprio arquivo. Algumas
outras contm
informaes sobre o navegador do usurio, o servidor http, a verso
do PHP e diversas
informaes. Para ter uma listagem de todas as variveis e
constantes de ambiente e
seus respectivos contedos, deve-se utilizar a funo
phpinfo().
Verificando o tipo de uma varivel
Por causa da tipagem dinmica utilizada pelo PHP, nem sempre
possvel
saber qual o tipo de uma varivel em determinado instantese no
contar com a ajuda de
-
algumas funes que ajudam a verificar isso. A verificao pode ser
feita de duas
maneiras:
Funo que retorna o tipo da varivel
Esta funo a gettype. Sua assinatura a seguinte:
string gettype(mixed var);
A palavra mixed indica que a varivel var pode ser de diversos
tipos.
A funo gettype pode retornar as seguintes strings: integer,
double, string, array, object e unknown type.
Funes que testam o tipo da varivel
So as funes is_int, is_integer, is_real, is_long,
is_float, is_string, is_array e is_object. Todas tm o mesmo
formato,
seguindo modelo da assinatura a seguir:
int is_integer(mixed var);
Todas essas funes retornam true se a varivel for daquele tipo,
e
false em caso contrrio.
Destruindo uma varivel
possvel desalocar uma varivel se ela no for usada
posteriormente
atravs da funo unset, que tem a seguinte assinatura:
-
int unset(mixed var);
A funo destri a varivel, ou seja, libera a memria ocupada por
ela,
fazendo com que ela deixe de existir. Se mais na frente for
feita uma chamada
varivel, ser criada uma nova varivel de mesmo nome e de contedo
vazio, a no ser
que a chamada seja pela funo isset. Se a operao for bem
sucedida, retorna true.
Verificando se uma varivel possui um valor
Existem dois tipos de teste que podem ser feitos para verificar
se uma
varivel est setada: com a funo isset e com a funo empty.
A funo isset
Possui o seguinte prottipo:
int isset(mixed var);
E retorna true se a varivel estiver setada (ainda que com uma
string
vazia ou o valor zero), e false em caso contrrio.
A funo empty
Possui a seguinte assinatura:
int empty(mixed var);
E retorna true se a varivel no contiver um valor (no estiver
setada) ou
possuir valor 0 (zero) ou uma string vazia. Caso contrrio,
retorna false.
-
10. Classes e Objetos
Classe
Uma classe um conjunto de variveis e funes relacionadas a
essas
variveis. Uma vantagem da utilizao poder usufruir do recurso de
encapsulamento
de informao. Com o encapsulamento o usurio de uma classe no
precisa saber como
ela implementada, bastando para a utilizao conhecer a interface,
ou seja, as funes
disponveis. Uma classe um tipo, e portanto no pode ser atribuda
a uma varivel.
Para definir uma classe, deve-se utilizar a seguinte
sintaxe:
class Nome_da_classe { var $variavel1; var $variavel2; function
funcao1 ($parametro) { /* === corpo da funo === */ }}
Objeto
Como foi dito anteriormente, classes so tipos, e no podem ser
atribudas
a variveis. Variveis do tipo de uma classe so chamadas de
objetos, e devem ser
criadas utilizando o operador new, seguindo o exemplo
abaixo:
$variavel = new $nome_da_classe;
Para utilizar as funes definidas na classe, deve ser utilizado
o
operador ->, como no exemplo:
$variavel->funcao1(
A varivel $this
Na definio de uma classe, pode-se utilizar a varivel $this, que
o
prprio objeto. Assim, quando uma classe instanciada em um
objeto, e uma funo
desse objeto na definio da classe utiliza a varivel $this, essa
varivel significa o
objeto que estamos utilizando.
-
Como exemplo da utilizao de classes e objetos, podemos utilizar
a
classe conta, que define uma conta bancria bastante simples, com
funes para ver
saldo e fazer um crdito.
class conta { var $saldo; function saldo() { return
$this->saldo; } function credito($valor) { $this->saldo +=
$valor; }}
$minhaconta = new conta; $minhaconta->saldo(); // a variavel
interna no foi
// inicializada, e no contm// valor algum
$minhaconta->credito(50);$minhaconta->saldo(); // retorna
50
SubClasses
Uma classe pode ser uma extenso de outra. Isso significa que ela
herdar
todas as variveis e funes da outra classe, e ainda ter as que
forem adicionadas pelo
programador. Em PHP no permitido utilizar herana mltipla, ou
seja, uma classe
pode ser extenso de apenas uma outra.Para criar uma classe
extendida, ou derivada de
outra, deve ser utilizada a palavra reservada extends, como pode
ser visto no exemplo
seguinte:
class novaconta extends conta { var $numero; function numero() {
return $this->numero; }}
A classe acima derivada da classe conta, tendo as mesmas funes
e
variveis, com a adio da varivel $numero e a funo numero().
Construtores
Um construtor uma funo definida na classe que
automaticamente
chamada no momento em que a classe instanciada (atravs do
operador new). O
construtor deve ter o mesmo nome que a classe a que pertence.
Veja o exemplo:
-
class conta { var $saldo;
function conta () { $this.saldo = 0; }
function saldo() { return $this->saldo; } function
credito($valor) { $this->saldo += $valor; }}
Podemos perceber que a classe conta agora possui um construtor,
que
inicializa a varivel $saldo com o valor 0.
Um construtor pode conter argumentos, que so opcionais, o que
torna
esta ferramenta mais poderosa. No exemplo acima, o construtor da
classe conta pode
receber como argumento um valor, que seria o valor inicial da
conta.
Vale observar que para classes derivadas, o construtor da classe
pai no
automaticamente herdado quando o construtor da classe derivada
chamado.
-
12. Concluses
A realizao deste Projeto Supervisionado possibilitou o estudo
da
linguagem PHP, que se mostrou uma ferramenta poderosa e simples
de utilizar na
construo de sites para a World Wide Web dinmicos, possibilitando
uma maior
interao com o usurio e a armazenagem das informaes em Bancos de
Dados.
Aps a concluso da aplicao, tornou-se claro que a combinao de
scripts server-side, como o PHP, com scripts client-side, como
JavaScript, por
exemplo, possibilita um maior aproveitamento dos recursos
disponveis para criar
pginas dinmicas, e no processo de criao deve-se ponderar
bastante para concluir
qual dos dois tipos de scripts deve ser utilizado para
determinado fim.
Entre as linguagens de script server-side, PHP surgiu como uma
tima
opo, por diversos motivos: o custo de aquisio, que no existe; a
portabilidade,
permitindo que uma aplicao seja desenvolvida em uma plataforma
para ser executada
em outra; a simplicidade, j que os scripts ficam no prprio cdigo
html, e possuem
uma sintaxe bastante simples; a possibilidade de trabalhar com
diversos bancos de
dados e servidores http, alm do grande nmero de funes
pr-definidas, entre outras
coisas.
Por esses e outros motivos, possvel afirmar que o estudo sobre
PHP foi
bastante enriquecedor, por ter produzido uma documentao em
portugus para a
linguagem e ter motivado o aluno a continuar se dedicando ao
tema.
-
13. Bibliografia e Referncias
A pesquisa foi baseada no manual de PHP, disponvel em
www.php.net, e
em diversos tutoriais disponveis no site www.phpbuilder.com.
Esses dois endereos
contm uma vasta documentao sobre a linguagem, alm de endereos
para listas de
discusso, onde pode-se solicitar ajuda de programadores mais
experientes.
Uma boa referncia em portugus a lista PHP para quem fala
Portugus, que pode ser assinada no endereo
www.egroups.com/group/php-pt/.
Em ingls, alm dos endereos citados acima, uma boa fonte o
site
PHPWizard, que pode ser encontrado em www.phpwizard.net.
-
APNDICE 01 - Funes para tratamento de strings
Funes relacionadas a HTML
htmlspecialchars
string htmlspecialchars(string str);
Retorna a string fornecida, substituindo os seguintes
caracteres:
& para '&'
" para '"'
< para '