Informática Numaboa
PHP rapidinho
Qui 20 Abr 2006 15:35 |
- Detalhes
- Categoria: PHP
- Atualização: Sexta, 26 Junho 2009 20:36
- Autor: vovó Vicki
- Acessos: 51773
O PHP é usado em larga escala como uma linguagem de script para vitaminar sites dinâmicos. Antes de começar com o PHP, é bom explicar primeiro os conceitos de um site dinâmico.
Site dinâmico
Quando a Internet começou a se tornar uma coisa 'normal' para as pessoas 'normais', a maior parte da web era constituída por sites estáticos. Isto significa que não havia absolutamente nenhuma interação entre cliente e servidor, exceto as requisições HTTP para se obter a página desejada. A Internet evoluíu e novas possibilidades foram sendo descobertas. Desta forma, nasceu a necessidade de interação com o usuário.
Algumas pessoas muito legais resolveram desenvolver técnicas como CGI, módulos servidores e motores de script. E, já que estão aí (e "de grátis"), nada mais justo do que utilizá-las! A Internet mudou e continua mudando. É provável que você já tenha se dado conta dos milagres da imensa quantidade de dados à sua disposição (selecionados e ordenados como se nada houvesse), das pesquisas de opinião (muitas vezes devassando a sua intimidade) e do fenômeno chamado comércio eletrônico. Logicamente, você não quer ficar de fora e, para fazer parte da turma da interatividade, o PHP é A ferramenta!
Tem gente que odeia o PHP - eu não. Há muitos anos acompanho o desenvolvimento desta linguagem e a uso juntamente com o banco de dados MySQL em máquinas Linux com servidor Apache. Sem saber, faz tempo que sou uma das integrantes do movimento LAMP (Linux-Apache-MySQL-PHP), tão em moda nos dia de hoje. PHP significa Php Hypertext Preprocessor o que, na língua pátria, é Preprocessador de Hipertexto Php. Originalmente, o Php significava Personal HomePage. À medida que o PHP foi adquirindo maior funcionalidade e representando um papel mais sério na área de desenvolvimento web, o nome precisou ser melhorado para indicar corretamente sua aplicação: preprocessador de hipertexto.
Este tutorial se destina a iniciantes, com pouca ou nenhuma experiência em programação, e não há melhor maneira de começar do que aprendendo a programar em PHP. É uma linguagem de fácil aprendizado, de resultados rápidos e consistentes. A melhor forma de aprender é ir trabalhando com cada um dos tópicos deste tutorial, na ordem em que forem sendo apresentados.
O que é preciso para começar
Basicamente, um editor de texto decente que permita criar textos em ASCII puro - sem elementos de formatação. Esqueça o Word ou outro editor mais cheio de nove horas. Pessoalmente, prefiro o editor de texto TextPad que permite destacar a sintaxe em cores, tem a versão em Português do Brasil e vem configurado para uma porção de linguagens de programação, inclusive para o PHP.
Também é necessário ter um interpretador PHP para desenvolver e testar os scripts. A maioria das hospedagens oferece este serviço mas, se você quiser rodar o PHP localmente, terá que fazer o download do motor PHP no site oficial do projeto e instalá-lo na sua máquina.
Para poder testar seus scripts num ambiente web você vai precisar de um servidor web. Novamente, este é um serviço que todas as hospedagens oferecem e você não precisa se preocupar com a instalação e a configuração. Caso você tenha optado por uma instalação local, então recomendo o Apache, que pode ser obtido gratuitamente no site oficial do Apache.Este servidor web roda em qualquer tipo de sistema operacional *nix (Unix e todas as versões do Linux), além de possuir uma porta Win32. Leia com cuidado as recomendações de instalação para não se estressar sem necessidade.
Finalmente, é imprescindível que você tenha um bom conhecimento de HTML. Se não for este o seu caso, é provável que você pire. Se você preencheu todos os requisitos, então está pronto para entrar no mundo do PHP. Providencie um caminhão-tanque de café, um balde de senso de humor e uma dose de perseverança nunca antes imaginada pela humanidade... e comece a hackear
O mais simples dos scripts
Nesta lição, logo de cara, vamos partir para um script. A primeira coisa é verificar se o software instalado está funcionando corretamente. Para isto, vamos fazer um pequeno teste. Pegue seu editor de texto favorito e digite o seguinte:
Salve este arquivo como info.php e faça o upload do arquivo para o diretório raiz do seu site. Chame o arquivo no seu navegador (http://www.seusite.com.br/info.php). O que é que você vê? Se não estiver vendo nada, das duas, uma: ou seu serviço de hospedagem não dá suporte ao PHP ou alguma coisa não está legal com a configuração PHP/servidor web do serviço. Na segunda hipótese, Entre em contato com a hospedagem e peça esclarecimentos. Basta dizer que você colocou uma página PHP simples no diretório raiz que não está dando leitura.
Caso você seja um daqueles corajosos que resolveu instalar servidor web e PHP na máquina em casa, salve o arquivo info.php no diretório raiz do seu servidor web. Depois abra seu browser e digite 'http://localhost/info.php', sem as aspas, é claro. Se não aparecer nada ou der erro, verifique o que está acontecendo com a dupla dinâmica Apache/PHP ou consulte a FAQ dos sites onde você fez o download do software.
Agora, se você estiver vendo uma pá de informações sobre o PHP, parabéns! Você acaba de rodar com sucesso seu primeiro script. Bem, então vamos às explicações (meio babaca, né? mas vá se acostumando ).
Quando escrevemos um script PHP, SEMPRE começamos com . Existem algumas outras formas de indicar o início e o fim de um script como, por exemplo, e ?>, porém a usada no exemplo é a mais correta e mais comum. Portanto, esta será a forma utilizada em todo o tutorial.
Este treco estranho no meio, phpinfo(), é apenas uma função nativa do PHP. Não se preocupe, vou explicar o que são funções mais adiante. No momento, tudo o que você precisa saber é que esta função caça um monte de informações a respeito da configuração atual do PHP instalado na máquina.
Você provavelmente deve ter notado a gracinha de ponto-e-vírgula após phpinfo(). O ponto-e-vírgula indica o final de uma declaração. Mas o que é exatamente uma declaração e porque precisa terminar com ponto-e-vírgula? Encare da seguinte forma: com a declaração você fala com o interpretador de PHP e diz o que ele deve fazer; com o ponto-e-vírgula você informa o interpretador que parou de falar e que ele pode cumprir a ordem. É isso aí.
Bããõoo, missão cumprida. Vamos tentar fazer alguma coisa um pouco mais emocionante...
O famigerado 'Hello World' não pode faltar
Podes crer, vão aparecer um monte de situações em que você vai querer mostrar algum texto na tela. Não é legal começar com o tradicional 'Hello world'? Éééca, mas estou sem uma idéia melhor.
Salve este arquivo como hello.php no diretório raiz do seu servidor web ou do seu site e chame-o no navegador. UAU!!! Apareceu Hello world na telinha! Também, pudera, a função echo() funcionou e ecoou o texto indicado entre aspas conforme a declaração pedia. O texto precisa estar entre aspas duplas, se bem que aspas simples ('Hello world') também são aceitas. Acostume-se, porém, a usar aspas duplas. Explico mais tarde por que.
Brinque um pouco com a função echo. Adicione algumas linhas de texto e observe que belo resultado.
Belo resultado coisa nenhuma! Ficou uma nhaca de texto todo embolado.
. Está tudo numa linha só. Pois é, lembra que eu falei que íamos precisar de HTML? Agora é a hora de começar a usá-lo, neste caso utilizando a tag <br> de quebra de linha:Bem, agora ficou um pouco melhor - teste o resultado clicando aqui.
Mas dê só uma olhada no código HTML... tá todinho embolado . Se você quiser debugar seu código, e ele for meio longo, vai ser complicado. O jeito é indicar uma quebra de linha também para o código HTML. Isto é possível usando o caractere de escape '\n'.Faça o upload (ou salve) e teste. Agora parece que está tudo em riba.
Mas, o que vem a ser um caractere de escape?Caracteres de escape são muito utilizados em programação. \n significa nova linha e não é o único caractere de escape que existe. Veja abaixo alguns dos mais utilizados:
Caracter de escape | Significado |
\a | Alarme |
\cX | Control X, onde X pode ser qualquer caracter. |
\e | Escape |
\f | Form Feed (alimentação de formulário) |
\n | Nova linha |
\r | Retorno de cabeçote |
\t | Tab |
\xHH | Código hexadecimal (HH) de caracter |
\DDD | Código octal de caracter |
Não tem importância se você não entender alguns destes códigos de escape. À medida que forem sendo necessários, serão usados nos exemplos. Depois, você sempre pode voltar e dar uma recapitulada.
Variáveis
Antes de mais nada, o que são variáveis e porque precisamos delas? Você pode imaginar as variáveis como sendo porta-trecos (caixinhas para guardar "coisas"). Logo abaixo é mostrado como estes porta-trecos podem ser usados:
Analise, escreva e rode este pedaço de código. Depois disso vêm as explicações:
$hello é uma variável feita por nós. Em PHP, as variáveis SEMPRE começam por um cifrão $. O nome da variável é hello e informamos o interpretador PHP de que se trata de uma variável simplesmente colocando o cifrão na frente. Neste nosso caso, a variável $hello contém o valor 'Hello world', ou seja, $hello é o porta-treco e 'Hello world' é o treco dentro do porta-treco.
Observe que, desta vez, colocamos o texto entre aspas simples. Este é o texto que a função echo deve por na tela. As aspas podem ser simples porque, informando o porta-treco, a função pega o que ele contiver, ou seja, o texto que guardamos na variável.
Variáveis podem guardar outras coisas além de texto. Números, por exemplo. Veja abaixo:
Analise o código com atenção. Se tudo der certo, o resultado 150 deve ser mostrado na tela. Em primeiro lugar, armazenamos o número 50 numa variável chamada $numero1. Depois, guardamos o número 100 numa variável denominada $numero2. A seguir, queremos somar os valores de $numero1 e $numero2. Isto é realizado através da declaração $resultado = $numero1 + $numero2;. Criamos uma nova variável chamada $resultado que, logicamente, guarda o resultado de 150. Finalmente ecoamos a variável $resultado para a tela com echo($resultado). É isso aí. Só para provar que funciona, clique aqui.
Faça algumas experiências por conta própria. Tente operações de subtração, multiplicação, divisão e módulo. Experimente operações um pouco mais complexas. Brinque um pouquinho e comemore: ESTAMOS LIVRES DO HELLO WORLD
Tipos de dados
Agora vamos atacar os tipos de dados. É claro que dados de variáveis são de um determinado tipo. Altos, baixos, gordos, magros... hehehe, brincadeirinha. Podem ser letras, números, números com casas decimais, etc. É sempre bom saber o tipo de uma variável. Uma razão bastante comum é quando você fizer com que um script PHP trabalhe com um banco de dados MySQL (assunto que foge do escopo deste tutorial, mas que certamente você irá enfrentar quando adquirir um pouco mais de experiência). A seguir, uma lista dos tipos de dados suportados pelo PHP:
- Arrays - (matrizes)
- Floating Point Numbers (or Double) - (números de ponto flutuante)
- Integer - (números inteiros)
- Object - (objetos)
- String - (cadeia de caracteres)
Mesmo que você não saiba do que se trata, não se preocupe. No decorrer deste tutorial você vai receber tudo mastigado. Inicialmente vamos dar uma olhada nos tipos String e Integer, de longe os mais utilizados.
String e Integer
Uma string é uma sequência ou cadeia de caracteres. Como a tradução é muito longa, vou usar o termo string, mesmo porque todo mundo que se preze sabe o que é uma string Uma string pode ser uma cadeia qualquer: algumas letras juntas, uma palavra, uma frase ou mesmo uma história inteira.
O tipo integer é um número que vai de -32768 a 32767.
Para determinar o tipo de uma certa variável, você pode usar a função gettype(). O nome desta função poderia ser sacatipo(), mas o pessoal usou inglês para o PHP, daí o gettype(). Veja o exemplo abaixo:
Criamos a variável $variavelteste e lhe atribuímos o valor 'Oi, sou uma variável'. Na linha seguinte, criamos uma variável chamada $tipo, que vai receber o resultado da chamada à função gettype($variavelteste), ou seja, o tipo da variável que está sendo enviada à função. Obtido o valor de $tipo, basta colocá-lo na telinha com echo(). O resultado não poderia ser outro porque colocamos entre aspas uma cadeia de caracteres.
Experimente este script usando outros tipos de variáveis, por exemplo, números. Confira o que aparece na tela com $variavelteste = 6.
Ô psiu... você percebeu que a variável $tipo está entre aspas com o resto do texto que deve ser ecoado? É, o PHP é muito compreensivo! Este uso, porém, não é dos melhores. Explico mais tarde porque.
A irmã da função nativa gettype() é a função settype(). Esta função especifica o tipo de uma variável. Também existem as funções 'is_*' (é_qualquercoisa) mas, no momento, podemos dispensá-las.
É isso aí. Por enquanto é só. Você vai cansar de usar strings e integers, podes crer. Se ainda tiver fôlego, leia Condições, Loops e Operadores".
Condições e Operadores
Basicamente, a definição de uma condição é: "Testar se um estado é falso ou verdadeiro". Na vida real, testamos constantemente condições: está fazendo frio? estou com sede? e por aí vai. Na programação a coisa não é muito diferente e a declaração IF nos permite realizar a tarefa de testar condições. Veja no exemplo abaixo:
Inicialmente criamos a variável 'nome' e lhe atribuímos o valor "João". Depois queremos saber se a variável contém realmente "João". É onde entra a declaração IF (cuja tradução literal é SE). A declaração if($nome == "João") pode ser traduzida para "se a variável 'nome' for igual a "João", então estamos certos". Caso estejamos certos, mostramos um determinado texto. Aliás, tudo o que quisermos que aconteça se estivermos certos é colocado entre chaves. O código entre chaves é chamado de 'bloco'.
Depois usamos a palavra 'else', cuja tradução literal é 'caso contrário', para definir o que deve acontecer caso a declaração não seja verdadeira. Novamente, tudo o que quisermos que aconteça caso a declaração não seja verdadeira também deve ser colocado num 'bloco' delimitado por chaves.
Experimente trocar o valor da variável 'nome' por "Maria" e rode novamente o script. Você vai constatar que o texto mostrado pela função echo() é o do 'bloco else'.
O == é chamado de operador de comparação e não é o único que existe. Veja outros operadores de comparação na tabela abaixo:
Operador | Significado |
== | Igual a |
!= | Diferente (ou não igual a) |
< | Menor que |
> | Maior que |
<= | Menor ou igual a |
>= | Maior ou igual a |
Existem outros operadores de comparação no PHP mas, por enquanto, podem ficar de fora. No momento é mais importante manter o foco na declaração IF.
Preste atenção! Um erro muito comum de programação é colocar ponto-e-vírgula depois da chave de fechamento. NÃO O FAÇA! Chaves são apenas delimitadores de blocos, não são declarações. Portanto, não precisam de terminadores.
Agora, escreva este código:
Ótimo. Teste o script. Troque o valor da variável 'numero' e verifique o que acontece. Fácil, né não?
Bem, a esta altura você deve estar pensando "a última linha do script está desformatada. A vovó fez caca!". Pois é, esta última linha foi deliberadamente "desformatada" para mostrar a importância dos delimitadores. Tanto faz como você escreve as declarações de um bloco. Não são as quebras de linha ou os espaços adicionais que enviam solicitações ao interpretador PHP - ele atende APENAS declarações e comandos. O script arrumadinho é apenas para facilitar a leitura do programador e, quanto mais ordem, mais fácil é a leitura. O script acima poderia ter o formato a seguir e, ainda assim, seria corretamente executado:
Deixo a formatação ao seu critério. A escolha é sua...
A declaração IF pode ser um pouco mais elaborada para atender nossas necessidades. Veja abaixo:
Já deu para perceber que tem novidade. Criamos a variável 'nome' e lhe atribuímos o valor "João". A seguir testamos este valor comparando-o com "Júlia". Se o valor for igual a "Júlia", o texto do 'bloco-if' é mostrado. Como não é este o caso, a próxima declaração é analisada - a declaração 'elseif' - ou seja, 'caso contrário se'. O valor da variável 'nome' é então comparado com "Helena". Se fosse igual, o texto do 'bloco-elseif' seria mostrado. Novamente não é o caso e o interpretador segue para a próxima declaração: caso contrário (else) mostre o texto. É o que acaba ocorrendo e o texto "O valor da variável 'nome' não é Júlia nem Helena" é mostrado.
Por enquanto, isto é tudo sobre as declarações de condição. Agora vamos dar uma espiada em operadores de incremento e decremento. O nome pode parecer feio, mas a coisa é muito simples. Acompanhe.
Declaramos a variável 'numero' e lhe atribuímos o valor 1. A seguir, aplicamos o operador de incremento ++ nesta variável e que soma 1 ao valor original. Agora a variável 'numero' guarda o valor 2, exatamente o que a função echo() vai por na tela. E pronto... isto é tudo o que o operador de incremento faz
É óbvio que, se o operador de incremento aumenta em 1 o valor de uma variável, o operador de decremento -- faz o contrário: vai diminuir o valor da variável em 1.
Loops
A tradução literal de loop é 'curva, volta, alça'. Geralmente encontramos a tradução alça porém, como no caso das strings, é mais fácil e cômodo manter o termo original.
Existem dois tipos básicos de loops no PHP: o loop while e o loop for. Vamos a um exemplo do loop while, tendo em mente que 'while' significa 'enquanto':
Criamos a variável 'i' e lhe demos o valor zero. A seguir, iniciamos um 'loop while' e delimitamos seu bloco com chaves. O código deste bloco é executando ENQUANTO a condição while($i < 5) for válida, ou seja, mostra o valor de 'i' e depois o incrementa em 1. Quando o valor de 'i' for igual a 5, a condição da declaração 'while' deixa de ser verdadeira e o script é finalizado. É claro que, se você não fornecer pelo menos uma condição para sair do loop, o script roda o 'bloco-while' indefinidamente e o programa "pendura".
Vamos por partes. Um 'loop for' tem três partes: inicialização, condição e avaliação. No contexto, é algo como:
for(inicialização; condição; avaliação) { aqui vai o código do bloco }
- Inicialização: na primeira parte precisamos indicar como o interpretador deve começar, ou seja, como inicializar o loop. No exemplo, inicializamos o processo declarando uma variável 'i' que contém o valor zero.
- Condição: esta etapa indica a condição que deve ser testada e que determina a permanência (ou saída) do loop - no exemplo, enquanto a variável 'i' tiver um valor menor do que 10.
- Avaliação: é a etapa que indica o que deve ser feito se a condição for verdadeira - no exemplo, incrementar a variável 'i' em 1 (indicado por $i++).
A seguir, escrevemos o bloco de código referente ao 'loop-for'. Este bloco será executado tantas vezes quantas forem verdadeiras as condições testadas ($i < 10), ou seja, o valor da variável 'i' será mostrado na tela enquanto 'i' for menor do que 10. O resultado do exemplo será 0123456789.
Com certeza você já se deparou com muitos formulários enquanto navegava na Internet: quando enviou um email usando serviços de webmail, fazendo algum tipo de cadastro, logando numa área reservada, etc. Um formulário, por si só, não tem muito sentido porque não faz absolutamente nada. Todo formulário precisa estar atrelado a um script que manipule os dados que ele venha a conter depois de preenchido pelo usuário. É aí que o PHP aparece, pois é um dos meios disponíveis.
O PHP lida com formulários de um modo muito flexível, facilitando a vida do programador. Veja um exemplo logo abaixo, onde criamos uma área de formulário com as tags <form ...> e </form> e atrelamos o formulário a um script PHP chamado "lidaForm.php":
Formulários são escritos em HTML e o código HTML mostrado acima resulta no seguinte:
Este formulário contém duas áreas de texto, denominadas "PrimeiroElemento" e "SegundoElemento", além de um botão com o texto "Enviar". Como já foi dito acima, este formulário está atrelado a um script PHP chamado "lidaForm.php". Então vamos ao script:
A variável $_POST, assim como a $_GET, foi introduzida no PHP a partir da versão 4.1.0, ou seja, se a sua versão de PHP for igual ou superior, para obter os valores dos campos do formulário, o script precisa ser modificado para
Crie o script de acordo com a sua versão do PHP e faça o upload ou salve o script como lidaForm.php no mesmo diretório onde se encontra o arquivo HTML que contém o formulário. Abra o HTML no navegador, digite alguns valores nas áreas de texto, clique no botão enviar e observe o resultado. E isso é tudo! Se quiser, utilize o formulário acima como teste. Uma nova página será aberta e, depois de observar o resultado, volte para o tutorial.
A esta altura do campeonato você já deve ter percebido que os nomes dos elementos do formulário se transformam em variáveis do script PHP e que os valores dos elementos do formulário são atribuídos a estas variáveis.
CUIDADO: o PHP trata o nome das variáveis considerando maiúsculas e minúsculas. Isto significa que, por exemplo, "primeiroelemento" é considerado como nome de uma variável diferente de "PrimeiroElemento". Um erro muito comum de programação, que pode deixar qualquer um pirado, é a inobservância desta regra!
Checkbox
Observe o seguinte código HTML:
Este código HTML gera o seguinte formulário:
Criamos um formulário com três elementos: dois checkboxes, "PrimeiroCheckbox" e "SegundoCheckbox", e um botão "Enviar". Agora queremos determinar qual dos dois checkboxes está ativado. Eis o script PHP se a versão for igual ou posterior à 4.1.0. Se a sua versão for anterior, pode deixar as duas primeiras linhas do script de fora:
Áreas de Texto
Segue agora um exemplo que é um pouco mandrake e que costuma ser uma armadilha perigosa para os programadores desatentos. O código HTML é o seguinte:
o que resulta num formulário que contém uma área de texto com linhas múltiplas e um botão para enviar o texto digitado:
O script PHP para obter o valor da variável 'areaDeTexto' é muito simples:
só que o resultado é uma nhaca! A função echo() devolve o texto digitado numa ÚNICA linha! Bem, o problema é o seguinte: quando o texto é digitado na área de texto, o usuário faz quebras de linha digitando a tecla [Enter]. Acontece que o [Enter] insere um caracter de escape '\n' (lembra dos caracteres de escape?) e este caracter de escape NÃO formata o texto da página. Para forçar uma quebra de linha na tela é preciso usar a tag <br>. Como resolver este problema? Facinho, facinho...
A função nl2br() transforma caracteres de escape \n em tags <br>. Seu nome deriva de newline-to-br, ou seja, nova linha para br. Para aqueles que não têm a mínima noção de Inglês, '2' se escreve 'two' e se pronuncia 'tu'. 'Para' se escreve 'to' e também se pronuncia 'tu'. Portanto, nl2br é nl'tu'br :crazy:
Se assim o quiser, você pode observar o resultado dos dois métodos online usando o formulário acima. Depois volte para o tutorial. É claro que existe muito mais a respeito de formulários mas, o que foi visto aqui dá para o gasto. Agora está na hora de dar um trato nas matrizes.
Arrays
Arrays são matrizes e a definição clássica de matriz é "Uma variável que contém múltiplos valores indexados". Normalmente criamos uma variável da seguinte forma:
Este é o exemplo de uma variável de valor único. Agora imagine que a variável $nomeAmigos seja replicada uma porção de vezes e que cada instância possua um identificador ou índice. A coisa ficaria da seguinte forma: $nomeAmigos[0], $nomeAmigos[1], etc. Transformamos a variável $nomeAmigos num array ou matriz. Veja um exemplo em PHP:
Criamos um array cujo nome é 'nomeAmigos'. Este array é constituído por 3 elementos, cada um deles contendo um valor. Cada um deles também é identificado por um 'número índice', denominado chave. O índice, composto pelas chaves, começa com 0. Após inicializar o array, o script encontra a função echo() que deve por na tela o valor do segundo elemento do array, ou seja, o valor de $nomeAmigos[1]. O resultado é, obviamente, 'Carlinhos'.
Se quisermos saber todos os valores de todos os elementos de um array, podemos lançar mão de um 'loop-for'. Veja o exemplo abaixo:
Vamos lá: primeiro definimos cada um dos elementos do array 'nomeAmigos'. Depois usamos um 'loop-for' para atravessar o array: inicializamos a variável $i, testamos a condição $i menor que o número de elementos do array e incrementamos em 1 a mesma variável $i. Neste caso, a variável $i funciona como um contador.
A função que nos permite obter o número de elementos do nosso array é count(), uma função nativa do PHP. No 'bloco-for', que será executado enquanto a condição for verdadeira, colocamos o código que mostra o valor de cada um dos elementos do array, na sequência ditada pelo contador $i.
Na primeira passada do loop, $i possui o valor 0. Neste ponto, $nomeAmigos[$i] pode ser visto como $nomeAmigos[0]. Este elemento contém o valor "Lila", o qual será mostrado na tela. Colocamos uma tag <br> após este valor para forçar uma troca de linha. Na passada seguinte, o valor de $i é 1, de modo que o elemento $nomeAmigos[1] será lido. Ele contém o valor "Carlinhos" que, claro, será mostrado na tela. Nem é preciso dizer que o valor seguinte de $i será 2 e que "Bel" vai para a tela. Na última passada, $i tem o valor 3, a condição do loop torna-se falsa ($i precisa ser menor do que 3), o interpretador abandona o loop e vai para a próxima área do script que, por sinal, é o fim do mesmo.
Algumas vezes os programadores iniciantes se confundem com um pequeno detalhe: o índice de qualquer array, POR CONVENÇÃO, começa com uma chave de valor 0 (zero). Por outro lado, a função count() fornece o número de elementos de um array, no exemplo atual 3 porque o número de elementos é 3 (0, 1, 2 são os 3 elementos). Lembre-se de que a chave do último elemento de um array é sempre o número de seus elementos MENOS 1 porque a numeração começa com 0.
Diferentemente de outras linguagens, o PHP é extremamente flexível quando se trata da indexação de arrays. Veja o exemplo abaixo:
Deu para perceber que podemos numerar ou definir um nome para cada um dos elementos de um array. Aliás, os números nada mais são do que nomes "numéricos". Numerar o primeiro elemento de um array com 0 é apenas uma convenção - você pode usar os números que quiser, na ordem que achar melhor e, mesmo assim, tudo funciona perfeitamente bem. É óbvio que uma certa lógica e que a observância de convenções amplamente aceitas facilitam o seu trabalho e o de outros programadores que queiram verificar o seu código.
A função array()
Até agora nós criamos arrays dando-lhes um nome, chaves e valores. O PHP possui uma função que facilita este trabalho: a função array(). Tecnicamente, array() não é uma função - é um construtor da linguagem PHP. Mas não vamos complicar... Acompanhe o exemplo abaixo:
O que fizemos aqui foi criar um array com 2 chaves denominadas "PHP" e "ASP". O => permite definir o valor do elemento. Para o elemento PHP determinamos o valor "Mordomia" e, para o ASP, demos o valor "Caca" (nada mais do que a triste realidade ). No pequeno script mostrado acima, o texto ecoado para a tela será "Mordomia".
Claro que ainda há muito o que falar a respeito de arrays porém, não se esqueça do nome do tutorial - PHP Rapidinho. Para ser rapidinho, tem que ficar no feijão com arroz. Isto não quer dizer que arrays não sejam importantes. Você vai poder avaliar por conta própria quando começar a escrever uns aplicativos mais parrudos. O importante é entender o princípio da coisa... o resto você encontra nos manuais.
Funções
Funções são perfeitas para programadores preguiçosos... eeepa! Não é por aí! Veja a coisa da seguinte forma: você está escrevendo um aplicativo que vai repetir determinada tarefa um zilhão de vezes. Você vai escrever o mesmo código um zilhão de vezes? É claro que não. O mais fácil é escrever uma função e usá-la toda vez que a tarefa tiver que ser executada.
Encare as funções como ferramentas. Ninguém joga fora a chave de fenda ou o martelo depois que apertou o parafuso ou meteu o prego na parede. O motivo é que, para realizar estas mesmas tarefas, podemos usar novamente as mesmas ferramentas (tá certo que tem neguinho metendo parafuso na parede com martelo, mas isto são outros quinhentos). Vamos a um exemplo de função em PHP:
Vamos martelar, perdão, destrinchar este código: a primeira coisa foi definir uma função, aquela que vai funcionar como ferramenta. Indicamos que estamos criando uma função através da palavra-chave function. Logo a seguir vem o nome da própria, neste caso 'martelo'. Observe que o nome da função é seguido por dois parênteses, assunto ao qual voltaremos logo mais. Em seguida definimos a área do 'bloco da função' com as tradicionais chaves e, nesta área, inserimos o código que deve ser executado quando a função for chamada. A única coisa que a nossa função 'martelo' faz é escrever na tela que martelos americanos fazem bang. Neste ponto, nossa ferramenta está pronta e ainda não aconteceu nada.
O interpretador PHP passa para a próxima linha e encontra uma chamada à função 'martelo' - vai para a área da função e põe na tela "Bang!...". Retorna para a linha de chamada e vai para a próxima. Põe "Bang!..." na tela e volta para encontrar a terceira chamada. Põe "Bang..." na tela e termina o script.
Moral da história: usamos a ferramenta três vezes, porém só escrevemos o código uma vez. A grande vantagem é que esta função pode ser chamada de qualquer ponto do script, ou seja, uma vez definida a função fica à nossa disposição 'for ever'.
Parâmetros de funções
Em algumas ocasiões queremos que uma função seja executada de acordo com alguma "ordem" específica, do tipo bata o martelo com a mão direita ou bata com a mão esquerda (temos que dar uma chance aos canhotos Estas "ordens" são recebidas através de variáveis que são enviadas a funções com o nome de parâmetros. Digamos que a chamada à função martelo indique o tipo de martelo que deve ser usado:
Novamente criamos a função martelo() só que, desta vez, há uma variável entre os parênteses - a variável $tipo. Esta variável é o parâmetro da função. Toda vez que a função for chamada ela espera receber um parâmetro que, neste caso, é do tipo string. O nome dos parâmetros não são importantes porque não é preciso conhecê-los quando se chama a função. Só é preciso enviar parâmetros do tipo certo e na ordem correta.
O parâmetro só será usado dentro da função e seu valor pode ser obtido referindo-se ao nome da variável declarada juntamente com a declaração da função. É claro que, quanto mais explícito for o nome do parâmetro, mais fácil fica programar. $tipo é melhor do que $x, né não?
Outro exemplo:
A esta altura você já sabe que a primeira chamada à função martelo(), agora feliz possuidora de dois parâmetros do tipo string, põe na tela a frase "Batendo na cabeça do gringo o barulho é Bang!" na primeira chamada. Na segunda chamada, o resultado será "Batendo no dedão do alemão o barulho é Kaput!" e, na terceira, "Batendo num ovo o barulho é Póc!". Mas o mais importante é saber que esta função espera dois parâmetros (nem mais e nem menos), do tipo string, que o primeiro se refere ao barulho produzido e o segundo ao lugar. Se sobrarem ou faltarem parâmetros, ou se o tipo não for o correto, as mensagens que você vai receber serão apenas mensagens de erro!
Usando return
Em algumas ocasiões, ao invés de querer que uma função aja diretamente, você precisa que ela retorne algo que possa ser utilizado na sequência do script ou por alguma outra função. As funções anteriores são exemplos de funções que agem diretamente e não devolvem apenas um texto na tela. Quando necessitamos de um retorno, as declarações de 'return' entram em ação. Veja um exemplo de uma destas situações:
Peraí! Este código tá muito complicado! Se é isto o que você está pensando, pode sossegar. Aqui vai a explicação:
- Primeiro definimos uma função chamada 'divideDoisNumeros' que pede dois parâmetros. Esta função simplesmente divide o primeiro parâmetro pelo segundo, guarda o resultado na variável $resultado e, logo em seguida, retorna (return) o valor desta variável. Podemos dizer que ela 'devolve' o resultado.
- Depois disso definimos uma função chamada 'multiplicaDoisNumeros' que também espera dois parâmetros. Esta função multiplica os dois parâmetros e devolve o resultado.
- A seguir, chamamos a função 'divideDoisNumeros'. Se só chamássemos a função divideDoisNumeros(), seu valor de retorno estaria perdido. Como queremos este valor, definimos uma variável denominada 'resultadoDivide' para armazenar o resultado, ou seja, $resultadoDivide é igual ao valor de retorno da função divideDoisNumeros(). Como enviamos os parâmetros 4 e 2, e como sabemos que a função devolve a divisão dos dois parâmetros, fica claro que nossa variável $resultadoDivide acaba guardando o valor 2.
- Depois declaramos a variável $resultadoMultiplica para podermos "caçar" o resultado da função multiplicaDoisNumeros(). O primeiro parâmetro desta função é a variável $resultadoDivide e o segundo é 10. Como sabemos que o valor de $resultadoDivide é 2, multiplicaDoisNumeros($resultadoDivide, 10) é o mesmo que multiplicaDoisNumeros(2, 10). Portanto, a variável $resultadoMultiplica recebe o valor 20 porque a função multiplicaDoisNumeros() multiplica 2*10.
- Daí são dois palitos: a função echo() põe 20 na tela e o script é encerrado. Viu só? Foi menos complicado do que parecia
Predefinindo parâmetros
Agora que você já sabe como funcionam os parâmetros, vamos ver o que vem a ser uma predefinição ou pré-inicialização. Predefinir significa atribuir um valor 'default' a uma variável. Você vai encontrar a palavra 'default' trocentas vezes em textos técnicos, manuais, tutoriais, etc. A tradução literal de default é falta, omissão. Um valor default é o valor que uma variável assume quando nenhum valor lhe é atribuído. Para tornar as coisas um pouco mais claras, veja o exemplo abaixo:
A declaração da função divideDoisNumeros() possui apenas uma diferença em relação à declaração anterior: ao definir o segundo parâmetro, foi-lhe atribuído um valor ($numeroDois = 2). O valor 2 é o valor default do parâmetro $numeroDois.
Quando atribuímos o valor da variável $resultadoDefault, chamamos a função divideDoisNumeros() com apenas um parâmetro. Isto significa que o parâmetro $numeroUm recebe o valor 6 e que o parâmetro $numeroDois nada recebe. Ahá!!! Se nada é atribuído ao parâmetro $numeroDois, então ele assume o valor default e passa a guardar o valor 2. A função divideDoisNumeros() faz a divisão de 6 por 2 e devolve o resultado 3. A função echo() põe $resultadoDefault na tela e vemos o 3 aparecer.
Para atribuir um valor à variável $resultadoControlado, chamamos a mesma função divideDoisNumeros() porém, desta vez, com dois parâmetros. Como atribuímos o valor 3 ao parâmetro $numeroDois da função, não há necessidade de usar o valor default - dizemos que o valor default foi dominado ou controlado. Neste caso, divideDoisNumeros() devolve a divisão de 12 por 3 e a variável $resultadoControlado passa a ter o valor 4.
Dentre todos os elementos do PHP, as funções são um dos mais importantes. O pessoal do PHP já produziu muitíssimas funções que podem ser encontradas no manual da linguagem. Antes de criar suas próprias funções é aconselhável dar uma olhada no manual. Podes crer, você perde menos tempo procurando uma função do que criando uma que já exista.
Manipulação de strings
Uma das tarefas mais chatas para programadores é lidar com dados e a linguagem utilizada não possuir meios adequados para fazê-lo. Geralmente, a manipulação de strings é a pior delas. Mas não no PHP. O pessoal responsável pela linguagem montou um verdadeiro arsenal que facilita a nossa vida. Só temos que agradecer.
O operador ponto
A primeira coisa que você precisa saber sobre strings no contexto PHP é a existência do operador ponto. O operador ponto é usado para concatenar (ou fundir) strings. Veja um exemplo:
A saída efetuada pela função echo() é "Este é um exemplo de concatenação de strings". O operador ponto, colocado entre a variável $variavelTexto e a string literal, tem como resultado a união das duas strings.
É claro que poderíamos ter fornecido o parâmetro da função echo() como "$variavelTexto concatenação de strings", ou seja, colocando a variável dentro das aspas duplas. O resultado seria o mesmo porém, neste caso, o estilo de programação seria considerado meia boca. Existem inúmeras razões para usar o operador ponto. A principal é para manter cada coisa no seu lugar. Um bom programadaor não sobrecarrega o interpretador PHP fazendo com que ele tenha que extrair uma variável que esteja embutida numa string literal. Use e abuse do operador ponto, é para isto que ele foi bolado.
Conversão para maiúsculas e minúsculas
Existem situações nas quais se faz necessário transformar todos os caracteres de determinada string em maiúsculas ou minúsculas (considere a consistência de dados de entrada, por exemplo). A linguagem PHP possui algumas funções muito interessantes para facilitar a tarefa. Segue um exemplo de utilização:
'str to lower' significa 'str para minúsculas' e 'str to upper' significa 'str para maiúsculas'. Estas funções fazem exatamente o que o nome indica. A primeira chamada à função echo() põe na tela "uma string contendo letras maiúsculas" e a segunda põe "UMA STRING CONTENDO LETRAS MAIÚSCULAS".
Note que o parâmetro da função echo() contém uma chamada a uma outra função. Como a função no parâmetro retorna a string modificada, é como se a string modificada estivesse sendo enviada como parâmetro para função echo().
Substrings
Uma substring nada mais é do que um pedaço de uma string. Observe o exemplo:
Para extrair um naco da string 'stringLonga' utilizamos a função substr(), a qual precisa de três argumentos:
- A string da qual queremos extrair a substring
- A posição inicial, onde a substring começa a ser extraída
- O comprimento da substring que deve ser extraída
A primeira posição de uma string é 0 (zero) e não 1 como você poderia pensar (lembra da convenção adotada para os arrays? É a mesma coisa). Pois bem, vamos analisar o que a função substr() faz no nosso código. Ela pega a string $stringLonga, ajusta a posição inicial em 0 (o início da string) e pára de extrair caracteres na quarta posição a partir da posição inicial. O resultado acaba sendo 'Esta'. Se tivéssemos chamado echo() com substr($strLonga, 7, 3), o resultado seria obviamente 'uma'. Confira contando as posições na stringona e lembre-se, espaços são caracteres!
Substituindo partes de strings
Uma das coisas mais chatas de fazer é a substituição de parte de uma string. Não tendo suporte na linguagem, a maioria dos programadores acaba extraindo substrings à esquerda e à direita da porção que deve ser substituída e depois concatenam as duas substrings enfiando o trecho que deve ser substituído entre as duas. Só a explicação já é uma nhaca, imagine o código! Mas o super PHP ataca novamente. Tchan, tchan, tchan, tchan:
É tudo isso e... SÓ isso. A função str_replace() substitui os caracteres 'esquentar' por 'fundir' na string $stringona. Ah! a tradução de 'replace' é 'substituir'.
Explodindo uma string
Não tem nada a ver com ataque terrorista. Explodir uma string significa quebrá-la em pedaços tendo como referência um caracter que indica onde ela deve ser quebrada. Xiii... é melhor dar um exemplo:
Gente, é brincadeirinha. O código acima é brincadeirinha, não serve para nada. Imagine uma função com um nome deste tamanho... xiiihihi. Este tutorial está chegando ao fim e não é agora que vou avacalhar de vez.
Bem, imagine que você tenha uma string delimitada por um determinado caracter. Uma URL, por exemplo. A URL poderia ser "http://www.nomeDoHost.com.br/dir/dir/nomeDoArquivo.ext". Queremos obter apenas o nome do arquivo, então:
Primeiro definimos uma variável que contém a URL. Como queremos apenas extrair o nome do arquivo desta URL, é melhor dividir a string nos seus vários elementos. É fácil perceber que estes elementos estão sendo separados por uma barra (/) portanto, basta utilizar este 'separador' para dividir a string nos seus componentes. É aí que entra a função explode().
A função explode() pede dois parâmetros. O primeiro é o caracter separador e o segundo é a string que deve ser explodida. Esta função retorna um array contendo todos os elementos encontrados entre os separadores. Guardamos este array na variável $cacosDaUrl. O array $cacosDaUrl é devolvido pela função explode() da seguinte forma:
Agora é só pegar o elemento com a chave 3 do array $cacosDaUrl e... missão cumprida. Porém (sempre tem que existir um porém), e se houver mais de um diretório envolvido? Coisa do tipo "http://www.NomeDoHost.com.br/dir1/dir2/NomeDoArquivo.ext"? Então pegamos o elemento de chave 4. Mas, e se não soubermos de antemão a posição do nome do arquivo? Raciocine: o nome do arquivo é SEMPRE o último elemento do array. Uma das formas de obtê-lo é calculando a chave do último elemento contando o número de elementos. Outra solução é inverter as posições dos elementos, ou seja, o último será o primeiro (elemento 0), o penúltimo o segundo, e assim por diante. Assim temos certeza da posição do nome do arquivo na chave 0. A função count(), que devolve o número de elementos de um array você já conhece. Então, vamos dar uma olhada na segunda alternativa, a que foi utilizada no exemplo.
Criamos a variável $arrayReverso para poder armazenar o valor de retorno da função array_reverse(). Esta função faz exatamente o que estamos precisando. Enviamos como parâmetro o array $cacosDaUrl e recebemos de volta um array com todos os elementos invertidos, ou seja, o nome do arquivo estará na posição 0. Daí, para conferir, basta dar um echo() em $arrayReverso[0].
Finalmentes
O tutorial PHP Rapidinho termina por aqui. Por incrível que pareça, com estas noções iniciais você pode fazer milagres. Expandir seus conhecimentos agora fica por sua conta. Use e abuse das funções nativas do PHP. Use e abuse da imaginação e da criatividade - para todo problema existe pelo menos uma solução. Dentre várias soluções à sua escolha, existe sempre uma que é mais elegante e que, não por acaso, geralmente é a mais simples.
Usando a função strtoupper() e com todas as letras, quero agradecer ao Leendert Brouwer, pois descaradamente usei seu tutorial (cujo link não existe mais) como roteiro. Devo confessar que a maior parte do texto é do Leendert. Praticamente só fiz a tradução e, como não podia deixar de ser, traduzi do meu jeito e adicionei algumas muitas coisinhas.
Se você tiver dúvidas, sugestões ou quiser que este tutorial passe de rapidinho para maiorzão, entre em contato. Será um prazer ajudar. E, como sempre
Um grande abraço da
vovó Vicki