Você está na página 1de 150

500

Desenvolvimento Web com PHP

www.4linux.com.br
Capítulo 1

Introdução
4Linux – www.4linux.com.br Introdução

1.1 Sobre o curso

Neste curso iremos aprender o que é o PHP, entender como a linguagem funciona
e conhecê-la a fundo. O curso é recomendado para qualquer um interessado em
começar a desenvolver aplicações para a web. Se você já possui experiência com
alguma outra linguagem de programação, você entenderá os conceitos apresenta-
dos aqui rapidamente, mas o curso e a apostila irão assumir que você não possui
nenhuma experiência com desenvolvimento de software.

O curso Desenvolvimento Web com PHP (500) é o primeiro curso da Formação PHP
da 4Linux. Este curso de PHP foi desenvolvido para apresentar o poder do PHP
a quem teve algum contato com a linguagem ou programadores PHP que desejam
aprimorar seus conhecimentos e se atualizar. Ao longo do curso de PHP da 4Linux
serão desenvolvidos dois projetos: um microblog (similar ao Twitter) e um sistema de
blog (similar ao Wordpress), conhecendo a fundo e aplicando as funcionalidades da
linguagem PHP.

Além de preparar o aluno para o mercado de trabalho, as aulas são estruturadas de


forma que durante todo curso o aluno receba dicas e macetes relacionadas a parte do
conteúdo para a Certificação Zend PHP 5.3. Com os três cursos da Formação PHP
da 4Linux o aluno tem 100% do conteúdo necessário para a prova da Certificação
Zend. PHP 5.3.

Durante as aulas o instrutor apresentará conceitos e através de exercícios práticos


fixará o conteúdo. Ao final deste curso o aluno estará pronto para criar aplicações
web com a linguagem de programação PHP, utilizando os principais bancos de dados
open source como MySQL, PostgreSQL e SQLite, além de conhecer e poder decidir
qual a melhor ferramenta para o trabalho certo.

Desenvolvimento Web com PHP Página 2


4Linux – www.4linux.com.br Introdução

1.2 Sobre a 4Linux

Há mais de 10 anos a 4Linux oferece cursos, soluções e serviços de T.I. baseados em


softwares livres e padrões abertos para ambientes de missão crítica. Já treinou mais
de 40.000 alunos e possui a maior oferta mundial de cursos baseados em softwares
livres (mais de 50 cursos) nas modalidades presenciais e e-learning (à distância pela
internet).

Desde 2006 presta suporte a softwares livres em ambientes de missão crítica para
a Caixa Econômica Federal, um dos principais cases mundiais de uso de padrões
abertos: atualmente quando um cidadão faz uma aposta nas loterias, saca um di-
nheiro em um ATM (caixa eletrônico), recebe um SMS com o saldo de seu FGTS ou
simula o valor de um financiamento imobiliário no ’feirão’ da casa própria, ele está
usando uma infraestrutura baseada em softwares livres com serviços prestados pela
4Linux.

Além da Caixa a 4Linux realizou algumas das mais conhecidas implementações de


software livre do Brasil, entre eles: Metrô de São Paulo, Casa da Moeda do Brasil,
Ceagesp e Projeto CDTC (Centro de Difusão de Tecnologia e Conhecimento) – uma
parceria entre a IBM e o ITI – que envolveu, entre outras ações, a maior capacitação
em Linux do Brasil: 785 educadores do MEC foram treinados em Linux pela 4Linux.
Conheça nossos cases e clientes.

Idealizadora do HackerTeen – projeto de edutainment (entretenimento educacional)


para jovens da geração internet sobre segurança da computação, empreendedo-
rismo na Internet e ética hacker – que, com uma metodologia inovadora, foi avaliado
como “primeiro e único no mundo” pela Harvard Business School.

Desenvolvimento Web com PHP Página 3


4Linux – www.4linux.com.br Introdução

1.3 Aula Zero

O foco principal do PHP como linguagem é a web, portanto, é necessário que você
tenha um conhecimento sobre outras tecnologias para a web, como HTML e CSS.
Além disso, para facilitar seu aprendizado, ter boas noções de lógica de programação
é ideal. Para suprir essa necessidade a 4Linux preparou o Aula Zero, um conteúdo di-
gital exclusivo com tudo que você precisa saber sobre lógica de programação, HTML
e CSS.

Desenvolvimento Web com PHP Página 4


4Linux – www.4linux.com.br Introdução

1.4 A linguagem PHP

Sem mais delongas, bem-vindo ao mundo do PHP, a 5º linguagem de programação


mais utilizada no mundo segundo o TIOBE e a mais popular no desenvolvimento de
aplicações para web. Segundo o Netcraft, mais de 30 milhões de servidores web
possuem o PHP instalado. Se formos pensar em grandes casos de uso, podemos
citar os gigantes Yahoo, Wikipedia, Facebook, Flickr, Digg, entre outros. Com o lan-
çamento da versão 5.3, o PHP nunca esteve mais pronto para o desenvolvimento
sério e robusto de aplicações, contando com um suporte sólido e moderno ao para-
digma de programação orientada a objetos e inúmeras extensões disponíveis para
diversas tecnologias.

O PHP surgiu em meados de 1994, criado por Rasmus Lerdorf como um pacote
de programas CGI. Em 1997, dois desenvolvedores israelitas, Zeev Suraski e Andi
Gutmans, entraram no projeto e reescreveram grande parte do código do PHP. Junto
com Rasmus, lançaram a versão 3.0 do PHP em junho de 2008. Para a próxima
versão, Zeev e Andi decidiram reescrever o core do projeto do zero, chamando-o de
Zend Engine. Esta nova versão, PHP 4, foi lançada em maio de 2000, contando com
funcionalidades novas como gerenciamento de sessão, buffer de saída e suporte
a vários servidores web. Infelizmente, a versão 4 ainda sofria com uma péssima
implementação do paradigma de programação orientada a objetos, então em julho de
2004, foi lançada a versão 5 do PHP, que trouxe várias novidades para a linguagem
e um jeito completamente novo de programar PHP.

Desenvolvimento Web com PHP Página 5


Capítulo 2

Servidor Web
4Linux – www.4linux.com.br Servidor Web

2.1 Como funciona um servidor web

Um servidor web é um programa de computador, responsável por receber requisi-


ções do protocolo HTTP, tomar ações com base nessas requisições e enviar respos-
tas também no protocolo HTTP. Por exemplo, quando digitamos uma URL em nosso
browser, estamos pedindo um arquivo que está em algum computador com um ser-
vidor web instalado. Este computador pode estar localizado na casa ao lado ou em
um gigantesco datacenter.

O servidor web irá interpretar seu pedido, localizar a página no sistema de arquivos
da máquina e entregar o conteúdo da página para seu navegador, que irá intepretar
o código HTML da página e mostrá-lo para você. No caso de arquivos de música,
vídeo, etc, o navegador vai oferecer o download ao invés de mostrar o conteúdo.

Desenvolvimento Web com PHP Página 7


4Linux – www.4linux.com.br Servidor Web

2.2 Como funciona o PHP

Quando uma página é requisitada ao nosso servidor web, ele irá procurar pela pá-
gina requisitada no sistema de arquivos, e caso ele encontre, o conteúdo desta pá-
gina será exibido. Se esta página possuir hipertexto (HTML), vocês já sabem o que
acontece: teremos uma página web sendo exibida. O PHP funciona como uma etapa
extra.

Caso uma página PHP seja requisitada, o servidor web irá procurar pela página no
sistema de arquivos e, caso exista algum código PHP dentro desta, ele irá chamar
o PHP, que interpretará o código e retornará os dados. A sigla PHP é um acrônimo
recursivo que significa PHP: Hypertext Preprocessor, que mostra claramente o intuito
da linguagem processar informações e gerar hipertexto (HTML).

Abaixo podemos ver um exemplo de uma página HTML simples:

1 <html >
2 <head >
3 < title > Teste </ title >
4 </ head >
5 <body >
6 <p > Hoje é dia 10/10/2010 </ p >
7 </ body >
8 </ html >

E aqui, um exemplo do PHP em ação:

1 <html >
2 <head >
3 < title > Teste </ title >
4 </ head >
5 <body >
6 <p > Hoje é dia <? php echo date ( ’ d / m /Y ’) ; ? > </p >

Desenvolvimento Web com PHP Página 8


4Linux – www.4linux.com.br Servidor Web

7 </ body >


8 </ html >

Desenvolvimento Web com PHP Página 9


4Linux – www.4linux.com.br Servidor Web

2.3 Instalando o Apache

Antes de começarmos a programar, precisamos instalar um servidor web em nosso


computador para que ele aceite requisições de nosso navegador e entregue páginas.
Vamos instalar o Apache, um software servidor web 100% livre e open-source. No
Debian, podemos instalar utilizando o pacote apache2.

1 apt - get install apache2

Pronto, nosso servidor web está instalado. Para termos certeza que ele está funcio-
nando, vamos entrar em nosso endereço web local:

1 http :// localhost

O diretório /var/www contém os arquivos que são mostrados em nosso localhost.


Lá está a página index.html que contém a mensagem exibida quando entramos no
endereço localhost em nosso navegador.

Desenvolvimento Web com PHP Página 10


4Linux – www.4linux.com.br Servidor Web

2.4 Instalando o PHP

Uma vez que temos o Apache instalado, ele já pode servidor páginas e arquivos.
Mas ele ainda não consegue intepretar arquivos PHP porque nós não instalamos o
PHP nesta máquina. Vamos fazer isso, instalando o pacote php5.

1 apt - get install php5

Para que o apache possa começar a intepretar nossas páginas PHP, precisamos
reiniciá-lo. Vamos fazer isso rodando o seguinte comando:

1 / etc / init . d / apache2 restart

Está na hora de testar. Renomeie o arquivo index.html na pasta /var/www para in-
dex.php. Agora, abra o arquivo e coloque o código a seguir dentro dele:

1 <? php
2
3 echo " Oi mundo " ;

Vamos acessar o endereço localhost em nosso navegador. Se aparecer uma men-


sagem dizendo "Oi mundo", tudo está instalado corretamente e pronto para come-
çarmos a nos divertir com o PHP!

Desenvolvimento Web com PHP Página 11


Capítulo 3

PHP
4Linux – www.4linux.com.br PHP

3.1 Sintaxe básica

A sintaxe do PHP deriva de várias linguagens diferentes, predominantemente C. A


linguagem Perl foi responsável por influenciar a sintaxe do PHP. Com as novas funci-
onalidades de programação orientada a objetos, o PHP incorpora elementos de Java
e C#. Embora o PHP incorpore elementos de linguagens tão diferentes, sua sintaxe
se mantém simples e fácil de entender.

Quando criamos uma página, geralmente utilizamos a extensão .html. Quando criar-
mos páginas que possuem código PHP, vamos utilizar a sessão .php. Dentro desta
página, podemos colocar HTML e PHP misturados, desde que utilizemos algumas
tags específicas para delimitar o que é um código PHP. Para definirmos o que é um
código PHP dentro de uma página, utilizamos as tags:

1 <? php
2 ?>

Existem também outras tags, como as short tags:

1 <?
2 ?>

As ASP tags, "roubadas"do ASP:

1 <%
2 %>

E também, a tag <script>:

1 < script language = " php " > </ script >

Desenvolvimento Web com PHP Página 13


4Linux – www.4linux.com.br PHP

• As short tags (<? ?>) precisam ser ativadas no arquivo de configuração do


PHP antes de serem utilizadas. A opção é short_open_tags. O seu uso, no
entanto, não é recomendado, já que elas conflitam com as tags de XML e foram
depreciadas em versões futuras.

• As tags ASP e script serão depreciadas nas versões futuras do PHP, portanto,
não as use!

• Caso você esteja criando uma página que só possua código PHP, não é neces-
sário utilizar a tag de fechamento (?>).

Olá Mundo

Em todos os cursos de programação, temos um exemplo cujo objetivo é ensinar o


aluno a colocar um texto na tela. Não podemos fazer diferente!

O código abaixo faz uso do comando echo, que permite que você envie dados para
a tela. A tela, no nosso caso, é o navegador. Note que o comando print faz a mesma
coisa que o echo.

1 <? php
2
3 echo ’Ol á mundo ! ’;
4 print ’Ol á mundo ! ’;

Comentários

Também podemos adicionar comentários em nossos códigos. Comentários serão


ignorados pelo PHP e são importantíssimos para manter nosso código limpo e orga-
nizado.

1 <? php
2 // Coment á rio de uma linha

Desenvolvimento Web com PHP Página 14


4Linux – www.4linux.com.br PHP

3
4 # Coment á rio de uma linha
5
6 /* Coment á rio
7 com vá rias
8 linhas
9 */
10
11 echo " teste " ; // Coment á rio

Desenvolvimento Web com PHP Página 15


4Linux – www.4linux.com.br PHP

3.2 Variáveis e constantes

Variáveis são essenciais em qualquer linguagem de programação. Elas servem para


guardar informações. Pense nelas como gavetas onde guardamos coisas e essas
gavetas possuem etiquetas de nome. No PHP, nomes de variáveis são precedidos
do símbolo $.

1 <? php
2 $nome = " Jo ã o " ;
3 $email = " joao@gmail . com " ;
4 $time = " Gr ê mio " ;

Em nossas gavetas imaginárias, $nome $email $time, estamos guardando algumas


informações. No exemplo abaixo, iremos colocar na tela o nome do time do João:

1 <? php
2 $time = " Gr ê mio " ;
3 echo $time ;

Nomes válidos

Precisamos ter alguns cuidados ao nomear nossas variáveis. São eles:

• Nunca inicie o nome de uma variável com um número

• Nunca use espaços em branco

Desenvolvimento Web com PHP Página 16


4Linux – www.4linux.com.br PHP

• Nunca use caracteres especiais, apenas underline

• Evite criar variáveis com nomes gigantes, abrevie sempre que possível

• Evite criar nomes sem sentido, como $a ou $xyz. O nome da variável deve
ajudar o programador, não confundi-lo

• Evite utilizar letras maiúsculas

Variáveis variáveis

No PHP, podemos definir variáveis cujos nomes são... variáveis! Isso pode ser feito
de maneira bastante simples:

1 <? php
2 $var = " time " ;
3 $$var = " Gr ê mio " ;
4 echo $time ;

Observe que o valor da variável $var está sendo utilizado como nome de variável
durante a atribuição de valor, criando de forma dinâmica a variável $time.

Constantes

Uma constante é como uma variável, mas como seu nome pode indicar, seu valor é
sempre constante, invariável. O valor de uma constante jamais poderá ser alterado
em tempo de execução. Para definirmos uma constante, utilizamos a função define()
do PHP.

1 <? php
2 define (" VERSAO " , 2)
3 echo VERSAO ;

Desenvolvimento Web com PHP Página 17


4Linux – www.4linux.com.br PHP

Constantes estão disponíveis por todo nosso script, inclusive dentro de funções que
veremos logo logo. As regras de nomenclatura das constantes são as mesmas das
variáveis. Contudo, é uma boa prática usar sempre letras maiúsculas e underline.
Ex.: MELHOR_TIME, LIMITE_CAMPOS

Desenvolvimento Web com PHP Página 18


4Linux – www.4linux.com.br PHP

3.3 Tipos de variáveis

Variáveis podem guardar qualquer informação. E cada informação possui um tipo


diferente. Em outras linguagens de programação, é necessário declarar este tipo
junto com o valor e o nome da variável. Mas o PHP possui tipagem dinâmica, o
que significa que ele sabe o que é um texto (string) e um número (integer, float),
dependendo do contexto onde essa informação é utilizada.

O PHP possui os seguintes tipos: Boolean, Integer, Float, String, Array, Objeto, Re-
curso, NULL

Boolean

Uma variável booleana pode conter apenas dois valores, true ou false. Booleanos
são a base das operações lógicas em nossas aplicações. Já que no PHP temos
tipagem dinâmica, um valor booleano por ter várias formas. True pode ser 1, false
pode ser 0, null ou uma string vazia.

Integer

Um integer é um número inteiro, podendo ser negativo ou positivo. Números inteiros


possuem formas de notação diferentes:

• Decimal: 10, -11, 1452

• Octal: 0666, 0100

• Hexadecimal: 0x123, 0XFF, -0x100

Float

Um float, também chamado de double, é um ponto flutuante, um formato digital para


representar números reais. Assim como os inteiros, possuem formas de notação:

Desenvolvimento Web com PHP Página 19


4Linux – www.4linux.com.br PHP

• Decimal: 0.12, 1234.43, -.123

• Exponencial: 2E7, 1.2e2

String

Uma string é geralmente um texto, mas para sermos mais corretos na definição, é
uma sequência ordenada de caracteres. Podemos usar como texto, mas seu con-
teúdo também pode ser binário, como o conteúdo de um arquivo MP3 ou JPG.

Array

Um array é uma estrutura de dados ordenados, que mantém uma série de elementos
que podem ter diferentes tipos. Arrays são importantíssimos e saberemos mais sobre
eles mais na frente.

Objeto

Um objeto é uma estrutura de dado e código, formando a base da programação


orientada a objetos.

Recurso

Um recurso é um recurso externo utilizado nativamente pelo PHP. São, por exemplo,
conexões abertas com um banco de dados ou conexões abertas com um arquivo no
sistema.

NULL

Uma variável NULL indica que ela não possui valor algum. Uma variável é conside-
rada nula quando recebe o valor NULL ou nunca recebeu valor algum.

Confira no exemplo abaixo os tipos de variáveis em ação no PHP:

Desenvolvimento Web com PHP Página 20


4Linux – www.4linux.com.br PHP

1 <? php
2 $v_ou_f = true ;
3 $inteiro = 10;
4 $flutuante = 5.22;
5 $string = " Testando " ;
6 $array = array ( ’a ’ , ’b ’ , ’c ’) ;
7 $objeto = new Objeto ;
8 $recurso = fopen ( ’ arquivo ’ , ’r ’) ;
9 $null = NULL ;

3.3.1 Pseudo-tipos

Durante a leitura desta apostila, exercícios em aula e até mesmo pesquisas na inter-
net, você encontrará vários menções a alguns tipos de variáveis conhecidos como
pseudo-tipos. Eles são utilizados como referências a situações específicas que ocor-
rem durante o desenvolvimento de uma aplicação.

mixed

O tipo mixed é utilizado para indicar que uma função pode esperar ou retornar mais
de um tipo de variável ao mesmo tempo. Por exemplo, uma função pode retornar
uma string ou um booleano, enquanto pode receber como parâmetro um array ou
string.

number

O tipo number é utilizado para indicar que a variável pode ser um inteiro ou um
float.

callback

Algumas funções no PHP podem esperar como parâmetro uma outra função definida
pelo usuário. Chamamos essas funções passadas como parâmetro de callbacks.

Desenvolvimento Web com PHP Página 21


4Linux – www.4linux.com.br PHP

3.3.2 Manipulação de tipos

Como vimos, a tipagem do PHP é dinâmica. Isso significa que, dependendo do


contexto, a linguagem fará uma conversão automática entre os tipos de variáveis
conhecidos, escolhendo a mais apropriada para a situação.

No exemplo abaixo, podemos analisar o comportamento de linguagem enquanto uti-


lizamos o operator de soma com algumas variáveis.

1 <? php
2 $var = "0 " ; // $var é uma string
3 $var += 2; // $var agora é um inteiro
4 $var = $var + 1.3; // $var agora é um float
5 $var = 5 + " 10 carros " ; // inteiro ( $var = 15)
6 $var = "1 casa " + " 1 casa " ; // inteiro ( $var = 2)

3.3.3 Conversão de tipos

Embora a tipagem do PHP seja dinâmica, podemos forçar os tipos de nossas va-
riáveis utilizando uma técnica conhecida como type casting, ou conversão de tipos.
Veja no exemplo abaixo como podemos forçar os tipos de algumas variáveis:

1 <? php
2 $var = 10;
3 $cast = ( boolean ) $var ; // torna - se booleano
4 $cast = ( int ) $var ; // torna - se inteiro
5 $cast = ( float ) $var ; // torna - se float
6 $cast = ( string ) $var ; // torna - se string
7 $cast = ( array ) $var ; // torna - se array
8 $cast = ( object ) $var ; // torna - se object
9 $cast = ( unset ) $var ; // torna - se NULL
10 $cast = ( binary ) $var ; // torna - se uma string bin á ria

Desenvolvimento Web com PHP Página 22


4Linux – www.4linux.com.br PHP

Desenvolvimento Web com PHP Página 23


4Linux – www.4linux.com.br PHP

3.4 Operadores

Bom, até agora aprendemos o que são variáveis, como criá-las e como associar va-
lores a elas. Mas a vida de um desenvolvedor seria muito chata se isso fosse tudo
que pudéssemos fazer com elas. Vamos conhecer agora operadores, que permi-
tem que nós manipulemos o conteúdo de uma ou mais variáveis, produzindo novas
variáveis.

Operadores Aritméticos

Podemos utilizar operadores aritméticos para efetuar cálculos com os valores de


variáveis, transformando os resultados desses cálculos em variáveis, que por sua
vez, também podem ser manipuladas. Por exemplo:

1 <? php
2 $a = 3;
3 $b = 3;
4 $c = $a * $b ; // resultado é 9
5 $d = $a + $b ; // resultado é 6
6 $e = $c - $d ; // resultado é 3

Os operadores aritméticos disponíveis são:

• Adição: +

• Subtração: -

• Multiplicação:

• Divisão: /

• Módulo: %

Desenvolvimento Web com PHP Página 24


4Linux – www.4linux.com.br PHP

Lembrando que o PHP possui tipagem dinâmica. Portanto:

1 <? php
2 $a = "5"; // string
3 echo $a + 2; // 7 , integer
4 echo $a + ’5 carros ’; // 10 , integer

Operadores de Atribuição

No PHP, utilizamos operadores de atribuição para definir variáveis e seus valores.


Contudo, também podemos mesclar os operadores de atribuição com operadores
aritméticos, deixando o código mais limpo e seu trabalho mais ágil.

1 <? php
2 $a = 1; // A vari á vel $a é igual a 1
3 $a += 2; // Somamos 2 ao valor da vari á vel $a
4 $a -= 2; // Subtraimos 2 ao valor da vari á vel $a
5 $a *= 2; // Multiplicamos o valor da vari á vel $a por 2
6 $a /= 2; // Dividimos o valor da vari á vel $a por 2

Podemos também incrementar ou decrementar variáveis utilizando os operadores de


incrementação, herdados da linguagem C.

1 <? php
2 $a = 1;
3 echo ++ $a ; // Incrementamos 1 e retornamos o valor
4 echo $a ++; // Retornamos o valor e incrementamos 1
5 echo -- $a ; // Decrementamos 1 e retornamos o valor
6 echo $a - -; // Retornamos o valor e decrementamos 1

Operadores Relacionais

Desenvolvimento Web com PHP Página 25


4Linux – www.4linux.com.br PHP

Operadores relacionais são usados para comparar valores ou expressões, retor-


nando um valor booleano (true ou false). São eles:

• Igual: ==

• Idêntico: ===

• Diferente: != ou <>

• Menor que: <

• Maior que: >

• Menor ou igual: <=

• Maior ou igual: >=

Devido a tipagem dinâmica do PHP, você deve tomar alguns cuidados quando es-
tiver criando expressões lógicas envolvendo valores booleanos. Se você fizer uma
comparação utilizando o operador ==, o número inteiro 0 será igual ao booleano
false, assim como NULL e uma string vazia. Isso pode não trazer bons resultados.
Portanto, utilize sempre o operador ===, que checará não somente o conteúdo da
variável, e sim, o tipo dela.

Operadores Lógicos

Existem também os operadores lógicos, que são utilizados para combinar expres-
sões lógicas, criando testes condicionais. São eles:

• $a and $b

E: enquanto A e B forem verdadeiros

• $a or $b

Desenvolvimento Web com PHP Página 26


4Linux – www.4linux.com.br PHP

OU: enquanto A ou B forem verdadeiros

• $a xor $b

XOR: enquanto A ou B forem verdadeiros, mas não os dois

• ! $a

NOT: Verdadeiro se A for falso

• $a && $b

E: enquanto A e B forem verdadeiros

• $a || $bb

OU: enquanto A ou B forem verdadeiros

Desenvolvimento Web com PHP Página 27


4Linux – www.4linux.com.br PHP

3.5 Strings

Uma string é, nada mais nada menos, que um texto. Para declarar uma string, utili-
zamos aspas simples ” ou aspas duplas .

1 <? php
2 echo " Testando " ;
3 echo ’ Testando ’;

Existe uma diferença bem clara entre a utilização de aspas duplas e aspas simples:
O modo como o PHP interpreta o conteúdo delas. Diferentemente das aspas simples,
as aspas duplas permitem que você faça uso de caracteres de escape e variáveis
dentro de uma string.

1 <? php
2 $nome = ’ Jo ão ’;
3 echo " $nome e Maria andam pela rua < br / > " ;
4 echo ’ $nome e Maria andam pela rua ’;

Ao contrário do que muitos pensam, não existe diferença alguma de performance en-
tre o uso de aspas duplas ou simples. O fato das aspas duplas fazerem substituição
de variáveis pelos seus respectivos valores não torna o código mais lento.

Caracteres de escape

Ao usar aspas duplas, é necessário conhecer alguns caracteres de escape. São


eles:

1 Quebra de linha : \ n
2 Tabula ção : \ t
3 Retorno do carro : \ r

Desenvolvimento Web com PHP Página 28


4Linux – www.4linux.com.br PHP

4 A pr ó pria barra : \\
5 Aspas simples : \ ’
6 Aspas duplas : \ "

Vamos entender melhor usando o exemplo abaixo:

1 <? php
2 echo " <pre > Vou quebrar a linha \ n " ;
3 echo "\ tEstou tabulado \ n " ;
4 echo " Mostrar aspas duplas , sem quebrar o c ó digo \ " \ n " ;
5 echo " Mostrar a barra \\ " ;
6 echo " </ pre > " ;

Navegadores, por padrão, não exibem caracteres de escape. Novas linhas e tabula-
ções que forem colocadas em strings só serão exibidas em texto puro, isto é, caso
você salve a string em um arquivo de texto. Para mostrar caracteres de escape no
navegador, é comum utilizar a tag HTML <pre>.

Concatenação

Ao se trabalhar com strings, podemos concatená-las e obter resultados interessan-


tes.

1 <? php
2 $carro = ’Gol ’;
3 $cor = ’Azul ’;
4
5 $meucarro = $carro . $cor ;
6 $outrocarro = ’ Meu ’. $carro . ’ é ’. $cor . ’ ’;
7
8 echo $meucarro ;
9 echo $outrocarro ;

Desenvolvimento Web com PHP Página 29


4Linux – www.4linux.com.br PHP

Evite concatenar string quando seu único objetivo é colocar o valor de uma variável
dentro da outra. Para esse fim podemos utilizar as aspas duplas.

Desenvolvimento Web com PHP Página 30


4Linux – www.4linux.com.br PHP

3.6 Estruturas de controle

No PHP, assim como em outras linguagens, possuímos estruturas de controle que


permitem que criemos um fluxo em nosso programa. Uma dessas estruturas é a
condição. Caso algo seja verdadeiro, faça isto, senão, faça aquilo. No PHP, isso é o
IF/ELSE.

1 <? php
2 $idade = 15;
3 if ( $idade < 18) {
4 echo ’ Voc ê n ã o pode entrar aqui ! ’;
5 } else {
6 echo ’Bem - vindo ao Bar ! ’;
7 }

Observe que estamos comparando o valor de uma variável utilizando os operadores


relacionais. Se o valor da variável $idade for menor que 18, executaremos o bloco
de código contido entre as chaves do if. Caso contrário, executaremos o bloco de
código contido entre as chaves do else.

Podemos também utilizar os operadores lógicos junto dos operadores relacionais,


criando expressões mais complexas que atendem melhor nossos problemas:

1 <? php
2 $idade = 21;
3 $carteirinha = true ;
4 if ( $idade > 18 && $carteirinha == true ) {
5 echo ’Bem - vindo ! ’;
6 }

Elseif

Desenvolvimento Web com PHP Página 31


4Linux – www.4linux.com.br PHP

Além do IF/ELSE básico, podemos fazer uso do controle ELSEIF, que permite que
criemos uma outra condição, além da principal.

1 <? php
2 $nome = ’Z é ’;
3 if ( $nome == ’Z é ’) {
4 echo ’Ea í Z é ! ’;
5 } elseif ( $nome == ’ Maria ’) {
6 echo ’Ea í Maria ! ’;
7 } else {
8 echo ’Ea í ningu é m ! ’;
9 }

Switch

O ELSEIF pode ser muito útil, mas e quando tivermos muitas condições? Fica ruim
de manter um código cheio de ELSEIF’s. É aí que entra o SWITCH. O switch permite
que criemos infinitas condições de forma bastante simples e organizada:

1 <? php
2 $nome = ’Z é ’;
3 switch ( $nome ) {
4 case ’Z é ’:
5 echo ’ Ea í Z é ! ’;
6 break ;
7
8 case ’ Maria ’:
9 echo ’ Ea í Maria ! ’;
10 break ;
11
12 case ’ Darth ’:
13 echo ’ Ea í Vader ! ’;
14 break ;
15
16 case ’ Curinga ’:

Desenvolvimento Web com PHP Página 32


4Linux – www.4linux.com.br PHP

17 echo ’ Ea í Curinga ! ’;
18 break ;
19
20 default :
21 echo ’ Ea í rap á ? ’;
22 break ;
23 }

Operador Ternário

Existe no PHP uma forma mais "curta"de criar condições. Ele é chamado de Opera-
dor Ternário. Embora ele deixe o código menos legível para programadores menos
experientes, ele nos salva tempo e o código torna-se mais limpo.

1 <? php
2
3 $a = 1;
4 $b = 0;
5
6 if ( $a > $b ) {
7 $c = ’A é maior que B ’;
8 } else {
9 $c = ’A n ã o é maior que B ’;
10 }
11
12 $d = ( $a > $b ) ? ’A é maior que B ’ : ’A n ã o é maior que B ’;
13
14 echo $c ;
15 echo $d ;

Desenvolvimento Web com PHP Página 33


4Linux – www.4linux.com.br PHP

3.7 Loops

Os loops no PHP são estruturas de controle muito importantes. Eles permitem que
efetuemos um laço de repetição enquanto uma determinada condição for verdadeira.
Temos quatro tipos de loop no PHP: while, do while, for e foreach. O foreach foi
construído especialmente para lidar com arrays, portanto, vamos conhecê-lo mais
tarde.

while

O while permite que executemos um bloco de código enquanto a expressão que foi
passada como parâmetro seja verdadeira.

1 <? php
2
3 $contador = 0;
4
5 while ( $contador < 10) {
6 echo $contador ;
7 $contador ++;
8 }

Neste caso, contamos até 10. Observe que estamos incrementando o valor da variá-
vel logo depois de colocá-la na tela. Fiz dessa maneira para que ficasse mais claro
para vocês, mas poderíamos fazer o mesmo da seguinte forma:

1 <? php
2
3 $contador = 0;
4
5 while ( $contador < 10) {
6
7 echo $contador ++;

Desenvolvimento Web com PHP Página 34


4Linux – www.4linux.com.br PHP

8
9 }

do while

O do while funciona da mesma forma que o while, com apenas uma diferença: Ele
avalia a expressão depois de fazer algo. Isso garante que o código seja executado
ao menos uma vez, mesmo que a expressão não seja verdadeira.

1 <? php
2
3 $contador = 1;
4
5 do {
6
7 $quadrado = $contador * $contador ;
8 echo "O quadrado de $contador é $quadrado < br / > " ;
9 $contador ++;
10
11 } while ( $contador <= 10) ;

Esse exemplo é similar ao exemplo anterior. Mas vamos supor que a variável $con-
tador não seja 0, seja 12 (maior que 10, portanto, falhando nossa condição). O do
while garantirá que nosso bloco de código será executado apenas uma vez, mesmo
a condição sendo falsa.

for

O for é uma estrutura de controle muito similar ao while e ao do while. Contudo,


ele é mais sofisticado e permite que executemos três expressões em sua condição,
separadas por ponto e vírgula. A primeira é executada ao início do loop, a segunda é
a condição (enquanto ela for verdadeira, o loop continuará), e a terceira é executada
ao fim de cada repetição.

Desenvolvimento Web com PHP Página 35


4Linux – www.4linux.com.br PHP

1 <? php
2
3 for ( $contador = 1; $contador <= 10; $contador ++) {
4
5 $quadrado = $contador * $contador ;
6 echo "O quadrado de $contador é $quadrado < br / > " ;
7
8 }

Quebrando loops

Enquanto estamos dentro de um loop, podemos utilizar duas instruções: continue


e break. Elas permitem que nós quebremos os laços de repetição. O continue irá
ignorar todas as instruções após sua inserção e irá para o próximo elemento no
loop. O break irá quebrar o loop onde for inserido e nenhum outro elemento será
interpretado.

1 <? php
2
3 for ( $contador = 1; $contador <= 10; $contador ++) {
4
5 if ( $contador == 3) { continue ; }
6
7 $quadrado = $contador * $contador ;
8 echo "O quadrado de $contador é $quadrado < br / > " ;
9
10 }

Note que nosso contador irá pular o terceiro item do loop. Nosso if retornou verda-
deiro, portanto, o bloco de código contido nele foi executado. O bloco de código era
o continue, que fez com que a execução do loop fosse pulada naquele momento,
deixando de executar a conta do quadrado e nosso echo.

Desenvolvimento Web com PHP Página 36


4Linux – www.4linux.com.br PHP

1 <? php
2
3 for ( $contador = 1; $contador <= 10; $contador ++) {
4
5 if ( $contador == 3) { break ; }
6
7 $quadrado = $contador * $contador ;
8 echo "O quadrado de $contador é $quadrado < br / > " ;
9
10 }

Observe agora que, ao invés de pular o terceiro item, nosso contador parou por ali.
O break finaliza a execução do loop.

Desenvolvimento Web com PHP Página 37


4Linux – www.4linux.com.br PHP

3.8 Arrays

Arrays são mapas de dados, guardados em forma de chave = valor. Arrays podem
conter vários tipos diferentes de variáveis, até mesmo arrays. Se formos manter
nossa analogia de gavetas, arrays são grandes gavetas que possuem mais gavetas
dentro de si, etiquetadas ou não. A melhor forma de explicar o que eles são e como
funcionam, é através de código:

1 <? php
2 $pessoas = array ( ’ Jo ão ’ , ’ Maria ’ , ’ Pedro ’) ;
3 print_r ( $pessoas ) ;

No código acima, nós criamos um array chamado $pessoas e colocamos três valo-
res dentro dele. Esses valores são como variáveis, contidos dentro de uma grande
variável chamada $pessoas. Ela é a nossa grande gaveta e as pequenas gavetas
contidas nela podem possuir qualquer valor: string, inteiro, float, etc.

Note também que não utilizamos echo, e sim, uma função chamada print_r. A função
print_r lista as chaves e os valores de um array. Existe também a função var_dump:

1 <? php
2 $pessoas = array ( ’ Jo ão ’ , ’ Maria ’ , ’ Pedro ’) ;
3 var_dump ( $pessoas ) ;

Observe que a função var_dump irá exibir não só a estrutura do array, mas os tipos
dos valores contidos dentro dele.

Caso utilizemos echo $pessoas, o PHP irá retornar "Array()". Porque? Porque um
array é um mapa de dados e o echo não pode retornar o mapa inteiro. Para podermos
utilizar o echo com arrays, precisamos especificar qual chave queremos acessar.

Desenvolvimento Web com PHP Página 38


4Linux – www.4linux.com.br PHP

1 <? php
2 $pessoas = array ( ’ Jo ão ’ , ’ Maria ’ , ’ Pedro ’) ;
3 echo $pessoas [1]; // Maria

3.8.1 Associativos

Por padrão, quando criamos um array, ele recebe chaves numéricas, incrementadas
automaticamente de acordo com novos valores. Contudo, podemos criar chaves que
são strings. Chamamos isto de arrays associativos. Para explicar melhor, faremos
um exemplo em que mostraremos a temperatura média de alguns meses do ano.

1 <? php
2 $temperaturas = array ( ’ Janeiro ’ = > 30 , ’ Fevereiro ’ = > 32 , ’ Mar ço ’
=> 29) ;

Observe que nossos valores, nossas pequenas gavetas dentro de uma grande ga-
veta, agora possuem nomes. Podemos utilizar estes nomes para nos referenciarmos
a um valor específico dentro de um array, permitindo que manipulemos nossos arrays
de maneira mais precisa.

1 <? php
2 $temperaturas = array ( ’ Janeiro ’ = > 30 , ’ Fevereiro ’ = > 32 , ’ Mar ço ’
=> 29) ;
3 echo "A temperatura m é dia em Janeiro foi de :
{ $temperaturas [ ’ Janeiro ’]} graus " ;

Existem maneiras diferentes de se utilizar variáveis dentro de strings e vice-versa


Essas maneiras dividem-se em concatenadas e não-concatenadas, sendo a forma
não-concatenada a mais "limpa"

Desenvolvimento Web com PHP Página 39


4Linux – www.4linux.com.br PHP

1 <? php
2
3 $nome = ’ Carlos Carne ’;
4 $time = array ( ’ melhor ’ = > ’ Gr ê mio ’ , ’ pior ’ = > ’ Curintia ’) ;
5
6 // Não concatenadas
7 echo " $nome torce para o { $time [ ’ melhor ’]} " ;
8 echo "{ $nome } torce para o { $time [ ’ melhor ’]} " ;
9
10 // Concatenadas
11 echo "". $nome . " torce para o " . $time [ ’ melhor ’] . " " ;
12 echo ’’. $nome . ’ torce para o ’. $time [ ’ melhor ’] . ’ ’;

Portanto, nunca utilize concatenação para acessar valores dentro de um array. Faça
uso das chaves e evite sujar seu código e diminuir sua manutenibilidade.

3.8.2 Multidimensionais

Arrays multidimensionais, por mais complexo que o nome seja, são basicamente,
arrays dentro de um array. Lembram que os valores de um array podem ter qualquer
tipo? String, float, inteiro? Bom, também podemos ter arrays!

Podemos ter infinitos arrays dentro de outros arrays para controlar e armazenar di-
versos dados diferentes. Mas, seguindo o nosso exemplo anterior, podemos ter os
dados de temperatura para vários anos:

1 <? php
2
3 $temperaturas = array (
4 ’2008 ’ = > array (
5 ’ Janeiro ’ = > 30 ,
6 ’ Fevereiro ’ = > 32 ,

Desenvolvimento Web com PHP Página 40


4Linux – www.4linux.com.br PHP

7 ’ Mar ço ’ = > 29) ,


8 ’2009 ’ = > array (
9 ’ Janeiro ’ = > 31 ,
10 ’ Fevereiro ’ = > 34 ,
11 ’ Mar ço ’ = > 30) ,
12 ’2010 ’ = > array (
13 ’ Janeiro ’ = > 32 ,
14 ’ Fevereiro ’ = > 34 ,
15 ’ Mar ço ’ = > 28)
16 );
17
18 echo " Janeiro de 2008 foi de : { $temperaturas [ ’2008 ’][ ’ Janeiro ’]}
graus " ;

Note que fiz uso de uma estrutura identada, similar a da saída do print_r, para visu-
alizar melhor os dados do array. Eu poderia colocar tudo em uma linha, mas ficaria
difícil de entender no futuro.

Sempre que você for trabalhar com arrays multidimensionais, procure identar sua
definição para manter o código limpo e fácil de entender.

3.8.3 Foreach

Aprendemos anteriormente alguns loops, mas faltou o foreach. O foreach está ligado
diretamente a arrays. A ideia do foreach é que você possa iterar entre cada elemento
de um array. Por exemplo:

1 <? php
2
3 $pessoas = array ( ’ Jo ão ’ , ’ Maria ’ , ’ Pedro ’) ;
4
5 foreach ( $pessoas as $valor ) {
6 echo " Ol á $valor ! < br / > " ;

Desenvolvimento Web com PHP Página 41


4Linux – www.4linux.com.br PHP

7 }

Além de iterar entre os elementos e pegar os valores, podemos também pegar as


chaves. Para cada elemento em nosso array (Mês e Temperatura) nós daremos um
echo com a chave e valor desse elemento:

1 <? php
2
3 $temperaturas = array ( ’ Janeiro ’ = > 30 , ’ Fevereiro ’ = > 32 , ’ Mar ço ’
=> 29) ;
4
5 foreach ( $temperaturas as $chave = > $valor ) {
6 echo "A temperatura m é dia de $chave foi de $valor graus < br / > " ;
7 }

Mas e arrays multidimensionais? Fácil. Se arrays multidimensionais são simples-


mente arrays dentro de arrays, foreachs multidimensionais são simplesmente forea-
chs dentro de mais foreachs.

1 <? php
2
3 $temperaturas = array (
4 ’2008 ’ = > array (
5 ’ Janeiro ’ = > 30 ,
6 ’ Fevereiro ’ = > 32 ,
7 ’ Mar ço ’ = > 29) ,
8 ’2009 ’ = > array (
9 ’ Janeiro ’ = > 31 ,
10 ’ Fevereiro ’ = > 34 ,
11 ’ Mar ço ’ = > 30) ,
12 ’2010 ’ = > array (
13 ’ Janeiro ’ = > 32 ,
14 ’ Fevereiro ’ = > 34 ,
15 ’ Mar ço ’ = > 28)

Desenvolvimento Web com PHP Página 42


4Linux – www.4linux.com.br PHP

16 );
17
18 foreach ( $temperaturas as $ano = > $meses ) {
19 echo " < strong > Temperaturas em $ano </ strong > < br / > " ;
20
21 foreach ( $meses as $mes = > $temp ) {
22 echo " $mes : $temp graus < br / > " ;
23 }
24 }

3.8.4 Sintaxe alternativa

Podemos criar arrays de forma simples e rápida utilizando o operador []. Dessa
forma, iremos apenas jogar dados dentro do nosso array, sem nos preocuparmos
com a chave.

1 <? php
2
3 $array = array ( ’ Jo ão ’ , ’ Maria ’) ;
4
5 $array [] = ’ Jos é ’;
6 $times [] = ’ Gr ê mio ’;
7
8 print_r ( $array ) ;
9 print_r ( $times ) ;

Podemos também alterar os valores de um array usando os colchetes:

1 <? php
2
3 $array = array ( ’ nome ’ = > ’ Jo ão ’ , ’ time ’ = > ’ nenhum ’) ;
4

Desenvolvimento Web com PHP Página 43


4Linux – www.4linux.com.br PHP

5 $array [’ time ’] = ’ Gr ê mio ’;

Desenvolvimento Web com PHP Página 44


4Linux – www.4linux.com.br PHP

3.9 Funções

Uma função é um pedaço de código, que tem um objetivo específico, encapsulado


em uma estrutura única que recebe parâmetros e retorna um dado. Ela é essencial
para permitir reuso de código. O PHP possui várias funções "built-in", isto é, já vem
com ele. Você já viu algumas nos exemplos anteriores, como a função date(). Abaixo,
criaremos uma função simples para que você entenda como elas funcionam e para
que servem.

1 <? php
2
3 function negrito ( $valor ) {
4 echo " < strong > $valor </ strong > " ;
5 }
6
7 echo negrito ( " Ol á mundo ! " ) ;
8 echo negrito ( " Ol á mundo , novamente ! " ) ;

Observe que a função tem dois parênteses e dentro deles temos uma variável, cha-
mamos isso de parâmetro. Os parâmetros de uma função são somente valores,
mas sempre criamos apelidos para eles. A variável $valor poderia ter qualquer outro
nome, optamos por esse para ficar mais claro.

O conteúdo dela sempre será o valor que está sendo passado para a função durante
a chamada de função. Chamadas de função são muito simples. Basta você colocar
o nome da função e passar quaisquer parâmetros para ela. Algumas funções podem
não possuir parâmetros.

1 <? php
2
3 negrito (" Oi mundo " ) ;
4 italico (" Oi pessoas " ) ;
5 quebra () ;

Desenvolvimento Web com PHP Página 45


4Linux – www.4linux.com.br PHP

6 lista (" Item 1 " , " Item 2 " , " Item 3 " ) ;

3.9.1 Retorno

No PHP, nossas funções podem simplesmente executar um bloco de código, sem


retornar qualquer valor. Mas, em vários momentos, você vai precisar que ela retorna
um valor para você. Esse valor pode ser o resultado de uma operação matemática,
uma manipulação de string, uma manipulação de arrays ou até mesmo um valor
booleano, indicando se a operação foi bem sucedida ou não.

Para fazer uma função retornar um valor, precisamos utilizar a palavra-chave return,
seguida do valor que desejamos retornar. Veja o exemplo:

1 <? php
2
3 function taxar ( $valor ) {
4 $valor = $valor * 1.09;
5 return $valor ;
6 }
7
8 $preco = 25;
9 $comtaxa = taxar ( $preco ) ;
10
11 echo "O pre ç o deste livro é $preco . Com taxa , fica : $comtaxa " ;

3.9.2 Parâmetros opcionais

Funções também podem possuir parâmetros opcionais. Esses parâmetros podem


ser omitidos durante a chamada de função e nossa função trabalhará com um valor
padrão no lugar dessa parâmetro obtido. Observe o código abaixo:

Desenvolvimento Web com PHP Página 46


4Linux – www.4linux.com.br PHP

1 <? php
2
3 function taxar ( $valor , $subtaxa = 1) {
4 $valor = $valor * $subtaxa * 1.09;
5 return $valor ;
6 }
7
8 $preco = 25;
9 $comtaxa = taxar ( $preco ) ;
10 $comsubtaxa = taxar ( $preco , 1.02) ;
11
12 echo "O livro custa $preco . Com taxa , fica : $comtaxa . Com sub ,
fica : $comsubtaxa " ;

3.9.3 Escopo

Quando estamos trabalhando em um script PHP, temos variáveis. Essas variáveis


estão disponíveis no escopo global de nosso script. Ela sempre pode ser acessada.
Contudo, dentro de nossas funções, existe um outro escopo, o escopo local. Fun-
ções, que agem no escopo local, não podem acessar variáveis do escopo global.

Para podermos utilizar uma variável que está disponível no escopo global dentro
de nossas funções, precisamos alocá-las no escopo local utilizando a palavra-chave
global. Observe o código abaixo:

1 <? php
2
3 $taxa = 1.09;
4
5 function taxar ( $valor ) {
6 global $taxa ;
7

Desenvolvimento Web com PHP Página 47


4Linux – www.4linux.com.br PHP

8 $valor = $valor * $taxa ;


9 return $valor ;
10 }
11
12 $preco = 25;
13 $comtaxa = taxar ( $preco ) ;
14
15 echo "O pre ç o deste livro é $preco . Com taxa , fica : $comtaxa " ;

3.9.4 Passagem por referência

Quando passamos um valor para uma função, um parâmetro, aquele valor passa a
existir no escopo local da função. As alterações feitas nesse valor só existem no
escopo local, portanto, precisamos retornar algo em nossa função para fazer essas
alterações, se necessários, aparecerem no escopo global.

Com a passagem por referência, qualquer alteração feita no escopo local em um


valor passado por referência será refletida no escopo global. Utilizamos o operador
& em frente a um parâmetro para especificar passagem referência. Por exemplo:

1 <? php
2
3 function adicionar (& $fruta ) {
4 return ++ $fruta ;
5 }
6
7 $laranjas = 5;
8
9 adicionar ( $laranjas ) ;
10
11 echo $laranjas ;

Desenvolvimento Web com PHP Página 48


4Linux – www.4linux.com.br PHP

A variável $laranjas só existe no escopo global. Mas estamos passando essa variável
para uma função por referência, o que irá alterar o valor da variável em ambos os
escopos, sem que eu precise dizer que o valor da variável é igual ao retorno da
função.

3.9.5 Funções anônimas e Closures

Funções lambda, ou funções anônimas como são comumente conhecidas, são fun-
ções que podem ser definidas a qualquer momento, geralmente a uma variável e
disponível somente no escopo desta. Este conceito vem do cálculo lambda, introdu-
zido por Alonzo Church nos anos 30, que inspirou a criação de linguagens funcionais
como Lisp e Scheme.

Lambdas são muito úteis em conjunto com funções como array_filter e array_map.
Como podemos ver no exemplo abaixo, que monta um array somente com os valores
ímpares de outro:

1 <? php
2
3 $array = array (1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15) ;
4 $impares = array_filter ( $array , function ( $valor ) { return $valor %
2; }) ;
5
6 print_r ( $impares ) ;

Closures, são muito similares a lambdas, mas acabam sendo mais úteis já que eles
podem interagir com o escopo global. Podemos importar variáveis do escopo glo-
bal para o escopo local do closure utilizando a palavra-chave use, que neste caso
funciona como a global que vimos anteriormente.

Podemos ver no exemplo abaixo um simples Closure:

Desenvolvimento Web com PHP Página 49


4Linux – www.4linux.com.br PHP

1 <? php
2
3 $teste = " Oi mundo " ;
4 $closure = function () use ( $teste ) { echo $teste ; };
5
6 $closure () ;

Desenvolvimento Web com PHP Página 50


Capítulo 4

Funções Nativas
4Linux – www.4linux.com.br Funções Nativas

4.1 Funções para variáveis

4.1.1 Função empty

A função empty verifica se a variável é considerada vazia, ou seja, caso seu conteúdo
seja , 0, "0", NULL, FALSE, um array vazio, ou uma variável declarada porém sem
valor em uma classe.

1 <? php
2 $variavel = 0;
3
4 if ( empty ( $variavel ) ) {
5 echo ’ Esta vari á vel é considerada vazia ! ’;
6 }

4.1.2 Função isset

Esta função informa se determinada variável foi iniciada.

1 <? php
2
3 $variavel = ’ ’;
4 if ( isset ( $variavel ) ) {
5 echo "A vari á vel existe !!! " ;
6 }

Podemos também utilizar a função unset para destruir determinada variável.

Desenvolvimento Web com PHP Página 52


4Linux – www.4linux.com.br Funções Nativas

4.1.3 Função is_array

Como o próprio nome já diz, esta função verifica se determinada variável é um ar-
ray:

1 <? php
2
3 $vetor = array ( ’ Isto ’ , ’é ’, ’ um array ’) ;
4 echo is_array ( $vetor ) ? ’Sim , isto é um array . ’ : ’N ã o é um array ’;

4.1.4 Função is_bool

Verifica se a variável é booleana. No exemplo abaixo, como o conteúdo da variável


é false, a frase será mostrada na tela.

1 <? php
2 $variavel1 = false ;
3
4 if ( is_bool ( $a ) ) {
5 echo ’A vari á vel $a é um valor booleano ’;
6 }

4.1.5 Função is_callable

Verifica se o conteúdo de uma variável é uma função válida.

1 <? php
2

Desenvolvimento Web com PHP Página 53


4Linux – www.4linux.com.br Funções Nativas

3 function teste () {
4 }
5
6 $variavel = ’ teste ’;
7
8 var_dump ( is_callable ( $variavel , false , $nome ) ) ;
9
10 echo $nome , " \ n " ;

A saída será true, pois teste é de fato o nome de uma função válida e logo depois será
apresentado na tela o nome da função, encontrada na variável. Teste este mesmo
exemplo modificando o conteúdo da variável para teste1 por exemplo. A saída deverá
ser falsa, tendo em vista que não há função com este nome.

4.1.6 Função is_float

A função is_float verificará se o conteúdo de uma variável é um valor em ponto flutu-


ante.

1 <? php
2 $variavel = 13.33;
3 if ( is_float ( $variavel ) ) {
4 echo "É float !\ n " ;
5 } else {
6 echo "N ã o é float !\ n " ;
7 }

4.1.7 Função is_int

Verifica se o número em questão é um inteiro.

Desenvolvimento Web com PHP Página 54


4Linux – www.4linux.com.br Funções Nativas

1 <? php
2 $variavel = 13;
3 if ( is_int ( $variavel ) ) {
4 echo "É inteiro !\ n " ;
5 } else {
6 echo "N ã o é inteiro !\ n " ;
7 }

4.1.8 Função is_null

Esta função indica se a variável é nula.

1 <? php
2 $variavel = NULL ;
3
4 if ( is_int ( $variavel ) ) {
5 echo "É nulo !\ n " ;
6 } else {
7 echo "N ã o é nulo !\ n " ;
8 }

4.1.9 Função is_numeric

Indica se a variável é numérica

1 <? php
2 $variavel = 30;
3

Desenvolvimento Web com PHP Página 55


4Linux – www.4linux.com.br Funções Nativas

4 if ( is_int ( $variavel ) ) {
5 echo "É um n ú mero !\ n " ;
6 } else {
7 echo "N ã o é um n ú mero !\ n " ;
8 }

4.1.10 Função is_object

Verifica se a varíavel em questão é um objeto.

1 <? php
2
3 function get_students ( $obj ) {
4 if (! is_object ( $obj ) ) {
5 return false ;
6 }
7
8 return $obj - > students ;
9 }
10
11 $obj = new stdClass () ;
12 $obj -> students = array ( ’ Kalle ’ , ’ Ross ’ , ’ Felipe ’) ;
13
14 var_dump ( get_students ( null ) ) ;
15 var_dump ( get_students ( $obj ) ) ;

4.1.11 Função is_resource

Verifica se uma determinada variável é um resource.

Desenvolvimento Web com PHP Página 56


4Linux – www.4linux.com.br Funções Nativas

1 <? php
2
3 $conexao = @mysql_connect ( ’ localhost ’ , ’ usuario ’ , ’ senha ’) ;
4 if (! is_resource ( $conexao ) ) {
5 die (’Nã o foi poss í vel conectar ! : ’ . mysql_error () ) ;
6 }

4.1.12 Função is_scalar

Indica se a variável em questão é escalar.

1 <? php
2 function show_var ( $variavel ) {
3 if ( is_scalar ( $variavel ) ) {
4 echo $variavel ;
5 } else {
6 echo " N ã o é escalar ! " ;
7 }
8 }
9
10 $pi = 3.1416;
11
12 show_var ( $pi ) ;

4.1.13 Função is_string

Verifica se determinado conteúdo é considerada uma string.

1 <? php

Desenvolvimento Web com PHP Página 57


4Linux – www.4linux.com.br Funções Nativas

2 var_dump ( is_string ( ’ teste ’) ) ;


3 var_dump ( is_string ( " 50 " ) ) ;
4 var_dump ( is_string (13) ) ;
5 var_dump ( is_string ( true ) ) ;

Saída:

bool(true) bool(true) bool(false) bool(false)

Perceba que os valores dentro das aspas (simples ou duplas) são consideradas
strings, mesmo que se trate de números ou palavras reservadas.

4.1.14 Função settype

A função settype atribui um tipo a uma variável.

1 <? php
2 $variavel = true ;
3 settype ( $variavel , " string " ) ;

Saída: variavel is now "1"(string)

Veja então que a variável que antes era booleana, foi convertida para seu correspon-
dente em string, "1".

4.1.15 Função gettype

Esta função retorna qual o tipo da variável, analisando seu conteúdo:

Desenvolvimento Web com PHP Página 58


4Linux – www.4linux.com.br Funções Nativas

1 <? php
2 $variavel = " teste " ;
3 echo ’ Esta vari á vel é do tipo ’ . gettype ( $variavel ) ;

4.1.16 Função unset

Esta função apaga da memória determinada variável.

1 <? php
2 set ( $variavel ) ;
3 echo " Vari á vel criada " ;
4 unset ( $variavel ) ;
5 echo " Vari á vel deletada " ;

4.1.17 Função var_dump

Esta é uma das funções mais importantes para quem desenvolve em PHP. Ela apre-
senta detalhes a respeito de uma variável, o que torna mais fácil o reconhecimento
de problemas no código. Muito utilizada para compreender o funcionamento de ar-
rays.

1 <? php
2 $a = array (1 , 2 , array ( " a " , " b " , " c " ) ) ;
3 var_dump ( $a ) ;

O código acima irá exibir:

Desenvolvimento Web com PHP Página 59


4Linux – www.4linux.com.br Funções Nativas

1 array (3) {
2 [0]= >
3 int (1)
4 [1]= >
5 int (2)
6 [2]= >
7 array (3) {
8 [0]= >
9 string (1) " a "
10 [1]= >
11 string (1) " b "
12 [2]= >
13 string (1) " c "
14 }
15 }

4.1.18 Função var_export

Muio parecida com a função var_dump, porém a saída é um código PHP válido.

1 <? php
2 $vetor = array (1 , 2 , array ( " a " , " b " , " c " ) ) ;
3 var_export ( $vetor ) ;
4 ?>

O código acima irá exibir:

1 array (
2 0 => 1,
3 1 => 2,
4 2 =>
5 array (

Desenvolvimento Web com PHP Página 60


4Linux – www.4linux.com.br Funções Nativas

6 0 => ’a ’ ,
7 1 => ’b ’ ,
8 2 => ’c ’ ,
9 ),
10 )

Desenvolvimento Web com PHP Página 61


4Linux – www.4linux.com.br Funções Nativas

4.2 Funções para strings

O PHP possui muitas funções nativas para se trabalhar com strings e manipulá-las.
A partir de agora, veremos algumas dessas funções, exemplos de como trabalhar
com elas, e ver como elas são úteis no dia a dia de um programador PHP.

4.2.1 Função printf

A função printf permite que formatemos uma string de diferentes formas.

1 <? php
2 $artilheiro = ’ Ronaldo ’;
3 $gols = 19;
4
5 $formato = ’O artilheiro do brasileir ão , %s , tem % d gols . ’;
6 printf ( $formato , $artilheiro , $gols ) ;

Dependendo do tipo da variável, especificamos a chave de substituição:

• %s = String

• %f = Float

• %d = Integer

4.2.2 Função sprintf

A função sprintf é similar a função printf, mas ao invés de mostrar a string na tela, ela
apenas monta a string.

Desenvolvimento Web com PHP Página 62


4Linux – www.4linux.com.br Funções Nativas

1 <? php
2 $artilheiro = ’ Jonas ’;
3 $gols = 19;
4
5 $formato = ’O artilheiro do brasileir ão , %s , tem % d gols . ’;
6 $string = sprintf ( $formato , $artilheiro , $gols ) ;
7 echo $string ;

4.2.3 Função vsprintf

A função vsprintf é similar a função sprintf, mas ela aceita um array de valores a
serem substituídos, ao invés de uma série de parâmetros.

1 <? php
2 $formato = ’O artilheiro do brasileir ão , %s , tem % d gols . ’;
3
4 $string = vsprintf ( $formato , array ( ’ Jonas ’ , ’19 ’) ) ;
5 echo $string ;

4.2.4 Função str_replace

A função str_replace permite que você substitua uma ou mais strings por outras,
dentro de uma string maior. Ela recebe três parâmetros: o que você quer substituir,
pelo quê você quer substituir e onde você quer substituir. A função irá retornar a
string com as substituições feitas. Veja o exemplo:

1 <? php
2

Desenvolvimento Web com PHP Página 63


4Linux – www.4linux.com.br Funções Nativas

3 $string = " Oi mundo " ;


4 $novastring = str_replace ( " Oi " , " Tchau " , $string ) ;
5
6 echo $novastring ;

Observe que é possível passar não só uma string para os dois primeiros parâmetros,
mas arrays também. Podemos substituir mais de uma palavra por uma string, ou
substituir igualmente:

1 <? php
2
3 $string = " Ol á mundo cruel ! " ;
4
5 $original = array ( ’ mundo ’ , ’ cruel ’) ;
6 $substituto = array ( ’ mundinho ’ , ’ feliz ’) ;
7
8 $novastring = str_replace ( $original , " coisa " , $string ) ;
9 $outrastring = str_replace ( $original , $substituto , $string ) ;
10
11 echo $novastring ;
12 echo $outrastring ;

4.2.5 Função htmlentities

A função htmlentities transforma caracteres em entidades HTML equivalentes. Um


exemplo de quando observamos este comportamento é ao digitar caracteres em
editores de texto na web que permitem formatação. Quando escrevemos no editor
’<’ e clicamos para ver como ficou o código HTML, verificamos que o caractere que
representa sinal de menor, foi identificado como ’&lt;’.

É exatamente isso que esta função faz. Para realizar o processo contrário, ou
seja, decodificar os caracteres, usamos a função html_entity_decode ou htmlspe-

Desenvolvimento Web com PHP Página 64


4Linux – www.4linux.com.br Funções Nativas

cialchars_decode.

1 <? php
2 $string = " Tenha um <b > bom </ b > dia ! " ;
3 echo htmlentites ( $string ) ;
4
5 // A sa í da ser á : Tenha um & lt ; bom & gt ; dia !

Também podemos enviar outros parâmetros a esta função, se queremos ou não


que aspas na string sejam convertidas, bem como indicar qual o tipo de codificação
utilizado. No exemplo abaixo com o parâmetro ENT_QUOTES, estamos indicando
que as aspas utilizadas na string também devem ser convertidas.

1 <? php
2 $string = " E ela me disse : ’ tenha um <b > bom dia </ b > ’ e eu tive . " ;
3 echo htmlentities ( $string , ENT_QUOTES ) ;
4
5 // A sa í da ser á : E ela me disse : & # 039; tenha um & lt ; bom & gt ;&#039;
dia e eu tive .

Observe que para verificar se a saída está correta você precisa ver o código fonte da
página.

4.2.6 Função htmlspecialchars

Esta função é praticamente idêntica com a função htmlentitles. O diferencial é que


na função htmlentitles, todos os caracteres que tem entidades HTML equivalentes,
serão convertidos.

1 <? php
2 $string = " <a href = ’ http :// www .4 linux . com . br ’ > 4 linux </a > " ;

Desenvolvimento Web com PHP Página 65


4Linux – www.4linux.com.br Funções Nativas

3 echo htmlspecialchars ( $string , ENT_QUOTES ) ;

Observe que para verificar se a saída está correta você precisa ver o código fonte da
página!

4.2.7 Função htmlspecialchars_decode

Podemos também realizar o processo inverso, ou seja, ao obter um texto que esteja
codificado, podemos transformá-lo em caracteres comuns.

1 <? php
2 $string = " Se ’3 & gt ; 2 ’ ent ã o ’2 & lt ; 3 ’ " ;
3 echo htmlspecialchars_decode ( $string , ENT_QUOTES ) ;

Observe que para verificar se a saída está correta você precisa ver o código fonte da
página!

4.2.8 Função trim

Esta função retira espaços em branco no início e no final de uma string. Além de
espaços, esta função remove tabulações e linhas em branco. Também é possível
passar por parâmetro outros caracteres queremos remover.

1 <? php
2
3 $string = " \ t \ tTenha um bom dia !!! :) " ;
4 echo $string ;
5
6 $trimmed = trim ( $string ) ;

Desenvolvimento Web com PHP Página 66


4Linux – www.4linux.com.br Funções Nativas

7 echo $trimmed ;

Veja que no exemplo acima, usando um simples echo, não conseguimos observar
exatamente a saída e que os espaços foram removidos. Para visualizar com mais
detalhes o comportamento da string, vamos utilizar a função var_dump, que nos mos-
trará o número de caracteres existentes na string original e na string modificada.

1 <? php
2
3 $string = " \ t \ tTenha um bom dia !!! :) " ;
4 var_dump ( $string ) ;
5
6 $trimmed = trim ( $string ) ;
7 var_dump ( $trimmed ) ;

Podemos também utilizar um segundo parâmentro para indicar quais caracteres do


início e do final da string deverão ser removidos. No exemplo abaixo estamos remo-
vendo as letras "Te"do início e "do"do final da string. Assim a saída será "stan".

1 <? php
2
3 $string = " Testando " ;
4 $trimmed = trim ( $string , " Tedo " ) ;
5 var_dump ( $trimmed ) ;

4.2.9 Função ucfirst

Esta é uma função bem simples, que recebe como parâmetro uma string e retorna
esta string com o primeiro caracter em maiúsculo.

Desenvolvimento Web com PHP Página 67


4Linux – www.4linux.com.br Funções Nativas

1 <? php
2
3 $string = ’ hello world ! ’;
4 echo ucfirst ( $string ) ;
5
6 // Sa í da Hello world !

4.2.10 Função ucwords

Parecida com ucfirst, porém a função ucwords converte para maiúsculo os primeiros
caracteres de todas as palavras de uma string:

1 <? php
2
3 $string = ’ hello world ! ’;
4 echo ucwords ( $string ) ;
5
6 // Sa í da Hello World !

4.2.11 Função lcfirst

O retorno desta função é o oposto do que vimos com ucfirst (upper case first). A fun-
ção lcfirst (lower case first) transforma o primeiro caracter da string em minúsculo.

1 <? php
2
3 $string = ’ Hello World ! ’;
4 echo lcfirst ( $string ) ;
5

Desenvolvimento Web com PHP Página 68


4Linux – www.4linux.com.br Funções Nativas

6 // Sa í da hello World !

4.2.12 Função nl2br

Esta função insere a tag <br /> no lugar das newlines presentes na string.

1 <? php
2
3 echo nl2br ( " linha 1\ nlinha2 \ nlinha3 \ n " ) ;

Observe que para verificar se a saída está correta você precisa ver o código fonte da
página!

4.2.13 Função str_split

A função str_split transforma uma string em um array, ou seja, separa a string em


pedaços e cada pedaço estará alocado em uma posição de um vetor. Recebe como
parâmetro a string que será separada e como segundo parâmetro podemos indicar
quantos caracteres deverão ficar em cada posição do vetor.

Observe que por padrão, ele irá separar cada caracter em uma posição do vetor:

1 <? php
2
3 $string = " Oi , tudo bem ? " ;
4 $string1 = str_split ( $string ) ;
5 print_r ( $string1 ) ;
6
7 ?>

Desenvolvimento Web com PHP Página 69


4Linux – www.4linux.com.br Funções Nativas

8
9 // Sa í da : Array ( [0] = > O [1] = > i [2] = > , [3] = > [4] = > t [5] = >
u [6] = > d [7] = > o [8] = > [9] = > b [10] = > e [11] = > m [12] = >
? )

Já neste segundo exemplo, estamos indicando que queremos separar os caracteres


de 5 em 5:

1 <? php
2
3 $string = " Oi , tudo bem ? " ;
4 $string2 = str_split ( $string , 5) ;
5 print_r ( $string2 ) ;
6
7 ?>
8
9 // Sa í da : Array ( [0] = > Oi , t [1] = > udo b [2] = > em ? )

4.2.14 Função str_repeat

Esta é uma função simples, que repete a string de acordo com o valor indicado.

1 <? php
2 echo str_repeat ( " @ " , 10) ;
3 ?>
4
5 Sa í da : @@@@@@@@@@

Desenvolvimento Web com PHP Página 70


4Linux – www.4linux.com.br Funções Nativas

4.2.15 Função str_pad

A função str_pad preenche uma string com espaços em branco ou determinados


caracteres afim de que a string fique com o tamanho desejado.

1 <? php
2 $string = " May the force be with you ! " ;
3 print str_pad ( $string , 1000) ;
4 ?>

Observe que para verificar se a saída está correta você precisa ver o código fonte da
página!

Podemos também escolher em que posição ficará e quais serão os caracteres de


preenchimento:

1 <? php
2 $string = " May the force be with you ! " ;
3 print str_pad ( $string , 50 , " @ " , STR_PAD_LEFT ) ;
4 print str_pad ( $string , 50 , " @ " , STR_PAD_BOTH ) ;
5 print str_pad ( $string , 50 , " @ " ) ;
6 ?>

4.2.16 Função str_shuffle

Esta função recebe uma string e tem como retorno o contúdo desta string, porém
com seus caracteres misturados.

1 <? php
2

Desenvolvimento Web com PHP Página 71


4Linux – www.4linux.com.br Funções Nativas

3 $string = ’ labirinto ’;
4 $mix = str_shuffle ( $string ) ;
5 echo $mix ;

4.2.17 Função str_word_count

Função simples e muito útil. Conta o número de palavras em uma string. Utilizando o
parâmetro 0, mostrará apenas o de palavras. Com o parâmetro 1 mostrará um array
com todas as palavras encontradas naquela string. E com o parâmetro 2 retorna um
array onde a chave será a posição da palavra dentro da string.

1 <? php
2
3 $string = " Oi , como vai voce ? " ;
4 print_r ( str_word_count ( $string , 1) ) ;
5 echo str_word_count ( $string ) ;
6
7 // Sa í da : Array ( [0] = > Oi [1] = > como [2] = > vai [3] = > voce ) 4

Ou também:

1 <? php
2
3 $string = " Oi , como vai voce ? " ;
4 print_r ( str_word_count ( $string , 2) ) ;
5 echo str_word_count ( $string ) ;
6
7 // Sa í da : Array ( [0] = > Oi [4] = > como [9] = > vai [13] = > voce ) 4

Desenvolvimento Web com PHP Página 72


4Linux – www.4linux.com.br Funções Nativas

4.2.18 Função strchr

Esta função é apenas um apelido para a função strstr

4.2.19 Função strstr

A função strstr encontra a primeira ocorrência de uma string. No exemplo abaixo,


mostrará na tela apenas o que for encontrado depois do @:

1 <? php
2
3 $email = ’ linus@linux . org ’;
4 $dominio = strstr ( $email , ’@ ’) ;
5 echo $dominio ;
6
7 // Sa í da : linux . org

Neste outro exemplo, será mostrado os caracteres encontrados antes do @:

1 <? php
2
3 $user = strstr ( $email , ’@ ’ , true ) ;
4 echo $user ;
5
6 // Sa í da : linus

Desenvolvimento Web com PHP Página 73


4Linux – www.4linux.com.br Funções Nativas

4.2.20 Função strcmp

A funcão strcmp realiza uma comparação entre strings. No exemplo abaixo, como as
duas strings são iguais, o retorno é 0. Se a string1 for maior que a string2 o retorno
será um valor maior de zero, caso contrário o retorno será menor que zero.

1 <? php
2
3 $string1 = ’2 ’;
4 $string2 = ’2 ’;
5 var_dump ( strcmp ( $string1 , $string2 ) ) ;

4.2.21 Função strlen

A função strlen retorna o número de caracteres dentro de uma string. Lembrando


que espaços também são contabilizados!

1 <? php
2
3 $string = ’ May the source be with you ! ’;
4 echo strlen ( $string ) ;
5
6 // Sa í da : 28

4.2.22 Função strpos

Retorna a posição onde se encontra determinada ocorrência dentro de uma string.


Se a string for encontrada, retorna true, caso contrário, retorna false.

Desenvolvimento Web com PHP Página 74


4Linux – www.4linux.com.br Funções Nativas

1 <? php
2
3 $string = ’0123456789 ’;
4 $procurar = ’7 ’;
5 $pos = strpos ( $string , $procurar ) ;
6
7 if ( $pos === false ) {
8 echo " A string ’ $procurar ’ n ã o foi encontrada na string
’ $string ’ " ;
9 } else {
10 echo " A string ’ $procurar ’ foi encontrada na string ’ $string ’ " ;
11 echo " e existe na posi ç ã o $pos " ;
12 }
13
14 // Sa í da : A string ’7 ’ foi encontrada na string ’0123456789 ’ e
existe na posi ç ã o 7

Apenas um detalhe. Ao realizar esta busca, use três sinais de igual para realizar a
comparação (===). Ao usar apenas dois sinais de igual (==), quando o resultado for
a posição 0, a função retornará que a string não foi encontrada, tendo em vista que
o valor zero também equivale a false em booleano!

Pode fazer o teste!

1 <? php
2
3 $string = ’0123456789 ’;
4 $procurar = ’0 ’;
5 $pos = strpos ( $string , $procurar ) ;
6
7 if ( $pos == false ) {
8 echo " A string ’ $procurar ’ n ã o foi encontrada na string
’ $string ’ " ;
9 } else {

Desenvolvimento Web com PHP Página 75


4Linux – www.4linux.com.br Funções Nativas

10 echo " A string ’ $procurar ’ foi encontrada na string ’ $string ’ " ;


11 echo " e existe na posi ç ã o $pos " ;
12 }
13
14 // Sa í da : A string ’0 ’ n ã o foi encontrada na string ’0123456789 ’

Agora usando três sinais de igual para realizar a comparação:

1 <? php
2
3 $string = ’0123456789 ’;
4 $procurar = ’0 ’;
5 $pos = strpos ( $string , $procurar ) ;
6
7 if ( $pos === false ) {
8 echo " A string ’ $procurar ’ n ã o foi encontrada na string
’ $string ’ " ;
9 } else {
10 echo " A string ’ $procurar ’ foi encontrada na string ’ $string ’ " ;
11 echo " e existe na posi ç ã o $pos " ;
12 }
13
14 // Sa í da : A string ’0 ’ foi encontrada na string ’0123456789 ’ e
existe na posi ç ã o 0

4.2.23 Função strrpos

Muito parecida com a função strpos, a função strrpos apresenta a última ocorrência
de um caracter em uma string.

No exemplo abaixo, observe que agora ao buscar o número zero, ele indica que sua
posição é a 10 e não mais a zero.

Desenvolvimento Web com PHP Página 76


4Linux – www.4linux.com.br Funções Nativas

1 <? php
2
3 $string = ’01234567890123456789 ’;
4 $procurar = ’0 ’;
5 $pos = strrpos ( $string , $procurar ) ;
6
7 if ( $pos == false ) {
8 echo " A string ’ $procurar ’ n ã o foi encontrada na string
’ $string ’ " ;
9 } else {
10 echo " A string ’ $procurar ’ foi encontrada na string ’ $string ’ " ;
11 echo " e existe na posi ç ã o $pos " ;
12 }
13
14 // Sa í da : A string ’0 ’ foi encontrada na string
’01234567890123456789 ’ e existe na posi ç ã o 10

4.2.24 Função strripos

Faz a mesma coisa que a função strrpos, porém não é case sensitive. Ou seja, irá
pesquisar pela última ocorrência de um caracter em uma string, ignorando se a letra
está maiúscula ou minúscula.

1 <? php
2 $string = ’ abcdeABCDEabcdeABCDE ’;
3 $procurar = ’a ’;
4 $pos = strrpos ( $string , $procurar ) ;
5
6 if ( $pos === false ) {
7 echo " A string ’ $procurar ’ n ã o foi encontrada na string
’ $string ’ " ;
8 } else {

Desenvolvimento Web com PHP Página 77


4Linux – www.4linux.com.br Funções Nativas

9 echo " A string ’ $procurar ’ foi encontrada na string ’ $string ’ " ;


10 echo " e existe na posi ç ã o $pos " ;
11 }
12
13 ?>
14
15 // Sa í da : A string ’a ’ foi encontrada na string
’ abcdeABCDEabcdeABCDE ’ e existe na posi ç ã o 15

Perceba então, que o caracter ’a’ apesar está na posição 0, 5, 10 e 15, é apresentado
como última ocorrência na posição 15, mesmo que o ’A’ que está na posição 15
esteja em maiúsulo.

4.2.25 Função stripos

Faz a mesma coisa que a função strpos, porém não é case sensitive. Ou seja, irá
pesquisar pela primeira ocorrência de um caracter em uma string, ignorando se a
letra está maiúscula ou minúscula.

1 <? php
2
3 $string = ’ abcdeABCDEabcdeABCDE ’;
4 $procurar = ’A ’;
5 $pos = stripos ( $string , $procurar ) ;
6
7 if ( $pos === false ) {
8 echo " A string ’ $procurar ’ n ã o foi encontrada na string
’ $string ’ " ;
9 } else {
10 echo " A string ’ $procurar ’ foi encontrada na string ’ $string ’ " ;
11 echo " e existe na posi ç ã o $pos " ;
12 }
13

Desenvolvimento Web com PHP Página 78


4Linux – www.4linux.com.br Funções Nativas

14 // Sa í da : A string ’a ’ foi encontrada na string


’ abcdeABCDEabcdeABCDE ’ e existe na posi ç ã o 0

Perceba então, que o caracter ’A’ apesar está na posição 0, 5, 10 e 15, é apresentado
como primeira ocorrência na posição 0, mesmo que o ’a’ que está na posição 0 esteja
em minúsculo.

4.2.26 Função substr

Esta função retorna uma parte de uma string.

No exemplo abaixo, quero que a saída seja o caracter na posição zero até o caracter
que está na penúltima posição (-1):

1 <? php
2
3 $string = substr ( " 0123456789 " , 0 , -1) ;
4 echo $string ;
5
6 // Sa í da : 012345678

Agora quero retornar os valores da posição 1 até a posição 5:

1 <? php
2
3 $string = substr ( " 0123456789 " , 1 , -4) ;
4 echo $string ;
5
6 // Sa í da : 12345

Desenvolvimento Web com PHP Página 79


4Linux – www.4linux.com.br Funções Nativas

4.2.27 Função substr_replace

A função substr_replace, como o nome já diz, substitui uma string por outra. No
exemplo abaixo iremos substituir a palavra cedo por tarde:

1 <? php
2
3 $string = ’ hoje acordei muito cedo . ’;
4 echo " Original : $var < hr / >\ n " ;
5 echo substr_replace ( $var , ’ tarde ’ , -5 , -1) . " < br / >\ n " ;
6
7 // Sa í da : hoje acordei muito tarde .

Neste exemplo iremos substituir a palavra cedo por um espaço vazio, ou seja, esta-
remos deletando a plavra da string:

1 <? php
2
3 $string = ’ hoje acordei muito cedo . ’;
4 echo " Original : $var < hr / >\ n " ;
5 echo substr_replace ( $var , ’’, 12 , -1) . " < br / >\ n " ;
6
7 // Sa í da : hoje acordei .

4.2.28 Função strtoupper

Função simples que retorna a string de entrada em letras maiúsculas.

1 <? php
2

Desenvolvimento Web com PHP Página 80


4Linux – www.4linux.com.br Funções Nativas

3 $string = " Luke , eu sou seu pai ! " ;


4 echo strtoupper ( $string ) ;
5
6 // Sa í da : LUKE , EU SOU SEU PAI !

4.2.29 Função strtolower

Faz a mesma coisa que a função anterior porém ao contrário, ou seja, apresenta a
string em caixa baixa.

1 <? php
2
3 $string = " Luke , eu sou seu pai ! " ;
4 echo strtolower ( $string ) ;
5
6 // Sa í da : Luke , eu sou seu pai !

Desenvolvimento Web com PHP Página 81


4Linux – www.4linux.com.br Funções Nativas

4.3 Funções para arrays

4.3.1 Ordenação de arrays

Existem várias funções nativas no PHP para ordenarmos arrays. Na tabela abaixo
você pode ver as funções mais comuns e suas diferenças, servindo de referência
rápida na hora de ordenar um array.

4.3.2 Função array_map

A função array_map permite que todos os elementos de um array sejam modificados


por uma função, sem a necessidade de criar um loop, passando cada elemento para
a função.

Exemplo:

Desenvolvimento Web com PHP Página 82


4Linux – www.4linux.com.br Funções Nativas

1 <? php
2 function cubo ( $num )
3 {
4 return $num * $num * $num ;
5 }
6
7 $a = array (1 , 2 , 3 , 4 , 5) ;
8 $b = array_map ( " cubo " , $a ) ;
9 print_r ( $b ) ;
10 ?>

No exemplo acima, a função cubo recebe um valor como parâmetro e retorna seu
valor multiplicado por ele mesmo três vezes. Isso eqüivale ao número ao cubo. Logo
depois encontramos um arras denominado $a com 5 valores. Abaixo encontramos
um arras $b que chama a função array_map. Esta função está chamando a função
cubo e passando o array $a para que cada número dentro deste array seja calculado
dentro da função cubo.

Como resultado, encontramos:

1 Array ( [0] = > 1 [1] = > 8 [2] = > 27 [3] = > 64 [4] = > 125 )

4.3.3 Função array_filter

A função array_filter, filtra o conteúdo de um array de acordo com a ação de alguma


função.

1 <? php
2
3 function impar ( $variavel )
4 {

Desenvolvimento Web com PHP Página 83


4Linux – www.4linux.com.br Funções Nativas

5 return ( $variavel & 1) ;


6 }
7
8 function par ( $variavel )
9 {
10 return (!( $variavel & 1) ) ;
11 }
12
13 $vetor = array (6 , 7 , 8 , 9 , 10 , 11 , 12) ;
14
15 echo " Impares : \ n " ;
16 print_r ( array_filter ( $vetor , " impar " ) ) ;
17 echo " Pares : \ n " ;
18 print_r ( array_filter ( $vetor , " par " ) ) ;

O código acima irá exibir:

1 Impares :
2 Array
3 (
4 [1] = > 7
5 [3] = > 9
6 [5] = > 11
7 )
8 Pares :
9 Array
10 (
11 [0] = > 6
12 [2] = > 8
13 [4] = > 10
14 [6] = > 12
15 )

Desenvolvimento Web com PHP Página 84


4Linux – www.4linux.com.br Funções Nativas

4.3.4 Função array_chunk

A função de array_chunk divide um array em pedaços, retornando assim um array


multidimensional.

1 <? php
2
3 $vetor = array ( ’a ’ , ’b ’ , ’c ’ , ’d ’ , ’e ’ , ’f ’ , ’g ’ , ’h ’ , ’i ’) ;
4 print_r ( array_chunk ( $vetor , 3) ) ;

O código acima irá exibir:

1 Array
2 (
3 [0] = > Array
4 (
5 [0] = > a
6 [1] = > b
7 [2] = > c
8 )
9
10 [1] = > Array
11 (
12 [0] = > d
13 [1] = > e
14 [2] = > f
15 )
16
17 [2] = > Array
18 (
19 [0] = > g
20 [1] = > h
21 [2] = > i
22 )

Desenvolvimento Web com PHP Página 85


4Linux – www.4linux.com.br Funções Nativas

23
24 )

Perceba então que o array original com 9 itens foi separado em 3 arrays, com 3 itens
cada.

4.3.5 Função array_combine

Esta função une dois arrays, sendo um array usado para as chaves e outro para os
itens.

1 <? php
2
3 $vetor1 = array ( ’1 ’ , ’2 ’ , ’3 ’) ;
4 $vetor2 = array ( ’ um ’ , ’ dois ’ , ’ tr ês ’) ;
5 $vetor3 = array_combine ( $vetor1 , $vetor2 ) ;
6
7 print_r ( $vetor3 ) ;

Desta forma teremos o vetor1 indicando o índice do vetor e vetor2 indicando os va-
lores.

O código acima irá exibir:

1 Array
2 (
3 [1] = > um
4 [2] = > dois
5 [3] = > tr ê s
6 )

Desenvolvimento Web com PHP Página 86


4Linux – www.4linux.com.br Funções Nativas

4.3.6 Função array_diff

Usado para verificar diferenças entre os valores de um array.

1 <? php
2
3 $vetor1 = array ( " a " = > " amor " , " paix ã o " , " carinho " , " saudade " ) ;
4 $vetor2 = array ( " b " = > " amor " , " paix ã o " , " saudade " ) ;
5 $resultado = array_diff ( $vetor1 , $vetor2 ) ;
6 print_r ( $resultado ) ;

O código acima irá exibir:

1 Array
2 (
3 [1] => carinho
4 )

4.3.7 Função array_merge

Faz a união/fusão entre um ou mais vetores, retornando o vetor resultante. Se os


vetores tiverem a mesma chave string, o último valor irá sobrescrever o primeiro.
Porém se a chave for numérica, o valor não será sobrescrito e sim adicionado ao
vetor resultante.

1 <? php
2
3 $vetor1 = array ( " cor " = > " vermelho " , 2 , 4) ;
4 $vetor2 = array ( " a " , " b " , " cor " = > " verde " , " forma " = >
" trapezoide " , 4) ;

Desenvolvimento Web com PHP Página 87


4Linux – www.4linux.com.br Funções Nativas

5 $resultado = array_merge ( $vetor1 , $vetor2 ) ;


6 print_r ( $resultado ) ;

O código acima irá exibir:

1 Array
2 (
3 [ cor ] = > verde
4 [0] = > 2
5 [1] = > 4
6 [2] = > a
7 [3] = > b
8 [ forma ] = > trapezoide
9 [4] = > 4
10 )

Perceba que a cor verde sobrepôs a cor vermelha ao realizar o merge, pois estavam
utilizando o mesmo índice (string). Quando o índice era numérico não houve sobre-
posição, então os demais valores foram apenas unidos, formando assim um novo
array.

4.3.8 Função array_fill

Preenche um array com valores pré-determinados.

1 <? php
2
3 $vetor = array_fill (5 , 3 , ’ Preenchendo ’) ;
4 print_r ( $vetor ) ;

O código acima irá exibir:

Desenvolvimento Web com PHP Página 88


4Linux – www.4linux.com.br Funções Nativas

1 Array
2 (
3 [5] = > Preenchendo
4 [6] = > Preenchendo
5 [7] = > Preenchendo
6 )

Onde o valor 5 indica o índice, ou seja, o vetor será preenchido a partir daquele
índice. O valor 3 indica o número de itens a serem acrescentados.

4.3.9 Função array_flip

Retorna um array com os valores invertidos, ou seja, ou índices passam a ser os


valores e os valores passam a ser os índices

1
2 <? php
3
4 $vetor = array ( " a " = > 0 , " b " = > 1 , " c " = > 2) ;
5 $vetor = array_flip ( $vetor ) ;
6 print_r ( $vetor ) ;

O código acima irá mostrar:

1 Array
2 (
3 [0] = > a
4 [1] = > b
5 [2] = > c
6 )

Desenvolvimento Web com PHP Página 89


4Linux – www.4linux.com.br Funções Nativas

4.3.10 Função array_reduce

Esta função reduz o vetor a um único valor, utilizando para isso uma função.

1 <? php
2 function soma ( $v , $w ) {
3 $v += $w ;
4 return $v ;
5 }
6
7 $vetor = array (1 , 2 , 3 , 4 , 5) ;
8 $resultado = array_reduce ( $vetor , " soma " ) ;
9 echo $resultado ;

Saída: 15

4.3.11 Função array_key_exists

Verifica se uma chave ou valor existe em um vetor.

1 <? php
2
3 $vetor = array ( " a " = > 1 , " b " = > 2) ;
4 if ( array_key_exists ( " b " , $vetor ) ) {
5 echo " O elemento ’b ’ est á no array ! " ;
6 }

Desenvolvimento Web com PHP Página 90


4Linux – www.4linux.com.br Funções Nativas

4.3.12 Função array_search

Esta função faz uma busca em um vetor por um valor. Ao encontrá-lo, retorna a
chave indicando a posição em que o valor se encontra.

1 <? php
2
3 $vetor = array (0 = > ’a ’ , 1 = > ’b ’ , 2 = > ’c ’ , 3 = > ’d ’) ;
4 $chave = array_search ( ’d ’ , $vetor ) ;
5 echo $chave ;

Saída: 3

4.3.13 Função array_slice

Esta função retorna uma parte de um vetor.

1 <? php
2 $vetor = array ( " a " , " b " , " c " , " d " , " e " ) ;
3 print_r ( array_slice ( $vetor , 0 , 3) ) ;
4 ?>

Onde 0 indica o índice do primeiro valor e 3 indica o número de itens que deve ser
apresentado.

Saída:

1 Array
2 (
3 [0] = > a

Desenvolvimento Web com PHP Página 91


4Linux – www.4linux.com.br Funções Nativas

4 [1] = > b
5 [2] = > c
6
7 )

4.3.14 Função array_splice

Esta função remove uma parte do vetor e subsitui com outros valores.

1 <? php
2
3 $vetor = array ( " vermelho " , " verde " , " azul " , " amarelo " ) ;
4 array_splice ( $vetor , -1 , 1 , array ( " preto " , " marrom " ) ) ;

Neste exemplo, o item amarelo será removido e substituído pelos valores preto e
marrom. Sendo assim o valor do vetor será: ("vermelho", "verde", "azul", "preto",
"marrom")

4.3.15 Função array_replace

Substitui valores de um vetor

1 <? php
2 $vetor = array ( " laranja " , " banana " , " ma ç ã " , " mam ã o " ) ;
3 $subtituir = array (0 = > " abacaxi " , 4 = > " cereja " ) ;
4 print_r ( array_replace ( $vetor , $substituir ) ) ;
5 ?>

Saída:

Desenvolvimento Web com PHP Página 92


4Linux – www.4linux.com.br Funções Nativas

1 Array
2 (
3 [0] = > abacaxi
4 [1] = > banana
5 [2] = > ma ç ã
6 [3] = > mam ã o
7 [4] = > cereja
8 )

4.3.16 Função array_sum

Função simples, que retorna a soma dos valores do vetor.

1 <? php
2
3 $vetor = array (1 , 2 , 3 , 4) ;
4 echo "A soma dos valores é = " . array_sum ( $vetor ) ;

Saída: 11

4.3.17 Função array_unique

Pesquisa por valores duplicados no array, removendo-os.

1 <? php
2
3 $vetor = array (1 = > " verde " , 2 = > " vermelho " , 3 = > " verde " , 4 = >
" azul " , 5 = > " vermelho " ) ;

Desenvolvimento Web com PHP Página 93


4Linux – www.4linux.com.br Funções Nativas

4 $resultado = array_unique ( $vetor ) ;


5 print_r ( $resultado ) ;

O código acima irá mostrar:

1 Array
2 (
3 [1] = > verde
4 [2] = > vermelho
5 [4] = > azul
6
7 )

4.3.18 Função array_walk

Aplica uma função a cada item do vetor.

1 <? php
2
3 $frutas = array ( " lim ã o " , " laranja " , " banana " , " melancia " ) ;
4
5 function test_print ( $item , $key ) {
6 echo " $key . $item < br >\ n " ;
7 }
8
9 array_walk ( $frutas , ’ test_print ’) ;

Desenvolvimento Web com PHP Página 94


4Linux – www.4linux.com.br Funções Nativas

4.3.19 Função in_array

Mais uma função que verifica se determinado valor está presente em um vetor.

1 <? php
2
3 $vetor = array ( " um " , " dois " , " tr ê s " , " quatro " ) ;
4 if ( in_array ( " dois " , $vetor ) ) {
5 echo " Encontrei o valor dois " ;
6 }

4.3.20 Função sizeof

É sinônimo para a função count().

4.3.21 Função count

A função count conta o número de itens em um vetor.

1 <? php
2
3 $vetor = array ( " um " , " dois " , " tr ê s " , " quatro " ) ;
4 $resultado = count ( $vetor ) ;
5 echo $resultado ;

Saída: 4

Desenvolvimento Web com PHP Página 95


4Linux – www.4linux.com.br Funções Nativas

4.3.22 Função serialize

A função serialize permite que você transforme um array em uma string, que pode
ser armazenada de várias formas diferentes.

1 <? php
2
3 $array = array ( ’ Luke ’ , ’ Leia ’ , ’ Han Solo ’ , array ( ’ Vader ’ , ’ Storm
Trooper ’) ) ;
4 serialize ( $array ) ;

No exemplo acima a variável contém um array multidimensional e utilizamos a função


serialize para armazenar estes dados como uma string.

4.3.23 Função unserialize

Faz o processo contrário ao serialize, ou seja, converte os dados armazenados no


banco de dados, em PHP.

Desenvolvimento Web com PHP Página 96


4Linux – www.4linux.com.br Funções Nativas

4.4 Outras funções

4.4.1 Função mail

A função mail, como o próprio nome diz, permite o envio de e-mails através do PHP.

1 <? php
2
3 $messagem = " Ol á \ nEnvio este e - mail para desejar \ num bom dia !!! " ;
4 mail (’ fulano@empresa . com . br ’ , ’ Assunto ’ , $messagem ) ;

Onde: fulano@empresa.com.br refere-se ao destinatário

Assunto é a string que indica o assunto do e-mail

E no parâmetro final temos a mensagem, que preferencialmente deve ser colocada


em uma variável.

4.4.2 Função md5

A função md5 calcula o hash md5 de uma string.

1 <? php
2
3 $string = ’ exemplo ’;
4 echo md5 ( $string )

Desenvolvimento Web com PHP Página 97


4Linux – www.4linux.com.br Funções Nativas

4.4.3 Função sha1

Assim como a função md5(), existem outras, relacionadas a outros tipos de algorit-
mos de hash como por exemplo sha1(), crc32(), etc. A função sha calcula a hash
sha1 de uma string.

1 <? php
2
3 $string = ’ exemplo ’;
4 echo sha1 ( $string )

Também é possível utilizar a função sha1_file() para criar um hash de um arquivo


utilizando o algoritmo sha1.

4.4.4 Função hash

Ainda é possível utiliza a função hash, que permite escolhermos qual tipo de algo-
ritmo de hash enviar como parâmetro para a função:

1 <? php
2
3 $string = ’ exemplo ’;
4 echo hash ( md5 , $string )

Desenvolvimento Web com PHP Página 98


Capítulo 5

Funcionalidades Web
4Linux – www.4linux.com.br Funcionalidades Web

5.1 Protocolo HTTP

Toda aplicação web, seja ela construída utilizando PHP, Python, Ruby, Java ou qual-
quer outra linguagem, vive sob as normas e especificações do protocolo HTTP. O
protocolo HTTP, HyperText Transfer Protocol, define como mensagens são formata-
das e transmitidas, além de quais ações servidores web e navegadores devem tomar
em resposta a vários comandos diferentes. Por exemplo, quando você coloca uma
URL em seu navegador, isso na verdade envia um comando HTTP para o servidor
web desta página, que irá localizar o documento que você quer ver e transmiti-lo para
seu navegador.

O protocolo HTTP é um protocolo stateless, já que cada comando é executado inde-


pendentemente, sem qualquer conhecimento dos comandos que vieram antes dele
ou que virão depois dele. Este é o principal motivo do desenvolvimento de aplica-
ções para web ser tão diferente e peculiar, comparado com o desenvolvimento de
software em geral. Um protocolo stateless é um protocolo onde seus comandos são
independentes, assim como nossos scripts PHP. Eles são executados e terminados,
sem qualquer persistência na memória. Coincidência? Não, o PHP foi feito com a
web e o protocolo HTTP em mente.

São definidos no protocolo HTTP oito métodos que indicam a ação a ser realizada
a partir de uma requisição. Os oito métodos são GET, HEAD, POST, PUT, DELETE,
TRACE, OPTIONS e CONNECT.

Desenvolvimento Web com PHP Página 100


4Linux – www.4linux.com.br Funcionalidades Web

5.2 Sessões

O protocolo HTTP é stateless, portanto, cada requisição GET, POST, PUT, etc. é
independente. Não é possível saber se o GET feito há 5 minutos foi feito por mim ou
por outro usuário. Isso complica um pouco a nossa vida quando queremos criar, por
exemplo, aplicações com autenticação, com partes da aplicação acessíveis somente
por um usuário específico.

Para contornar este problema, existe a sessão. A sessão pode ser criada pelo PHP,
que irá identificar o usuário e manter uma sessão viva para ele. Cada visitante terá
uma sessão e através dela poderemos identificar quem é que, inclusive, autenticá-
los.

O tempo de vida de uma sessão é, por padrão, 24 minutos. Esse valor pode ser
alterado na configuração do PHP, alterando a diretiva session.gc_maxlifetime.

Desenvolvimento Web com PHP Página 101


4Linux – www.4linux.com.br Funcionalidades Web

5.3 Cookies

Um cookie é uma forma de armazenar informações no navegador de um usuário. O


navegador guarda informações de um website que podem ser acessadas posterior-
mente por este website, até que o cookie expire ou seja removido. Essas informa-
ções podem ser criadas, alteradas, removidas e acessadas somente pelo website de
origem.

Podemos utilizar cookies para vários fins, mas seu uso mais comum é para salvar as
preferências do usuário na sua aplicação (língua padrão, cor do texto, se ele gosta de
café ou chá, etc.). Também é comum utilizar cookies para manter um usuário logado
em nosso sistema, mesmo que a sessão expire.

Cookies possuem um tempo de vida, definido pelo website que o criou. O navegador
irá removê-los automaticamente quando este tempo de vida expirar, mas o usuário
sempre poderá limpar os cookies de seu navegador manualmente.

Desenvolvimento Web com PHP Página 102


4Linux – www.4linux.com.br Funcionalidades Web

5.4 GET e POST

O método GET serve para fazer uma requisição de recurso, seja este recurso uma
página web (HTML), um script (PHP) ou qualquer outro arquivo, como uma imagem
ou um vídeo. Uma vez feita a requisição, o servidor irá retornar o recurso pedido.

O método POST serve para enviar dados a serem processados pelo recurso espe-
cificado. Os dados a serem processados são sempre inclusos no corpo do método
POST. É através do método POST que é possível preencher e processar formulários
na web.

Desenvolvimento Web com PHP Página 103


4Linux – www.4linux.com.br Funcionalidades Web

5.5 Headers HTTP

Já falamos do protocolo HTTP e de suas requisições. Toda requisição possui um


corpo e toda requisição deve receber uma resposta. Headers HTTP, ou cabeçalhos
HTTP, são estes corpos. Eles carregam informações de requisições e respostas,
especificando os métodos utilizados, seus parâmetros e suas informações.

Por exemplo, quando colocamos uma URL em nosso navegador e apertamos enter,
a seguinte requisição é enviada:

1 GET / minhapagina . php HTTP /1.1


2 Host : meusite . com
3 User - Agent : Mozilla /5.0 ( X11 ; Linux i686 ) AppleWebKit /534.30
( KHTML , like Gecko ) Ubuntu /10.10 Chromium /12.0.742.112
Chrome /12.0.742.112 Safari /534.30
4 Accept :
text / html , application / xhtml + xml , application / xml ; q =0.9 ,*/*; q =0.8
5 Accept - Language : en - us , en ; q =0.5
6 Accept - Encoding : gzip , deflate , sdch
7 Accept - Charset : ISO -8859 -1 , utf -8; q =0.7 ,*; q =0.7
8 Keep - Alive : 300
9 Connection : keep - alive
10 Cookie : PHPSESSID = r2t5uvjq435r4q7ib3vtdjq120
11 Pragma : no - cache
12 Cache - Control : no - cache

Após essa requisição, nosso navegador receberá uma resposta. Que parece mais
ou menos com isto:

1 HTTP /1. x 200 OK


2 Transfer - Encoding : chunked
3 Date : Thu , 18 Aug 2011 14:38:14 GMT
4 Server : Apache

Desenvolvimento Web com PHP Página 104


4Linux – www.4linux.com.br Funcionalidades Web

5 Connection : close
6 Pragma : public
7 Etag : " be65d40792fe1a9d5bebcad7dfdd8205 "
8 Cache - Control : max - age =3600 , public
9 Content - Type : text / html ; charset = UTF -8
10 Last - Modified : Thu , 18 Aug 2011 14:38:14 GMT
11 Content - Encoding : gzip
12 Vary : Accept - Encoding , Cookie , User - Agent
13
14 CONTE Ú DO DA P À GINA AQUI

Isso, basicamente, são cabeçalhos HTTP. Os cabeçalhos contém informações sobre


a requisição e a resposta. Quando estamos em um script PHP, podemos manipular
o conteúdo do cabeçalho da resposta. Para manipular o cabeçalho HTTP, usamos a
função header().

A manipulação mais simples de cabeçalho HTTP é a manipulação do local da página.


Ao trocarmos o valor do local da página, faremos com que o navegador redirecione
para o novo valor. Por exemplo:

1 <? php
2
3 header (’ Location : http :// www .4 linux . com . br ’) ;

Quando entrarmos nesse script PHP, seremos redirecionados para a página inicial
da 4Linux. Podemos também manipular os cabeçalhos HTTP e dizer que a página
não é realmente uma página, e sim, um arquivo qualquer. Por exemplo:

1 <? php
2 header (’ Content - type : application / pdf ’) ;
3
4 header (’ Content - Disposition : attachment ; filename = " documento . pdf " ’) ;
5

Desenvolvimento Web com PHP Página 105


4Linux – www.4linux.com.br Funcionalidades Web

6 readfile ( ’4 Linux . pdf ’) ;

No código acima estamos alterando o tipo de conteúdo da página e sua disposição.


Agora o navegador sabe que está acessando não uma página web, mas um arquivo
PDF. Através da manipulação do Content-Disposition, o navegador irá baixar o ar-
quivo ao invés de exibi-lo. Na terceiro linha, usamos a função readfile para carregar
o conteúdo do arquivo 4Linux.pdf em nosso script.

Desenvolvimento Web com PHP Página 106


4Linux – www.4linux.com.br Funcionalidades Web

5.6 Variáveis superglobais

No PHP, existem variáveis nativas que estão disponíveis em qualquer escopo. Elas
são, na maioria das vezes, arrays bidimensionais ou multidimensionais. As variáveis
supergloais são essenciais para qualquer aplicação web. Já vimos um pouco sobre
POST e GET e logo logo veremos como trabalhar com eles no PHP.

5.6.1 $_SERVER

Contém informações sobre ambiente de execução do script. Caso o script esteja


sendo rodado em um servidor web, informações sobre o cliente e o servidor serão
exibidas. Caso o script esteja sendo executado da linha de comando, informações
sobre a máquina e o shell serão exibidas.

5.6.2 $_ENV

Contém todas as variáveis do ambiente de execução. É muito comum utilizarmos a


$_ENV quando estamos desenvolvendo scripts de linha de comando e precisamos
acessar variáveis de ambiente definidas por outros processos ou o usuário.

5.6.3 $_GET

Contém variáveis passadas para o script usando o método HTTP GET, isto é, através
da URL.

1 <? php
2 echo $_GET [ ’ meunome ’]; // Retorna Z é

Desenvolvimento Web com PHP Página 107


4Linux – www.4linux.com.br Funcionalidades Web

Sendo que, na URL, eu chamei o script desta forma: http://www.meusite.com.br/teste.php?meunome

5.6.4 $_POST

Contém variáveis passadas para o script usando o método HTTP POST, isto é, atra-
vés de um formulário.

1 <? php
2
3 if ( $_POST ) {
4 echo $_POST [ ’ meunome ’];
5 }
6
7 ?>
8 < form action = " teste . php " method = " POST " >
9 < input type = " text " name = " meunome " / >
10 < input type = " submit " value = " Enviar " / >
11 </ form >

5.6.5 $_SESSION

Contém variáveis definidas durante a sessão do navegador. Deve ser usada junto
com a função session_start().

1 <? php
2 session_start () ;
3
4 $_SESSION [ ’ MeuCarro ’] = ’ Palio ’;
5
6 echo $_SESSION [ ’ MeuCarro ’];

Desenvolvimento Web com PHP Página 108


4Linux – www.4linux.com.br Funcionalidades Web

5.6.6 $_COOKIE

A variável superglobal $_COOKIE contém as informações de nosso cookie, armaze-


nadas em um array. Para criar um cookie, utilizamos a função setcookie().

1 <? php
2 setcookie ( " MeuCarro " , " Palio " ) ;
3 echo $_COOKIE [ ’ MeuCarro ’];

Podemos determinar o tempo de vida de um cookie passando um terceiro parâmetro


para a função. Este terceiro parâmetro é a data de expiração do cookie, no formato
de timestamp UNIX. Para definirmos essa data de forma mais amigável e legível,
vamos utilizar a função strtotime() que converte uma frase de data em uma timestamp
UNIX.

1 <? php
2 setcookie ( " MeuCarro " , " Palio " , strtotime ( " +1 month " ) ) ;
3 echo $_COOKIE [ ’ MeuCarro ’];

Nosso cookie irá expirar em um mês a partir da data de hoje.

5.6.7 $_REQUEST

Contém informações sobre as superglobais $_GET, $_POST e $_COOKIE. Não é


uma boa prática utilizá-la, nem muito seguro.

5.6.8 $_FILES

Contém informações sobre arquivos enviados através de um formulário.

Desenvolvimento Web com PHP Página 109


4Linux – www.4linux.com.br Funcionalidades Web

5.6.9 $GLOBALS

Contém todas as variáveis disponíveis no escopo global

1 <? php
2
3 function carro () {
4 $carro = " Fiesta local " ;
5
6 echo ’ $carro no escopo global ’ . $GLOBALS [ " carro " ] . ’ < br / > ’;
7 echo " \ $carro no escopo local : $carro " ;
8 }
9
10 $carro = " Fiesta global " ;
11 echo carro () ;

Desenvolvimento Web com PHP Página 110


4Linux – www.4linux.com.br Funcionalidades Web

5.7 Formulários

Processamento de formulários é uma das tarefas mais comuns quando estamos tra-
balhando com aplicações web. É através dos formulários que nossos usuários po-
dem manipular e gerenciar informações, portanto é possível dizer que os formulários
são a pedra filosofal das aplicações web.

Quando um formulário é enviado, suas informações são enviadas para algum lugar
através do método POST. Este "algum lugar"irá interpretar as informações e fazer
"alguma coisa"com elas. Como fazemos essa teoria virar prática? Fácil. Já conhe-
cemos o protocolo, seus métodos e variáveis superglobais no PHP. Para montar um
formulário e processá-lo, só nos falta criar o formulário:

exemplos/formulario.html
1 < html >
2 < head >
3 <h1 > Meu formul á rio </ h1 >
4
5 < form action = " processa . php " method = " POST " >
6 <p >< label > Nome : </ label > < input type = " text " name = " nome " / > </ p >
7 <p >< label > Email : </ label > < input type = " text " name = " email " / > </ p >
8 <p ></p >
9 <p >< input type = " submit " value = " Enviar " / > </ p >
10 </ form >
11
12 </ head >
13 </ html >

Nosso formulário é bem simples. Observe que o campo action está direcionando
para o arquivo processa.php. É este arquivo que vai receber a requisição POST e
processar as informações do nosso formulário vindas no cabeçalho. Não temos ele
ainda, certo? Então vamos criá-lo:

exemplos/processa.php
1 <? php

Desenvolvimento Web com PHP Página 111


4Linux – www.4linux.com.br Funcionalidades Web

2
3 echo " Recebi um formul á rio de { $_POST [ ’ nome ’]} , com o email
{ $_POST [ ’ email ’]}. " ;

Não é um processamento muito rebuscado, mas ainda é um exemplo. Observe que


estamos pegando as informações de nosso formulário utilizando a variável superglo-
bal $_POST. A partir deste exemplo, podemos fazer qualquer coisa. Guardar estas
informações em um arquivo, um banco de dados, enviar por email, etc.

Agora, observe este segundo exemplo. Não vamos mais ter o formulário em uma
página e processá-lo em outra, vamos fazer tudo em uma só página.

exemplos/formulario.php
1 <? php
2
3 if ( $_POST ) {
4 echo " Recebi um formul á rio de { $_POST [ ’ nome ’]} , com o email
{ $_POST [ ’ email ’]}. " ;
5 }
6
7 ?>
8 <html >
9 <head >
10 <h1 > Meu formul á rio </ h1 >
11
12 < form action = " " method = " POST " >
13 <p >< label > Nome : </ label > < input type = " text " name = " nome " / > </p >
14 <p >< label > Email : </ label > < input type = " text " name = " email " / > </p >
15 <p > </p >
16 <p >< input type = " submit " value = " Enviar " / > </p >
17 </ form >
18
19 </ head >
20 </ html >

Note que o campo action está vazio. Quando o campo action de um formulário está

Desenvolvimento Web com PHP Página 112


4Linux – www.4linux.com.br Funcionalidades Web

vazio, ele irá fazer a requisição para a própria página. Note também que temos uma
condição envolvendo nosso echo. Essa condição serve para executarmos aquele
bloco de código somente quando recebermos uma requisição POST. Mas porque
isso? Porque não queremos acessar a variável superglobal $_POST sem que ela
possua valores, senão, teremos alguns erros em nossa página.

Desenvolvimento Web com PHP Página 113


Capítulo 6

Banco de Dados
4Linux – www.4linux.com.br Banco de Dados

6.1 O que é um banco de dados?

Durante a maior parte do tempo como um desenvolvedor, você irá criar ou encontrar
aplicações que utilizam alguma forma de armazenamento de dados. Estes dados
podem estar sendo armazenados em simples arquivos no sistema de arquivos de
máquina, ou podem estar sendo armazenados em estruturas mais complexas como
um banco de dados. Bancos de dados, em sua grande maioria, são constituídos
com base nas relações existentes entre suas entidades, dando o nome de bancos
de dados relacionais.

Um banco de dados é um conjunto de registros organizados em uma estrutura pré-


definida. Ele é composto de tabelas, linhas e colunas. As tabelas são como pastas,
onde guardamos vários tipos de informações. Linhas são os registros dentro dessas
"pastas"e as colunas são tipos de informações que as linhas possuem. Em outras
palavras, as colunas definem a estrutura dos dados e as linhas são os dados em
si.

Desenvolvimento Web com PHP Página 115


4Linux – www.4linux.com.br Banco de Dados

6.2 O que é SQL?

SQL, conhecida como Structured Query Language, é uma linguagem de programa-


ção declarativa, criada para gerenciar informações em um sistema gerenciador de
banco de dados. É com a SQL que podemos criar, alterar, remover e ler informa-
ções de nosso banco de dados. Existem dois grandes tipos de comandos SQL: uma
declaração e uma consulta. Em uma consulta, ou query, especificamos cláusulas e
expressões para ler informações do banco. Em uma declaração, fazemos o mesmo,
mas com o objetivo de executar algo (como uma remoção, alteração, etc.).

Desenvolvimento Web com PHP Página 116


4Linux – www.4linux.com.br Banco de Dados

6.3 MySQL

O MySQL é um sistema de gerenciamento de banco de dados, que utiliza a lingua-


gem SQL como interface. Ele foi inventado em 1994 e sua primeira versão lançada
em 1995. Desde o surgimento do PHP 3, o MySQL tornou-se um fiel aliado, sendo
usados juntos na maioria dos projetos para web. Um banco de dados é nada mais,
nada menos, que um conjunto de registros organizados.

Desde a versão 3, o PHP possui um suporte muito sólido ao MySQL. Hoje, na ver-
são 5, existem três formas de nos comunicarmos com um banco de dados MySQL.
Existe a extensão MySQL clássica, que existe desde a versão 3, e existe também a
extensão MySQL Improved (mysqli), adicionada na versão 5. E, é claro, a extensão
PDO (PHP Data Objects), também adicionada na versão 5. Neste curso, aprendere-
mos a trabalhar com a extensão clássica. No segundo curso da Formação PHP da
4Linux trabalharemos com o PDO.

6.3.1 Instalando o MySQL

A grande maioria das distribuições Linux possuem pacotes do MySQL em seus re-
positórios. Isso nos ajuda muito e torna a instalação do MySQL muito simples e
rápida. Abra o shell, logue como root e use o gerenciador de pacotes para instalar o
MySQL:

1 su
2 apt - get update
3 apt - get install mysql - server

Durante a instalação o MySQL irá pedir para você definir uma senha padrão para o
usuário root no MySQL. Escolha uma senha ou coloque 123456.

Desenvolvimento Web com PHP Página 117


4Linux – www.4linux.com.br Banco de Dados

6.3.2 Trabalhando com o MySQL

Podemos trabalhar com o MySQL através da linha de comando ou através de apli-


cativos gráficos, que facilitam a administração de bancos de dados. Mas, antes de
conhecer as ferramentas gráficas e suas vantagens, vamos ver como podemos tra-
balhar com o MySQL através do shell.

Abra o shell e inicie o MySQL:

1 mysql -u root -p

O MySQL irá pedir a senha do usuário root. Por padrão, essa senha é definida por
você durante a instalação do MySQL. Uma vez dentro do shell do MySQL, podemos
começar a interagir com o sistema gerenciador de banco de dados utilizando a lin-
guagem SQL. Antes de trabalharmos em um banco de dados, precisamos selecioná-
lo para uso. No mySQL, fazemos isso utilizando o comando USE:

1 USE nomedobanco ;

Desenvolvimento Web com PHP Página 118


4Linux – www.4linux.com.br Banco de Dados

6.4 PostgreSQL

O PostgreSQL é um poderoso sistema gerenciador de banco de dados objeto-relacional


de código aberto e 100% livre. O PostgreSQL é considerado o banco de dados li-
vre mais avançado do mundo por várias razões. Suporta largamente os padrões
ANSI-SQL 92/99 e respeita a normativa ACID. É altamente extensível, tem vários ti-
pos de índices para diversos tipos de aplicações. Ele é utilizado em larga escala por
empresas como Skype, Caixa Econômica Federal e Datasus.

O PHP trabalha muito bem com o PostgreSQL e, assim como o MySQL, possui
extensões nativas para trabalhar com ele. Existem duas formas de nos comunicar-
mos com um banco de dados PostgreSQL: a primeira, utilizando a extensão pgsql,
e a segunda, utilizando o PDO. Neste curso vamos conhecer a extensão pgsql e
como usá-la para fazer nossas aplicações interagirem com um banco de dados Post-
greSQL.

6.4.1 Instalando o PostgreSQL

A grande maioria das distribuições Linux possuem pacotes do PostgreSQL em seus


repositórios. Isso nos ajuda muito e torna a instalação do PostgreSQL muito simples
e rápida. Abra o shell, logue como root e use o gerenciador de pacotes para instalar
o PostgreSQL:

1 su
2 apt - get update
3 apt - get install postgresql

Desenvolvimento Web com PHP Página 119


4Linux – www.4linux.com.br Banco de Dados

6.4.2 Trabalhando com o PostgreSQL

Podemos trabalhar com o PostgreSQL através da linha de comando ou através de


aplicativos gráficos, que facilitam a administração de bancos de dados. Mas, antes
de conhecer as ferramentas gráficas e suas vantagens, vamos ver como podemos
trabalhar com o PostgreSQL através do shell.

Para trabalhar com o PostgreSQL, você precisa estar logado como o superusuário
postgres.

1 su - postgres

Agora você pode abrir o cliente do PostgreSQL:

1 psql

Uma vez dentro do shell do PostgreSQL, podemos começar a interagir com o sistema
gerenciador de banco de dados utilizando a linguagem SQL. Antes de trabalharmos
em um banco de dados, precisamos selecioná-lo para uso. No PostgreSQL, fazemos
isso pela linha de comando passando um parâmetro para o psql:

1 psql nomedobanco

Desenvolvimento Web com PHP Página 120


4Linux – www.4linux.com.br Banco de Dados

6.5 SQLite

O SQLite é um sistema gerenciador de banco de dados embutido escrito utilizando a


linguagem de programação C. O SQLite é distribuído como uma biblioteca que pode
ser facilmente embarcada em sua aplicação, sem a necessidade de um processo ou
o uso de um sistema gerenciador de banco de dados externo. Ele é 100% livre e de
código aberto.

O SQLite é muito utilizado para armazenamento rápido e simples de informações, já


que ele é muito leve e pode ser embutido em uma aplicação facilmente. Ele é um
pouco diferente de outros sistemas de banco de dados, já que ele possui tipagem
dinâmica. Uma coluna no SQLite não possui um tipo, já os valores sim. Isso significa
que uma mesma coluna pode ter inteiros, doubles e string.

O PHP possui uma extensão para se trabalhar com o SQLite. Essa extensão traz
dentro de si o próprio SQLite, então podemos dizer que é como se o PHP tivesse
um banco de dados embutido, sem precisarmos conectar ou instalar um sistema
gerenciador de banco de dados como MySQL ou PostgreSQL.

Desenvolvimento Web com PHP Página 121


4Linux – www.4linux.com.br Banco de Dados

6.6 SQL básico

Vamos conhecer alguns comandos SQL básicos para montarmos nosso primeiro
banco de dados. Embora o padrão SQL seja único, diferentes sistemas gerencia-
dores de banco de dados implementam o padrão de maneiras diferentes. Portanto,
alguns comandos em MySQL são diferentes em PostgreSQL. Vamos mostrar aqui as
principais diferenças.

Note que a linguagem SQL é muito fácil de compreender. Quando você está fazendo
uma declaração ou consulta, é praticamente uma frase que você está escrevendo.
Justamente por isso, é fácil se confundir entre informações e comandos. Portanto,
quando estiver escrevendo SQL, escreva comandos, cláusulas e expressões sempre
com letras maiúsculas, e informações, minúsculas.

6.6.1 Create

O comando CREATE permite que nós criemos uma série de elementos comuns em
um banco de dados. Com o comando create, podemos criar bancos de dados, tabe-
las, índices, sequências e muito mais. Vamos conhecer os casos mais comuns de
uso do Create.

Criar um banco de dados

Podemos criar um banco de dados utilizando a seguinte declaração SQL:

1 CREATE DATABASE nomedobanco ;

Observe que declarações SQL sempre devem ser terminadas com um ponto-e-
vírgula.

Criar uma tabela

Desenvolvimento Web com PHP Página 122


4Linux – www.4linux.com.br Banco de Dados

Podemos criar uma tabela em nosso banco de dados utilizando a seguinte declara-
ção SQL:

1 CREATE TABLE posts (


2 id INTEGER ,
3 titulo VARCHAR (255) ,
4 conteudo TEXT ,
5 PRIMARY KEY ( id )
6 );

Uma tabela é como uma pasta, onde podemos guardar informações separadas por
colunas. Vamos criar uma tabela "posts", para guardar as informações dos posts de
nosso blog, como o seu título e o conteúdo do post.

Observe que, a cada linha, criamos colunas para nossa tabela. Colunas são como
seções da pasta que criamos, que podem conter determinados tipos de informações.
Esses tipos de informações foram especificados na própria linha, onde dizemos de-
pois do nome da coluna se ela é VARCHAR ou TEXT. Logo veremos mais sobre
isso.

Observe também a linha PRIMARY KEY. Primary key significa chave primária e, do
ponto de vista de bancos de dados relacionais, é a chave que identifica o registro em
uma tabela. Cada registro é único e possui um valor. Esse valor é a chave primária.
Precisamos de uma coluna para nossas chaves primárias e estamos dizendo que a
coluna id será essa coluna.

Criar uma sequência

Podemos criar uma sequência para uma tabela de nosso banco de dados utilizando
a seguinte declaração SQL:

1 CREATE SEQUENCE nome_da_sequencia ;

Desenvolvimento Web com PHP Página 123


4Linux – www.4linux.com.br Banco de Dados

Sequências são úteis para colunas que devem ser automaticamente incrementadas
ou decrementadas quando um registro for inserido na tabela.

Criar um índice

Podemos criar um índice em uma tabela de nosso banco de dados utilizando a se-
guinte declaração SQL:

1 CREATE INDEX nome_do_indice ON tabela ( coluna , outracoluna ) ;

Índices servem para melhorar a performance de nosso banco. Quando fazemos mui-
tas consultas em algumas colunas, é importante que seja criado um índice nessas
colunas.

6.6.2 Chaves estrangeiras

Além de chaves primárias, nossas tabelas podem ter chaves estrangeiras. Chaves
estrangeiras são chaves que estão diretamente relacionadas com outras chaves de
outras tabelas no mesmo banco de dados. Por exemplo: um post e um usuário. Um
post está diretamente relacionado ao seu autor, isto é, usuário. Portanto, podemos
criar uma chave estrangeira e relacionar a tabela de posts com usuários:

1 CREATE TABLE usuarios (


2 usuario_id INT NOT NULL AUTO_INCREMENT ,
3 usuario VARCHAR (255) NOT NULL ,
4 senha VARCHAR (40) NOT NULL ,
5 PRIMARY KEY ( usuario_id ) ,
6 INDEX ( usuario_id )
7 ) ENGINE = INNODB ;
8
9 CREATE TABLE posts (
10 post_id INT NOT NULL AUTO_INCREMENT ,

Desenvolvimento Web com PHP Página 124


4Linux – www.4linux.com.br Banco de Dados

11 autor INT NOT NULL ,


12 post VARCHAR (140) NOT NULL ,
13 PRIMARY KEY ( post_id ) ,
14 INDEX ( post_id ) ,
15 FOREIGN KEY autor ( autor ) REFERENCES usuarios ( usuario_id )
16 ON UPDATE CASCADE ON DELETE CASCADE
17 ) ENGINE = INNODB ;

Observe a linha ON UPDATE CASCADE ON DELETE CASCADE. Esta linha de-


termina o comportamento que será adotado pelo banco de dados caso um registro
desta tabela seja alterado ou removido. A opção CASCADE faz com que as rela-
ções (de chave estrangeira) sejam automaticamente removidas, sem que haja uma
intervenção manual. Sem a opção cascade, não poderíamos remover um post.

6.6.3 Alter

O comando ALTER permite que nós alteremos as características de um banco de


dados ou tabela existente. Podemos alterar as colunas de uma tabela utilizando o
alter da seguinte forma:

1 ALTER TABLE posts MODIFY titulo TEXT ;


2 ALTER TABLE posts ADD autor VARCHAR (100) ;
3 ALTER TABLE posts DROP conteudo ;
4 ALTER TABLE posts ADD PRIMARY KEY ( id ) ;

Na primeira linha estamos modificando o tipo da coluna titulo para TEXT. Na se-
gunda, adicionamos uma nova coluna chamada autor. Na terceira, removemos a
coluna conteudo. E, na última linha, adicionamos uma chave primária em nossa
tabela na coluna id.

Desenvolvimento Web com PHP Página 125


4Linux – www.4linux.com.br Banco de Dados

6.6.4 Drop

O comando DROP permite que nós deletemos bancos de dados e tabelas. Ele é
muito similar ao create, mas possui menos parâmetros.

1 DROP TABLE posts ;


2 DROP TABLE posts , usuarios , comentarios ;
3 DROP DATABASE banco ;

6.6.5 Truncate

O comando TRUNCATE permite que nós esvaziemos uma tabela em nosso banco
de dados. Isso irá remover todos os registros de uma tabela.

1 TRUNCATE TABLE posts ;

6.6.6 Insert

O comando INSERT permite a inserção de registros em uma tabela. É com ele que
nós podemos começar a aprender mais sobre manipulação de dados em um banco
de dados relacional. Para inserir informações em uma tabela, podemos:

1 INSERT INTO posts ( titulo , conteudo ) VALUES ( ’ Meu primeiro post ’ ,


’ Este post é muito legal , tri legal ! ’) ;
2 INSERT INTO posts ( titulo , conteudo ) VALUES ( ’ O Gr ê mio ganhou ! ’ , ’O
tricolor ataca de novo ! ’) ;

Desenvolvimento Web com PHP Página 126


4Linux – www.4linux.com.br Banco de Dados

Observe que estamos especificando não só os valores que queremos inserir, mas
onde queremos inseri-los. Especificamos que vamos inserir dados nas colunas titulo
e conteudo, e logo depois com a cláusula VALUES, especificamos que valores irão
nestas colunas respectivamente.

6.6.7 Update

Podemos utilizar o comando UPDATE para atualizar registros em uma tabela. Para
atualizar registros, podemos:

1 UPDATE posts SET titulo = ’ Novo post ’ WHERE titulo = ’ Meu primeiro
post ’;
2 UPDATE posts SET titulo = ’ Novo post ’ , conteudo = ’ Novo conteudo ’
WHERE id =1;

Usamos a cláusula SET para especificar quais colunas receberão novos valores.
Podemos especificar mais de uma coluna separando-as por vírgulas.

Observe que temos uma cláusula WHERE junto de nosso comando UPDATE. A cláu-
sula WHERE espera uma condição e serve como filtro. Caso os registros de nossa
tabela batam com a condição especificada no WHERE, eles serão repassados para
o comando que utilizamos, neste caso o UPDATE.

É comum utilizarmos a chave primária de um registro para fazer condições onde que-
remos encontrar um registro específico, mas podemos fazer condições com qualquer
coluna da tabela. E não só condições de igualdade:

• Igual: =

• Diferente: != ou <>

• Menor que: <

Desenvolvimento Web com PHP Página 127


4Linux – www.4linux.com.br Banco de Dados

• Maior que: >

• Menor ou igual: <=

• Maior ou igual: >=

Além disso, podemos ter múltiplas condições:

1 UPDATE posts SET titulo = ’ Novo post ’ WHERE categoria = 1 AND tag =
’ futebol ’;

Se executarmos o comando UPDATE sem WHERE, iremos alterar todos os registros


da tabela. E tenho certeza que não é isso que queremos, não é?

6.6.8 Delete

Podemos remover dados de nossas tabelas utilizando o comando DELETE. Assim


como o UPDATE, o DELETE também pode ou não ter uma cláusula WHERE, ve-
jam:

1 DELETE FROM posts ;


2 DELETE FROM posts WHERE id = 1;

Na primeira linha, vamos remover todos os registros da tabela posts. Na segunda,


vamos remover apenas o registro com id igual a 1.

Desenvolvimento Web com PHP Página 128


4Linux – www.4linux.com.br Banco de Dados

6.6.9 Select

Com certeza o comando SELECT é o comando mais interessante de se trabalhar


quando falamos de bancos de dados. É ele que permite que nós façamos consultas
em nosso banco. O comando SELECT é muito versátil e permite que façamos con-
sultas simples ou extremamente complexas, dependendo de como as informações
estão organizadas em nosso banco de dados.

Para fazer uma simples consulta, fazemos:

1 SELECT * FROM posts ;


2 SELECT titulo FROM posts ;
3 SELECT titulo , conteudo FROM posts ;

O primeiro parâmetro que o comando SELECT espera são as colunas que queremos
ver. O segundo parâmetro é a tabela que queremos consultar. Quando não quiser-
mos ver colunas específicas, mas sim, todas as colunas de uma tabela, podemos
utilizar o asterisco.

Também podemos filtrar e manipular nossa consulta de várias maneiras. O primeiro


exemplo é utilizar o comando SELECT junto com a cláusula WHERE:

1 SELECT * FROM posts WHERE categoria = 2;


2 SELECT titulo , conteudo FROM posts WHERE categoria <> 2 AND tag =
’ futebol ’;

Organizando resultados

Para organizar os resultados de nossa consulta por uma coluna, podemos:

1 SELECT * FROM posts ORDER BY id ;


2 SELECT * FROM posts ORDER BY titulo DESC ;

Desenvolvimento Web com PHP Página 129


4Linux – www.4linux.com.br Banco de Dados

Por padrão, será utilizada a ordem ascendente. Mas podemos, como na segunda
linha do exemplo acima, organizar de forma descendente. Se organizarmos de forma
descendente uma coluna que possui letras, não números, a ordem será Z-A não A-
Z.

Limitando resultados

Podemos também limitar o número de resultados de nossa consulta:

1 SELECT * FROM posts LIMIT 0 ,10;


2 SELECT * FROM posts LIMIT 30 ,100;

O primeiro número é o início e o segundo, o fim. É como se disséssemos para nosso


banco de dados: faça a consulta e me traga os resultados de 30 a 100.

Buscando informações

Podemos buscar informações nos registros de nossas tabelas utilizando o comando


SELECT em conjunto com a cláusula WHERE e o operador LIKE. O LIKE permite
que nós filtremos os resultados de nossa consulta com base no conteúdo de uma
coluna:

1 SELECT * FROM posts WHERE titulo LIKE ’ Meu carro ’;


2 SELECT * FROM posts WHERE titulo LIKE ’% futebol % ’;

A primeira linha irá trazer todos os registros da tabela post que possuam exatamente
a frase "Meu carro"na coluna titulo. Já a segunda linha irá trazer todos os registros
que possuam em qualquer parte da coluna titulo a palavra "futebol".

Usamos o % para indicar um curinga, que pode representar qualquer letra, número
ou palavra em nossa string.

Desenvolvimento Web com PHP Página 130


4Linux – www.4linux.com.br Banco de Dados

6.6.10 Join

O comando join permite que, em uma consulta SQL, nós juntemos duas tabelas a
partir de uma condição. Vamos supor que nós estamos querendo saber todos os
posts que possuem uma categoria. Vamos executar a seguinte consulta:

1 SELECT * FROM posts , categorias WHERE posts . categoria =


categorias . nome ;

Esta consulta irá retornar apenas os posts que possuem categorias, deixando de
lado os posts que não possuem.

6.6.11 Left join

O comando left join é um pouco diferente do join normal. Ao invés de combinar os


resultados, o left join irá preservar os resultados da tabela que está à esquerda do
comando.

1 SELECT * FROM posts LEFT JOIN categorias ON posts . categoria =


categorias . nome ;

Esta consulta irá retornar todos os posts, mesmo que eles não possuam uma cate-
goria.

6.6.12 Right join

O comando right join é muito similar ao left join, contudo, ele preservará os resultados
da tabela que está à direita do comando.

Desenvolvimento Web com PHP Página 131


4Linux – www.4linux.com.br Banco de Dados

1 SELECT * FROM posts RIGHT JOIN categorias ON posts . categoria =


categorias . nome ;

6.6.13 Inner join

O comando inner join é um pouco diferente dos joins que já vimos. Ele permite que
seja feita a união de tabelas através das suas relações com chaves estrangeiras,
também conhecidas como foreign keys. Vamos supor que nós temos duas tabelas,
uma de usuários e uma de seguidores. Algo como um mini-twitter.

Nossa tabela de seguidores possui apenas duas colunas: o usuário (usuario_id)


e quem ele segue (id_seguindo). Essas duas colunas fazem referência à chave
primária da tabela de usuários (id_usuario). Precisamos de uma consulta que traga
as informações dos usuários que estão seguindo o usuário 1. Para isso:

1 SELECT * FROM usuarios INNER JOIN seguidores ON


( seguidores . id_seguindo = usuarios . usuario_id ) WHERE
seguidores . id_usuario = 1

Desenvolvimento Web com PHP Página 132


4Linux – www.4linux.com.br Banco de Dados

6.7 Tipos de dados

As colunas de uma tabela em um banco de dados podem ter diferentes tipos. É im-
portantíssimo que durante a modelagem de nosso banco, façamos a escolha correta
de tipos de dados, garantindo boa performance e alocação correta de memória.

Tipos de dados

CHAR(X): Uma string fixa com 0 a 255 caracteres.

VARCHAR(X): Uma string variável com 0 a 255 caracteres.

TINYTEXT: Uma string com tamanho máximo de 255 caracteres

TEXT: Uma string de texto com tamanho máximo de 65535 caracteres

BLOB: Uma string binária com tamanho máximo de 65535 caracteres

MEDIUMTEXT: Uma string de texto com tamanho máximo de 16777215 caracteres

MEDIUMBLOB: Uma string binária com tamanho máximo de 16777215 caracteres

LONGTEXT: Uma string de texto com tamanho máximo de 4294967295 caracteres

LONGBLOB: Uma string binária com tamanho máximo de 4294967295 caracteres

Desenvolvimento Web com PHP Página 133


4Linux – www.4linux.com.br Banco de Dados

Tipos de números

TINYINT(X): Número inteiro de -128 a 127. 0 a 255 caso seja UNSIGNED.

SMALLINT(X): Número inteiro de -32768 a 32767. 0 a 65535 caso seja UNSIG-


NED.

MEDIUMINT(X): -8388608 a 8388607. 0 a 16777215 caso seja UNSIGNED.

INT(X): -2147483648 a 2147483647. 0 a 4294967295 caso seja UNSIGNED.

BIGINT(X): -9223372036854775808 a 9223372036854775807. 0 a 18446744073709551615


caso seja UNSIGNED.

FLOAT: Um número decimal pequeno.

DOUBLE: Um número decimal grande.

Observe que X é onde você define o tamanho do dado. UNSIGNED significa que o
número inteiro só pode ser positivo.

Desenvolvimento Web com PHP Página 134


4Linux – www.4linux.com.br Banco de Dados

Tipos de datas

DATE: Guarda um valor de data no formato YYYY-MM-DD, 3 bytes

DATETIME: Guarda um valor de data e horário no formato YYYY-MM-DD HH:MM:SS,


8 bytes

TIMESTAMP: Guarda um valor de data no formato YYYYMMDDHHMMSS, 4 bytes

TIME: Guarda um valor de horário no formato HH:MM:SS, 3 bytes

Outros tipos

ENUM (’a’, ’b’, ’c’): Significa enumeração e permite que você especifique uma lista
de valores possíveis para a coluna. De 1 a 65535.

SET (’a’, ’b’, ’c’): Similar ao ENUM, exceto que múltiplos valores podem ser escolhi-
dos. De 1 a 64.

Desenvolvimento Web com PHP Página 135


4Linux – www.4linux.com.br Banco de Dados

6.8 Sequences e Auto Increment

Quando criamos nossa tabela, criamos uma coluna do tipo INT, não nula. Depois,
definimos essa coluna como sendo a chave primária de nossa tabela. Chaves primá-
rias precisam ser únicas, portanto, não é interessante deixarmos o preenchimento
dessa coluna a cargo do software ou do usuário. O banco é que deveria controlar
essa chave.

Lembram das sequences que falamos anteriormente? Elas permitem que incremen-
temos ou decrementemos o valor de uma coluna quando um registro for inserido na
tabela desta coluna. E isso é exatamente o que queremos fazer quando estamos
trabalhando com bancos de dados relacionais e chaves primárias.

No PostgreSQL, criamos uma tabela e uma sequência para que a chave primária
seja incrementada toda vez que um registro for adicionado na tabela. Fazemos isso
da seguinte forma:

1 CREATE SEQUENCE posts_id_seq ;


2
3 CREATE TABLE posts (
4 id INTEGER DEFAULT NEXTVAL ( ’ posts_id_seq ’) ,
5 titulo VARCHAR (255) ,
6 conteudo TEXT ,
7 PRIMARY KEY ( id )
8 );

Já no MySQL, não temos o conceito de sequences. Para incrementarmos uma chave


primária automaticamente vamos utilizar o comando AUTO_INCREMENT. Quando o
AUTO_INCREMENT é associado a uma coluna, toda vez que inserirmos um novo
registro, ela será incrementada. Veja:

1 CREATE TABLE posts (


2 id INTEGER AUTO_INCREMENT ,

Desenvolvimento Web com PHP Página 136


4Linux – www.4linux.com.br Banco de Dados

3 titulo VARCHAR (255) ,


4 conteudo TEXT ,
5 PRIMARY KEY ( id )
6 );

Desenvolvimento Web com PHP Página 137


4Linux – www.4linux.com.br Banco de Dados

6.9 Funções do MySQL

Para fazer nossa aplicação em PHP conversar com um banco de dados MySQL, nós
precisamos utilizar um conjunto de funções disponíveis na extensão MySQL do PHP.
Com essas funções, podemos conectar com um banco de dados, executar comandos
e fazer consultas.

Para podermos fazer uso dessas funções, precisamos instalar a extensão MySQL
em nosso PHP, o que pode ser feito com uma simples instalação de pacote:

1 apt - get install php5 - mysql

6.9.1 Conexão

Antes de começarmos a interagir com o banco de dados, precisamos nos conectar


com ele. Vamos utilizar a função mysql_connect() para conectar no MySQL. Como
estamos em um ambiente de desenvolvimento, o Apache, o PHP e o MySQL estão
rodando na mesma máquina. Então, basta conectarmos com o endereço de loop-
back, 127.0.0.1 ou localhost, ao invés de um servidor externo.

1 mysql_connect ( " localhost " , " root " , " 123456 " ) ;
2 mysql_select_db ( " nomedobanco " ) ;

A função mysql_connect() espera três parâmetros: o hostname do servidor onde


está o MySQL, o usuário do MySQL e sua senha. Além de conectarmos, observe
que na segunda linha estamos utilizando a função mysql_select_db(). Essa função
seleciona um banco de dados no MySQL para trabalharmos. Ela age como o USE
que vimos anteriormente.

Desenvolvimento Web com PHP Página 138


4Linux – www.4linux.com.br Banco de Dados

6.9.2 Inserindo registros

A fim de interagirmos com nosso banco de dados, precisamos de uma função que
nos permita executar declarações e consultas SQL. Essa função é a mysql_query().
Com esta função, podemos executar INSERTs, UPDATEs e outros comandos SQL.

Para inserirmos um registro, sabemos que precisamos utilizar o comando INSERT.


Mas vamos ver como isso funciona no PHP:

1 mysql_connect ( " localhost " , " root " , " 123456 " ) ;
2 mysql_select_db ( " blog " ) ;
3
4 $titulo = " Meu primeiro post " ;
5 $conteudo = " Meu post tri legal no meu blog ! "
6
7 mysql_query ( " INSERT INTO posts ( titulo , conteudo ) VALUES
(’ $titulo ’ , ’ $conteudo ’) " ) ;

Observe que, além de executar um INSERT, estamos manipulando a string passada


para a função mysql_query(), criando uma query dinâmica com as valores das variá-
veis que criamos logo acima.

Note também que não precisamos terminar nossa declaração com ponto-e-vírgula.

6.9.3 Atualizando registros

Para atualizarmos um registro, sabemos que precisamos utilizar o comando UP-


DATE, portanto:

1 mysql_connect ( " localhost " , " root " , " 123456 " ) ;
2 mysql_select_db ( " blog " ) ;

Desenvolvimento Web com PHP Página 139


4Linux – www.4linux.com.br Banco de Dados

3
4 $id = 1;
5 $titulo = " Meu novo post " ;
6
7 mysql_query ( " UPDATE posts SET titulo = ’ $titulo ’ WHERE id = $id " ) ;

6.9.4 Deletando registros

Para removermos um registro, sabemos que precisamos utilizar o comando DELETE,


portanto:

1 mysql_connect ( " localhost " , " root " , " 123456 " ) ;
2 mysql_select_db ( " blog " ) ;
3
4 $id = 5;
5
6 mysql_query ( " DELETE FROM posts WHERE id = $id " ) ;

6.9.5 Apresentando registros

Para fazer uma consulta em uma tabela, sabemos que precisamos utilizar o comando
SELECT, portanto:

1 mysql_connect ( " localhost " , " root " , " 123456 " ) ;
2 mysql_select_db ( " blog " ) ;
3
4 mysql_query ( " SELECT * FROM posts " ) ;

Desenvolvimento Web com PHP Página 140


4Linux – www.4linux.com.br Banco de Dados

Mas e agora? Fizemos a consulta, mas como podemos ver os resultados dela? A
função mysql_fetch_array() permite que nós vejamos os resultados de uma consulta
SQL como se fosse um array, onde as colunas são as chaves de nosso array e os
valores das colunas, valores do array.

1 mysql_connect ( " localhost " , " root " , " 123456 " ) ;
2 mysql_select_db ( " blog " ) ;
3
4 $query = mysql_query ( " SELECT * FROM posts " ) ;
5
6 while ( $item = mysql_fetch_array ( $query ) ) {
7 echo $item [ ’ titulo ’];
8 }

Observe que colocamos a função mysql_fetch_array() em um while. Fazemos isto


porque nossa consulta trouxe mais de um resultado, portanto, estamos trabalhando
com mais de um registro. O while se encarrega de executar o bloco de código contido
nele enquanto houverem registros a serem exibidos da nossa consulta.

O bloco de código dentro do while simplesmente traz o valor contido na coluna titulo
no registro atual. Listaremos, assim, todos os registros da tabela. Note também
que associamos uma variável ao retorno da função mysql_query() e passamos essa
variável como parâmetro para a mysql_fetch_array(), que precisa saber com qual
consulta ela vai trabalhar.

Desenvolvimento Web com PHP Página 141


4Linux – www.4linux.com.br Banco de Dados

6.10 Funções do PostgreSQL

Para fazer nossa aplicação em PHP conversar com um banco de dados PostgreSQL,
nós precisamos utilizar um conjunto de funções disponíveis na extensão PostgreSQL
do PHP. Com essas funções, podemos conectar com um banco de dados, executar
comandos e fazer consultas.

Para podermos fazer uso dessas funções, precisamos instalar a extensão Post-
greSQL em nosso PHP, o que pode ser feito com uma simples instalação de pa-
cote:

1 apt - get install php5 - pgsql

6.10.1 Conexão

Antes de começarmos a interagir com o banco de dados, precisamos nos conectar


com ele. Vamos utilizar a função pg_connect() para conectar no PostgreSQL. Como
estamos em um ambiente de desenvolvimento, o Apache, o PHP e o PostgreSQL
estão rodando na mesma máquina. Então, basta conectarmos com o endereço de
loopback, 127.0.0.1 ou localhost, ao invés de um servidor externo.

1 pg_connect ( " host = localhost port =5432 dbname = blog user = root
password =123456 " ) ;

A função pg_connect() espera apenas um parâmetro, mas este parâmetro pode pos-
suir sub-parâmetros separados por espaço. Observe que na verdade estamos pas-
sando cinco parâmetros: o hostname do servidor que vamos conectar, a porta do
servidor, o nome do banco, o usuário e sua senha.

Desenvolvimento Web com PHP Página 142


4Linux – www.4linux.com.br Banco de Dados

6.10.2 Inserindo registros

A fim de interagirmos com nosso banco de dados, precisamos de uma função que
nos permita executar declarações e consultas SQL. Essa função é a pg_query().
Com esta função, podemos executar INSERTs, UPDATEs e outros comandos SQL.

Para inserirmos um registro, sabemos que precisamos utilizar o comando INSERT.


Mas vamos ver como isso funciona no PHP:

1 pg_connect ( " host = localhost port =5432 dbname = blog user = root
password =123456 " ) ;
2
3 $titulo = " Meu primeiro post " ;
4 $conteudo = " Meu post tri legal no meu blog ! "
5
6 pg_query ( " INSERT INTO posts ( titulo , conteudo ) VALUES ( ’ $titulo ’ ,
’ $conteudo ’) " ) ;

Observe que, além de executar um INSERT, estamos manipulando a string passada


para a função pg_query(), criando uma query dinâmica com as valores das variáveis
que criamos logo acima.

Note também que não precisamos terminar nossa declaração com ponto-e-vírgula.

6.10.3 Atualizando registros

Para atualizarmos um registro, sabemos que precisamos utilizar o comando UP-


DATE, portanto:

1 pg_connect ( " host = localhost port =5432 dbname = blog user = root
password =123456 " ) ;

Desenvolvimento Web com PHP Página 143


4Linux – www.4linux.com.br Banco de Dados

2
3 $id = 1;
4 $titulo = " Meu novo post " ;
5
6 pg_query ( " UPDATE posts SET titulo = ’ $titulo ’ WHERE id = $id " ) ;

6.10.4 Deletando registros

Para removermos um registro, sabemos que precisamos utilizar o comando DELETE,


portanto:

1 pg_connect ( " host = localhost port =5432 dbname = blog user = root
password =123456 " ) ;
2
3 $id = 5;
4
5 pg_query ( " DELETE FROM posts WHERE id = $id " ) ;

6.10.5 Apresentando registros

Para fazer uma consulta em uma tabela, sabemos que precisamos utilizar o comando
SELECT, portanto:

1 pg_connect ( " host = localhost port =5432 dbname = blog user = root
password =123456 " ) ;
2
3 pg_query ( " SELECT * FROM posts " ) ;

Desenvolvimento Web com PHP Página 144


4Linux – www.4linux.com.br Banco de Dados

Mas e agora? Fizemos a consulta, mas como podemos ver os resultados dela? A
função pg_fetch_all() permite que nós vejamos os resultados de uma consulta SQL
como se fosse um array, onde as colunas são as chaves de nosso array e os valores
das colunas, valores do array.

1 pg_connect ( " host = localhost port =5432 dbname = blog user = root
password =123456 " ) ;
2
3 $query = pg_query ( " SELECT * FROM posts " ) ;
4
5 $itens = pg_fetch_all ( $query ) ;
6
7 foreach ( $itens as $item ) {
8 echo $item [ ’ titulo ’];
9 }

A função pg_fetch_all() retorna um array multidimensional todos todos os registros


trazidos pela nossa consulta. Sendo assim, podemos usar um simples foreach para
iterar entre os resultados e mostrar as informações que queremos, no caso, o valor
da coluna titulo.

Note também que associamos uma variável ao retorno da função pg_query() e pas-
samos essa variável como parâmetro para a pg_fetch_all(), que precisa saber com
qual consulta ela vai trabalhar.

Desenvolvimento Web com PHP Página 145


4Linux – www.4linux.com.br Banco de Dados

6.11 Funções do SQLite

Para fazer nossa aplicação em PHP conversar com um banco de dados SQLite, nós
precisamos utilizar um conjunto de funções disponíveis na extensão SQLite do PHP.
Com essas funções, podemos abrir um banco de dados, executar comandos e fazer
consultas.

Para podermos fazer uso dessas funções, precisamos instalar a extensão SQLite em
nosso PHP, o que pode ser feito com uma simples instalação de pacote:

1 apt - get install php5 - sqlite

6.11.1 Conexão

Antes de começarmos a interagir com o banco de dados, precisamos nos conectar


com ele. Contudo, o SQLite funciona de maneira um tanto diferente se comparado
com o MySQL e o PostgreSQL. Quando você instalou a extensão do SQLite, você
embutiu o SQLite no PHP. Isso significa que não é necessária uma abertura de co-
nexão ou qualquer coisa, basta abrir um arquivo. Isso mesmo, o SQLite guarda as
informações em um arquivo.

Este arquivo, criado pelo SQLite, é o seu banco de dados. Ele pode estar na pasta
da sua aplicação ou em qualquer outro parte do sistema. Para usarmos o banco,
mas abrir o arquivo. Caso o arquivo não exista, isto é, o banco não exista, ele será
criado automaticamente.

1 $banco = sqlite_open ( ’ meubanco ’) ;

Observe que estamos associando o retorno da função sqlite_open() a uma variável.


Isto é necessário porque outras funções de interação com o banco SQLite precisam

Desenvolvimento Web com PHP Página 146


4Linux – www.4linux.com.br Banco de Dados

saber com qualquer banco elas precisam interagir.

6.11.2 Inserindo registros

A fim de interagirmos com nosso banco de dados, precisamos de uma função que
nos permita executar declarações e consultas SQL. Essa função é a sqlite_query().
Com esta função, podemos executar INSERTs, UPDATEs e outros comandos SQL.

Para inserirmos um registro, sabemos que precisamos utilizar o comando INSERT.


Mas vamos ver como isso funciona no PHP:

1 $banco = sqlite_open ( ’ meubanco ’) ;


2
3 $titulo = " Meu primeiro post " ;
4 $conteudo = " Meu post tri legal no meu blog ! "
5
6 sqlite_query ( $banco , " INSERT INTO posts ( titulo , conteudo ) VALUES
(’ $titulo ’ , ’ $conteudo ’) " ) ;

Observe que, além de executar um INSERT, estamos manipulando a string passada


para a função sqlite_query(), criando uma query dinâmica com as valores das variá-
veis que criamos logo acima.

Note também que não precisamos terminar nossa declaração com ponto-e-vírgula.

6.11.3 Atualizando registros

Para atualizarmos um registro, sabemos que precisamos utilizar o comando UP-


DATE, portanto:

Desenvolvimento Web com PHP Página 147


4Linux – www.4linux.com.br Banco de Dados

1 $banco = sqlite_open ( ’ meubanco ’) ;


2
3 $id = 1;
4 $titulo = " Meu novo post " ;
5
6 sqlite_query ( $banco , " UPDATE posts SET titulo = ’ $titulo ’ WHERE id
= $id " ) ;

6.11.4 Deletando registros

Para removermos um registro, sabemos que precisamos utilizar o comando DELETE,


portanto:

1 $banco = sqlite_open ( ’ meubanco ’) ;


2
3 $id = 5;
4
5 sqlite_query ( $banco , " DELETE FROM posts WHERE id = $id " ) ;

6.11.5 Apresentando registros

Para fazer uma consulta em uma tabela, sabemos que precisamos utilizar o comando
SELECT, portanto:

1 $banco = sqlite_open ( ’ meubanco ’) ;


2
3 sqlite_query ( $banco , " SELECT * FROM posts " ) ;

Desenvolvimento Web com PHP Página 148


4Linux – www.4linux.com.br Banco de Dados

Mas e agora? Fizemos a consulta, mas como podemos ver os resultados dela?
A função sqlite_fetch_all() permite que nós vejamos os resultados de uma consulta
SQL como se fosse um array, onde as colunas são as chaves de nosso array e os
valores das colunas, valores do array.

1 $banco = sqlite_open ( ’ meubanco ’) ;


2
3 $query = sqlite_query ( $banco , " SELECT * FROM posts " ) ;
4
5 $itens = sqlite_fetch_all ( $query ) ;
6
7 foreach ( $itens as $item ) {
8 echo $item [ ’ titulo ’];
9 }

A função sqlite_fetch_all() retorna um array multidimensional todos todos os registros


trazidos pela nossa consulta. Sendo assim, podemos usar um simples foreach para
iterar entre os resultados e mostrar as informações que queremos, no caso, o valor
da coluna titulo.

Note também que associamos uma variável ao retorno da função sqlite_query() e


passamos essa variável como parâmetro para a sqlite_fetch_all(), que precisa saber
com qual consulta ela vai trabalhar.

Desenvolvimento Web com PHP Página 149

Você também pode gostar