• Nenhum resultado encontrado

Apostila Completa de PHP Linux.pdf

N/A
N/A
Protected

Academic year: 2021

Share "Apostila Completa de PHP Linux.pdf"

Copied!
150
0
0

Texto

(1)

Desenvolvimento Web com PHP

(2)
(3)

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.

(4)

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.

(5)

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.

(6)

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.

(7)
(8)

2.1 Como funciona um servidor web

Um servidor web é um programa de computador, responsável por receber requisi-ções do protocolo HTTP, tomar arequisi-ções com base nessas requisirequisi-çõ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.

(9)

2.2 Como funciona o PHP

Quando uma página é requisitada ao nosso servidor web, ele irá procurar pela gina requisitada no sistema de arquivos, e caso ele encontre, o conteúdo desta pá-gina será exibido. Se esta pá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 1 0 / 1 0 / 2 0 1 0 < / 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 >

(10)

7 </ body >

(11)

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 i n s t a l l a p a c h e 2

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

1 http :// l o c a l h o s t

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.

(12)

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 i n s t a l l 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 / a p a c h e 2 r e s t a r t

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 m und o " ;

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!

(13)
(14)

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, vacriar-mos 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 % >

(15)

• 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 á m und o ! ’;

4 pr int ’ Ol á mu ndo ! ’;

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

(16)

3

4 # C o m e n t á rio de uma l inh a

5 6 /* C o m e n t á rio 7 com v á rias 8 l i n h a s 9 */ 10

(17)

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 $n ome = " Jo ã o " ;

3 $ e m a i l = " j o a o @ g m a i l . com " ;

4 $t ime = " 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 $t ime = " Gr ê mio " ;

3 echo $ tim e ;

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

(18)

• 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 $ tim e ;

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

(19)

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

(20)

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

(21)

• 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 concon-teú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.

(22)

1 <? php 2 $ v _ o u _ f = true ; 3 $ i n t e i r o = 10; 4 $ f l u t u a n t e = 5.2 2; 5 $ s t r i n g = " T e s t a n d o " ; 6 $ a r r a y = arr ay ( ’ a ’ , ’b ’ , ’c ’) ; 7 $ o b j e t o = new O b j e t o ; 8 $ r e c u r s o = fop en ( ’ arquivo ’ , ’r ’) ; 9 $n ull = 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.

(23)

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 s t r i n g

3 $var += 2; // $var ago ra é um i n t e i r o

4 $var = $var + 1.3; // $var ago ra é um flo at

5 $var = 5 + " 10 c a r r o s " ; // i n t e i r o ( $var = 15)

6 $var = " 1 casa " + " 1 casa " ; // i n t e i r o ( $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 $c ast = ( b o o l e a n ) $var ; // torna - se b o o l e a n o

4 $c ast = ( int ) $var ; // torna - se i n t e i r o

5 $c ast = ( fl oat ) $var ; // torna - se fl oa t

6 $c ast = ( s t r i n g ) $var ; // torna - se s t r i n g

7 $c ast = ( ar ray ) $var ; // torna - se ar ra y

8 $c ast = ( o b j e c t ) $var ; // torna - se o b j e c t

9 $c ast = ( un set ) $var ; // torna - se NULL

(24)
(25)

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 ; // r e s u l t a d o é 9 5 $d = $a + $b ; // r e s u l t a d o é 6 6 $e = $c - $d ; // r e s u l t a d o é 3

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

• Adição: +

• Subtração:

-• Multiplicação: • Divisão: /

(26)

Lembrando que o PHP possui tipagem dinâmica. Portanto: 1 <? php 2 $a = " 5 " ; // s t r i n g 3 echo $a + 2; // 7 , i n t e g e r 4 echo $a + ’5 carros ’; // 10 , i n t e g e r 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 é igu al a 1

3 $a += 2; // S o m a m o s 2 ao val or da vari á vel $a

4 $a -= 2; // S u b t r a i m o s 2 ao val or da vari á vel $a

5 $a *= 2; // M u l t i p l i c a m o s o val or da vari á vel $a por 2

6 $a /= 2; // D i v i d i m o s o val or 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 ; // I n c r e m e n t a m o s 1 e r e t o r n a m o s o val or 4 echo $a ++; // R e t o r n a m o s o val or e i n c r e m e n t a m o s 1 5 echo -- $a ; // D e c r e m e n t a m o s 1 e r e t o r n a m o s o val or 6 echo $a - -; // R e t o r n a m o s o v al or e d e c r e m e n t a m o s 1

(27)

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

(28)

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

(29)

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 " T e s t a n d o " ;

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 $n ome = ’ Jo ão ’;

3 echo " $ nom e e M ari a a nda m pela rua < br / > " ;

4 echo ’ $ nom e e M ari a a nda m 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 Q u e b r a de lin ha : \ n

2 T a b u l a ç ã o : \ t

(30)

4 A pr ó pria b arr a : \\

5 As pas s i m p l e s : \ ’

6 As pas d u p l a s : \ "

Vamos entender melhor usando o exemplo abaixo:

1 <? php

2 echo " < pre > Vou q u e b r a r a l in ha \ n " ;

3 echo " \ t E s t o u t a b u l a d o \ n " ;

4 echo " M o s t r a r a spa s duplas , sem q u e b r a r o c ó digo \ " \ n " ;

5 echo " M o s t r a r a b arr a \\ " ;

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 $ c a r r o = ’ Gol ’; 3 $cor = ’ Azul ’; 4 5 $ m e u c a r r o = $ c a r r o . $cor ; 6 $ o u t r o c a r r o = ’ Meu ’. $ c a r r o . ’ é ’. $cor . ’ ’; 7 8 echo $ m e u c a r r o ;

(31)

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.

(32)

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 $ i d a d e = 15;

3 if ( $ i d a d e < 18) {

4 echo ’ Voc ê n ã o pode e n t r a r aqui ! ’;

5 } else {

6 echo ’ Bem - v ind o 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 $ i d a d e = 21;

3 $ c a r t e i r i n h a = true ;

4 if ( $ i d a d e > 18 && $ c a r t e i r i n h a == true ) {

5 echo ’ Bem - v ind o ! ’;

(33)

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 $n ome = ’ Z é ’; 3 if ( $no me == ’Z é ’) { 4 echo ’ Ea í Z é ! ’; 5 } e l s e i f ( $ nom e == ’ Maria ’) { 6 echo ’ Ea í M ari a ! ’; 7 } else { 8 echo ’ Ea í n ing u é 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 $n ome = ’ Z é ’; 3 s w i t c h ( $no me ) { 4 case ’Z é ’: 5 echo ’ Ea í Z é ! ’; 6 br eak ; 7 8 case ’ Maria ’: 9 echo ’ Ea í M ari a ! ’; 10 br eak ; 11 12 case ’ Darth ’: 13 echo ’ Ea í V ade r ! ’; 14 br eak ; 15 16 case ’ Curinga ’:

(34)

17 echo ’ Ea í C u r i n g a ! ’; 18 br eak ; 19 20 d e f a u l t : 21 echo ’ Ea í rap á ? ’; 22 br eak ; 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 programaOpera-dores 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 é mai or que B ’;

8 } else {

9 $c = ’A n ã o é mai or que B ’;

10 }

11

12 $d = ( $a > $b ) ? ’A é mai or que B ’ : ’ A n ã o é ma ior que B ’;

13

14 echo $c ;

(35)

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 $ c o n t a d o r = 0; 4 5 wh ile ( $ c o n t a d o r < 10) { 6 echo $ c o n t a d o r ; 7 $ c o n t a d o r ++; 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 $ c o n t a d o r = 0; 4 5 wh ile ( $ c o n t a d o r < 10) { 6 7 echo $ c o n t a d o r ++;

(36)

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 $ c o n t a d o r = 1; 4 5 do { 6 7 $ q u a d r a d o = $ c o n t a d o r * $ c o n t a d o r ; 8 echo " O q u a d r a d o de $ c o n t a d o r é $quadrado < br / > " ; 9 $ c o n t a d o r ++; 10 11 } w hil e ( $ c o n t a d o r <= 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

(37)

1 <? php 2 3 for ( $ c o n t a d o r = 1; $ c o n t a d o r <= 10; $ c o n t a d o r ++) { 4 5 $ q u a d r a d o = $ c o n t a d o r * $ c o n t a d o r ; 6 echo " O q u a d r a d o de $ c o n t a d o r é $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 ( $ c o n t a d o r = 1; $ c o n t a d o r <= 10; $ c o n t a d o r ++) { 4 5 if ( $ c o n t a d o r == 3) { c o n t i n u e ; } 6 7 $ q u a d r a d o = $ c o n t a d o r * $ c o n t a d o r ; 8 echo " O q u a d r a d o de $ c o n t a d o r é $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.

(38)

1 <? php 2 3 for ( $ c o n t a d o r = 1; $ c o n t a d o r <= 10; $ c o n t a d o r ++) { 4 5 if ( $ c o n t a d o r == 3) { bre ak ; } 6 7 $ q u a d r a d o = $ c o n t a d o r * $ c o n t a d o r ; 8 echo " O q u a d r a d o de $ c o n t a d o r é $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.

(39)

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 $ p e s s o a s = arr ay ( ’ Jo ã o ’ , ’ Maria ’ , ’ Pedro ’) ;

3 p r i n t _ r ( $ p e s s o a s ) ;

No código acima, nós criamos um array chamado $pessoas e colocamos três valo-res dentro dele. Esses valovalo-res 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 $ p e s s o a s = arr ay ( ’ Jo ã o ’ , ’ Maria ’ , ’ Pedro ’) ;

3 v a r _ d u m p ( $ p e s s o a s ) ;

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.

(40)

1 <? php

2 $ p e s s o a s = arr ay ( ’ Jo ã o ’ , ’ Maria ’ , ’ Pedro ’) ;

3 echo $ p e s s o a s [1]; // M ari a

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 $ t e m p e r a t u r a s = arr ay ( ’ 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 $ t e m p e r a t u r a s = arr ay ( ’ Janeiro ’ = > 30 , ’ Fevereiro ’ = > 32 , ’ Mar ç o ’ = > 29) ;

3 echo " A t e m p e r a t u r a m é dia em J a n e i r o foi de : { $ t e m p e r a t u r a s [ ’ Janeiro ’]} gra us " ;

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"

(41)

1 <? php

2

3 $n ome = ’ C a r l o s Carne ’;

4 $t ime = ar ray ( ’ melhor ’ = > ’ Gr ê mio ’ , ’ pior ’ = > ’ Curintia ’) ;

5

6 // N ã o c o n c a t e n a d a s

7 echo " $ nom e t orc e para o { $ ti me [ ’ melhor ’]} " ;

8 echo " { $ nom e } t orc e para o { $ti me [ ’ melhor ’]} " ;

9

10 // C o n c a t e n a d a s

11 echo " " . $ nom e . " t orc e para o " . $ti me [ ’ melhor ’] . " " ;

12 echo ’ ’. $ nom e . ’ t orc e para o ’. $ti me [ ’ 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 $ t e m p e r a t u r a s = arr ay ( 4 ’2008 ’ = > ar ray ( 5 ’ Janeiro ’ = > 30 , 6 ’ Fevereiro ’ = > 32 ,

(42)

7 ’ Mar ç o ’ = > 29) , 8 ’2009 ’ = > ar ray ( 9 ’ Janeiro ’ = > 31 , 10 ’ Fevereiro ’ = > 34 , 11 ’ Mar ç o ’ = > 30) , 12 ’2010 ’ = > ar ray ( 13 ’ Janeiro ’ = > 32 , 14 ’ Fevereiro ’ = > 34 , 15 ’ Mar ç o ’ = > 28) 16 ) ; 17

18 echo " J a n e i r o de 2008 foi de : { $ t e m p e r a t u r a s [ ’2008 ’][ ’ Janeiro ’]} gr aus " ;

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 $ p e s s o a s = arr ay ( ’ Jo ã o ’ , ’ Maria ’ , ’ Pedro ’) ;

(43)

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 $ t e m p e r a t u r a s = arr ay ( ’ Janeiro ’ = > 30 , ’ Fevereiro ’ = > 32 , ’ Mar ç o ’ = > 29) ;

4

5 f o r e a c h ( $ t e m p e r a t u r a s as $ c h a v e = > $ v a l o r ) {

6 echo " A t e m p e r a t u r a m é dia de $ c h a v e foi de $ v a l o r graus < br / > " ;

7 }

Mas e arrays multidimensionais? Fácil. Se arrays multidimensionais são simples-mente arrays dentro de arrays, foreachs multidimensionais são simplessimples-mente forea-chs dentro de mais foreaforea-chs.

1 <? php 2 3 $ t e m p e r a t u r a s = arr ay ( 4 ’2008 ’ = > ar ray ( 5 ’ Janeiro ’ = > 30 , 6 ’ Fevereiro ’ = > 32 , 7 ’ Mar ç o ’ = > 29) , 8 ’2009 ’ = > ar ray ( 9 ’ Janeiro ’ = > 31 , 10 ’ Fevereiro ’ = > 34 , 11 ’ Mar ç o ’ = > 30) , 12 ’2010 ’ = > ar ray ( 13 ’ Janeiro ’ = > 32 , 14 ’ Fevereiro ’ = > 34 , 15 ’ Mar ç o ’ = > 28)

(44)

16 ) ;

17

18 f o r e a c h ( $ t e m p e r a t u r a s as $ano = > $ m e s e s ) {

19 echo " < strong > T e m p e r a t u r a s em $ano </ strong > < br / > " ;

20

21 f o r e a c h ( $ m e s e s as $mes = > $t emp ) {

22 echo " $mes : $ tem p 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 $ a r r a y = arr ay ( ’ Jo ã o ’ , ’ Maria ’) ; 4 5 $ a r r a y [] = ’ Jos é ’; 6 $ t i m e s [] = ’ Gr ê mio ’; 7 8 p r i n t _ r ( $ a r r a y ) ; 9 p r i n t _ r ( $ t i m e s ) ;

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

1 <? php

(45)
(46)

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 f u n c t i o n n e g r i t o ( $ v a l o r ) {

4 echo " < strong > $valor </ strong > " ;

5 }

6

7 echo n e g r i t o ( " Ol á m und o ! " ) ;

8 echo n e g r i t o ( " Ol á mundo , n o v a m e n t e ! " ) ;

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

(47)

6 li sta ( " 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 f u n c t i o n tax ar ( $ v a l o r ) { 4 $ v a l o r = $ v a l o r * 1.0 9; 5 r e t u r n $ v a l o r ; 6 } 7 8 $ p r e c o = 25; 9 $ c o m t a x a = tax ar ( $ p r e c o ) ; 10

11 echo " O pre ç o d est e l ivr o é $ p r e c o . Com taxa , fica : $ c o m t a x a " ;

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:

(48)

1 <? php 2 3 f u n c t i o n tax ar ( $valor , $ s u b t a x a = 1) { 4 $ v a l o r = $ v a l o r * $ s u b t a x a * 1.0 9; 5 r e t u r n $ v a l o r ; 6 } 7 8 $ p r e c o = 25; 9 $ c o m t a x a = tax ar ( $ p r e c o ) ; 10 $ c o m s u b t a x a = tax ar ( $preco , 1.0 2) ; 11

12 echo " O l ivr o c ust a $ p r e c o . Com taxa , fica : $ c o m t a x a . Com sub , fica : $ c o m s u b t a x a " ;

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 $t axa = 1. 09;

4

(49)

8 $ v a l o r = $ v a l o r * $ta xa ; 9 r e t u r n $ v a l o r ; 10 } 11 12 $ p r e c o = 25; 13 $ c o m t a x a = tax ar ( $ p r e c o ) ; 14

15 echo " O pre ç o d est e l ivr o é $ p r e c o . Com taxa , fica : $ c o m t a x a " ;

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 f u n c t i o n a d i c i o n a r (& $ f r u t a ) { 4 r e t u r n ++ $ f r u t a ; 5 } 6 7 $ l a r a n j a s = 5; 8 9 a d i c i o n a r ( $ l a r a n j a s ) ; 10 11 echo $ l a r a n j a s ;

(50)

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 $ a r r a y = arr ay (1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15) ; 4 $ i m p a r e s = a r r a y _ f i l t e r ( $array , f u n c t i o n ( $ v a l o r ) { r e t u r n $ v a l o r % 2; }) ; 5 6 p r i n t _ r ( $ i m p a r e s ) ;

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.

(51)

1 <? php 2 3 $ t e s t e = " Oi mun do " ; 4 $ c l o s u r e = f u n c t i o n () use ( $ t e s t e ) { echo $ t e s t e ; }; 5 6 $ c l o s u r e () ;

(52)
(53)

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 $ v a r i a v e l = 0;

3

4 if ( emp ty ( $ v a r i a v e l ) ) {

5 echo ’ Esta vari á vel é c o n s i d e r a d a vaz ia ! ’;

6 }

4.1.2 Função isset

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

1 <? php

2

3 $ v a r i a v e l = ’ ’;

4 if ( iss et ( $ v a r i a v e l ) ) {

5 echo " A vari á vel e x i s t e !!! " ;

6 }

(54)

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 $ v e t o r = arr ay ( ’ Isto ’ , ’é ’, ’ um array ’) ;

4 echo i s _ a r r a y ( $ v e t o r ) ? ’ Sim , isto é um arr ay . ’ : ’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 $ v a r i a v e l 1 = fal se ;

3

4 if ( i s _ b o o l ( $a ) ) {

5 echo ’A vari á vel $a é um v al or booleano ’;

6 }

4.1.5 Função is_callable

(55)

3 f u n c t i o n tes te () {

4 }

5

6 $ v a r i a v e l = ’ teste ’;

7

8 v a r _ d u m p ( i s _ c a l l a b l e ( $variavel , false , $no me ) ) ;

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 $ v a r i a v e l = 1 3 . 3 3 ; 3 if ( i s _ f l o a t ( $ v a r i a v e l ) ) { 4 echo " É f loa t !\ n " ; 5 } else { 6 echo " N ã o é f loa t !\ n " ; 7 }

4.1.7 Função is_int

(56)

1 <? php 2 $ v a r i a v e l = 13; 3 if ( i s _ i n t ( $ v a r i a v e l ) ) { 4 echo " É i n t e i r o !\ n " ; 5 } else { 6 echo " N ã o é i n t e i r o !\ n " ; 7 }

4.1.8 Função is_null

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

1 <? php 2 $ v a r i a v e l = NULL ; 3 4 if ( i s _ i n t ( $ v a r i a v e l ) ) { 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

(57)

4 if ( i s _ i n t ( $ v a r i a v e l ) ) { 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 f u n c t i o n g e t _ s t u d e n t s ( $obj ) { 4 if (! i s _ o b j e c t ( $obj ) ) { 5 r e t u r n fal se ; 6 } 7 8 r e t u r n $obj - > s t u d e n t s ; 9 } 10 11 $obj = new s t d C l a s s () ;

12 $obj - > s t u d e n t s = arr ay ( ’ Kalle ’ , ’ Ross ’ , ’ Felipe ’) ;

13

14 v a r _ d u m p ( g e t _ s t u d e n t s ( null ) ) ;

15 v a r _ d u m p ( g e t _ s t u d e n t s ( $obj ) ) ;

4.1.11 Função is_resource

(58)

1 <? php

2

3 $ c o n e x a o = @ m y s q l _ c o n n e c t ( ’ localhost ’ , ’ usuario ’ , ’ senha ’) ;

4 if (! i s _ r e s o u r c e ( $ c o n e x a o ) ) {

5 die ( ’ N ã o foi poss í vel c o n e c t a r ! : ’ . m y s q l _ e r r o r () ) ;

6 }

4.1.12 Função is_scalar

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

1 <? php 2 f u n c t i o n s h o w _ v a r ( $ v a r i a v e l ) { 3 if ( i s _ s c a l a r ( $ v a r i a v e l ) ) { 4 echo $ v a r i a v e l ; 5 } else { 6 echo " N ã o é e s c a l a r ! " ; 7 } 8 } 9 10 $pi = 3 . 1 4 1 6 ; 11 12 s h o w _ v a r ( $pi ) ;

4.1.13 Função is_string

(59)

2 v a r _ d u m p ( i s _ s t r i n g ( ’ teste ’) ) ;

3 v a r _ d u m p ( i s _ s t r i n g ( " 50 " ) ) ;

4 v a r _ d u m p ( i s _ s t r i n g (13) ) ;

5 v a r _ d u m p ( i s _ s t r i n g ( 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 $ v a r i a v e l = true ;

3 s e t t y p e ( $variavel , " s t r i n g " ) ;

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

(60)

1 <? php

2 $ v a r i a v e l = " t est e " ;

3 echo ’ Esta vari á vel é do tipo ’ . g e t t y p e ( $ v a r i a v e l ) ;

4.1.16 Função unset

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

1 <? php

2 set ( $ v a r i a v e l ) ;

3 echo " Vari á vel c r i a d a " ;

4 un set ( $ v a r i a v e l ) ;

5 echo " Vari á vel d e l e t a d a " ;

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 = arr ay (1 , 2 , arr ay ( " a " , " b " , " c " ) ) ;

3 v a r _ d u m p ( $a ) ;

(61)

1 ar ray (3) { 2 [0]= > 3 int (1) 4 [1]= > 5 int (2) 6 [2]= > 7 ar ray (3) { 8 [0]= > 9 s t r i n g (1) " a " 10 [1]= > 11 s t r i n g (1) " b " 12 [2]= > 13 s t r i n g (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 $ v e t o r = arr ay (1 , 2 , arr ay ( " a " , " b " , " c " ) ) ;

3 v a r _ e x p o r t ( $ v e t o r ) ;

4 ? >

O código acima irá exibir:

1 ar ray (

2 0 = > 1 ,

3 1 = > 2 ,

4 2 = >

(62)

6 0 = > ’a ’ ,

7 1 = > ’b ’ ,

8 2 = > ’c ’ ,

9 ) ,

(63)

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 $ a r t i l h e i r o = ’ Ronaldo ’;

3 $g ols = 19;

4

5 $ f o r m a t o = ’O a r t i l h e i r o do b r a s i l e i r ã o , % s , tem % d gols . ’;

6 p r i n t f ( $formato , $ a r t i l h e i r o , $go ls ) ;

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.

(64)

1 <? php

2 $ a r t i l h e i r o = ’ Jonas ’;

3 $g ols = 19;

4

5 $ f o r m a t o = ’O a r t i l h e i r o do b r a s i l e i r ã o , % s , tem % d gols . ’;

6 $ s t r i n g = s p r i n t f ( $formato , $ a r t i l h e i r o , $g ols ) ;

7 echo $ s t r i n g ;

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 $ f o r m a t o = ’O a r t i l h e i r o do b r a s i l e i r ã o , % s , tem % d gols . ’;

3

4 $ s t r i n g = v s p r i n t f ( $formato , ar ray ( ’ Jonas ’ , ’19 ’) ) ;

5 echo $ s t r i n g ;

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:

(65)

3 $ s t r i n g = " Oi mu ndo " ;

4 $ n o v a s t r i n g = s t r _ r e p l a c e ( " Oi " , " Tch au " , $ s t r i n g ) ;

5

6 echo $ n o v a s t r i n g ;

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 $ s t r i n g = " Ol á mu ndo cr uel ! " ;

4

5 $ o r i g i n a l = a rra y ( ’ mundo ’ , ’ cruel ’) ;

6 $ s u b s t i t u t o = arr ay ( ’ mundinho ’ , ’ feliz ’) ;

7 8 $ n o v a s t r i n g = s t r _ r e p l a c e ( $original , " co isa " , $ s t r i n g ) ; 9 $ o u t r a s t r i n g = s t r _ r e p l a c e ( $original , $ s u b s t i t u t o , $ s t r i n g ) ; 10 11 echo $ n o v a s t r i n g ; 12 echo $ o u t r a s t r i n g ;

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

(66)

htmlspe-cialchars_decode.

1 <? php

2 $ s t r i n g = " Te nha um <b > bom </ b > dia ! " ;

3 echo h t m l e n t i t e s ( $ s t r i n g ) ;

4

5 // A sa í da ser á : Ten ha 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 $ s t r i n g = " E ela me di sse : ’ te nha um <b > bom dia </ b > ’ e eu tive . " ;

3 echo h t m l e n t i t i e s ( $string , E N T _ Q U O T E S ) ;

4

5 // A sa í da ser á : E ela me dis se : & # 039; te nha um & lt ; bom & gt ; & # 0 3 9 ; 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.

(67)

3 echo h t m l s p e c i a l c h a r s ( $string , E N T _ Q U O T E S ) ;

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 $ s t r i n g = " Se ’3 & gt ; 2 ’ ent ã o ’2 & lt ; 3 ’ " ;

3 echo h t m l s p e c i a l c h a r s _ d e c o d e ( $string , E N T _ Q U O T E S ) ;

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 $ s t r i n g = " \ t \ t T e n h a um bom dia !!! :) " ; 4 echo $ s t r i n g ; 5 6 $ t r i m m e d = trim ( $ s t r i n g ) ;

(68)

7 echo $ t r i m m e d ;

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 $ s t r i n g = " \ t \ t T e n h a um bom dia !!! :) " ; 4 v a r _ d u m p ( $ s t r i n g ) ; 5 6 $ t r i m m e d = trim ( $ s t r i n g ) ; 7 v a r _ d u m p ( $ t r i m m e d ) ;

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 $ s t r i n g = " T e s t a n d o " ;

4 $ t r i m m e d = trim ( $string , " Tedo " ) ;

5 v a r _ d u m p ( $ t r i m m e d ) ;

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.

(69)

1 <? php 2 3 $ s t r i n g = ’ he llo wo rld ! ’; 4 echo u c f i r s t ( $ s t r i n g ) ; 5 6 // Sa í da Hel lo wor ld !

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 $ s t r i n g = ’ he llo wo rld ! ’; 4 echo u c w o r d s ( $ s t r i n g ) ; 5 6 // Sa í da Hel lo Wor ld !

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 $ s t r i n g = ’ He llo Wo rld ! ’;

4 echo l c f i r s t ( $ s t r i n g ) ;

(70)

6 // Sa í da hel lo Wor ld !

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 n l2b r ( " l inh a 1\ n l i n h a 2 \ n l i n h a 3 \ 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 $ s t r i n g = " Oi , tudo bem ? " ;

4 $ s t r i n g 1 = s t r _ s p l i t ( $ s t r i n g ) ;

(71)

8

9 // Sa í da : Arr ay ( [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 $ s t r i n g = " Oi , tudo bem ? " ; 4 $ s t r i n g 2 = s t r _ s p l i t ( $string , 5) ; 5 p r i n t _ r ( $ s t r i n g 2 ) ; 6 7 ? > 8 9 // Sa í da : Arr ay ( [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 s t r _ r e p e a t ( " @ " , 10) ;

3 ? >

4

(72)

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 $ s t r i n g = " May the fo rce be with you ! " ;

3 pr int s t r _ p a d ( $string , 10 00) ;

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 $ s t r i n g = " May the fo rce be with you ! " ;

3 pr int s t r _ p a d ( $string , 50 , " @ " , S T R _ P A D _ L E F T ) ;

4 pr int s t r _ p a d ( $string , 50 , " @ " , S T R _ P A D _ B O T H ) ;

5 pr int s t r _ p a d ( $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.

(73)

3 $ s t r i n g = ’ labirinto ’;

4 $mix = s t r _ s h u f f l e ( $ s t r i n g ) ;

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 $ s t r i n g = " Oi , como vai voce ? " ;

4 p r i n t _ r ( s t r _ w o r d _ c o u n t ( $string , 1) ) ;

5 echo s t r _ w o r d _ c o u n t ( $ s t r i n g ) ;

6

7 // Sa í da : Arr ay ( [0] = > Oi [1] = > como [2] = > vai [3] = > voce ) 4

Ou também:

1 <? php

2

3 $ s t r i n g = " Oi , como vai voce ? " ;

4 p r i n t _ r ( s t r _ w o r d _ c o u n t ( $string , 2) ) ;

5 echo s t r _ w o r d _ c o u n t ( $ s t r i n g ) ;

6

(74)

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 $ e m a i l = ’ l i n u s @ l i n u x . org ’; 4 $ d o m i n i o = s t r s t r ( $email , ’@ ’) ; 5 echo $ d o m i n i o ; 6 7 // Sa í da : lin ux . org

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

1 <? php

2

3 $u ser = s t r s t r ( $email , ’@ ’ , true ) ;

4 echo $ use r ;

5

(75)

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 $ s t r i n g 1 = ’2 ’; 4 $ s t r i n g 2 = ’2 ’; 5 v a r _ d u m p ( s t r c m p ( $string1 , $ s t r i n g 2 ) ) ;

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 $ s t r i n g = ’ May the s o u r c e be with you ! ’;

4 echo s t r l e n ( $ s t r i n g ) ;

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.

(76)

1 <? php 2 3 $ s t r i n g = ’0123456789 ’; 4 $ p r o c u r a r = ’7 ’; 5 $pos = s t r p o s ( $string , $ p r o c u r a r ) ; 6 7 if ( $pos === fal se ) {

8 echo " A s t r i n g ’ $procurar ’ n ã o foi e n c o n t r a d a na s t r i n g ’ $string ’ " ;

9 } else {

10 echo " A s t r i n g ’ $procurar ’ foi e n c o n t r a d a na s t r i n g ’ $string ’ " ;

11 echo " e e x i s t e na posi ç ã o $pos " ;

12 }

13

14 // Sa í da : A s t r i n g ’7 ’ foi e n c o n t r a d a na s t r i n g ’0123456789 ’ e e x i s t e 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 $ s t r i n g = ’0123456789 ’; 4 $ p r o c u r a r = ’0 ’; 5 $pos = s t r p o s ( $string , $ p r o c u r a r ) ; 6 7 if ( $pos == fal se ) {

(77)

10 echo " A s t r i n g ’ $procurar ’ foi e n c o n t r a d a na s t r i n g ’ $string ’ " ;

11 echo " e e x i s t e na posi ç ã o $pos " ;

12 }

13

14 // Sa í da : A s t r i n g ’0 ’ n ã o foi e n c o n t r a d a na s t r i n g ’0123456789 ’

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

1 <? php 2 3 $ s t r i n g = ’0123456789 ’; 4 $ p r o c u r a r = ’0 ’; 5 $pos = s t r p o s ( $string , $ p r o c u r a r ) ; 6 7 if ( $pos === fal se ) {

8 echo " A s t r i n g ’ $procurar ’ n ã o foi e n c o n t r a d a na s t r i n g ’ $string ’ " ;

9 } else {

10 echo " A s t r i n g ’ $procurar ’ foi e n c o n t r a d a na s t r i n g ’ $string ’ " ;

11 echo " e e x i s t e na posi ç ã o $pos " ;

12 }

13

14 // Sa í da : A s t r i n g ’0 ’ foi e n c o n t r a d a na s t r i n g ’0123456789 ’ e e x i s t e 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.

(78)

1 <? php 2 3 $ s t r i n g = ’ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 ’ ; 4 $ p r o c u r a r = ’0 ’; 5 $pos = s t r r p o s ( $string , $ p r o c u r a r ) ; 6 7 if ( $pos == fal se ) {

8 echo " A s t r i n g ’ $procurar ’ n ã o foi e n c o n t r a d a na s t r i n g ’ $string ’ " ;

9 } else {

10 echo " A s t r i n g ’ $procurar ’ foi e n c o n t r a d a na s t r i n g ’ $string ’ " ;

11 echo " e e x i s t e na posi ç ã o $pos " ;

12 }

13

14 // Sa í da : A s t r i n g ’0 ’ foi e n c o n t r a d a na s t r i n g ’ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 ’ e e x i s t e 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 $ s t r i n g = ’ a b c d e A B C D E a b c d e A B C D E ’; 3 $ p r o c u r a r = ’a ’; 4 $pos = s t r r p o s ( $string , $ p r o c u r a r ) ; 5 6 if ( $pos === fal se ) {

Referências

Documentos relacionados

Esse grupo de 3.294 municípios brasileiros que não estão nem no topo nem na base da pirâmide social deu a Dilma Rousseff (PT), no primeiro turno de 2014, 27,3 milhões de votos,

Como consequência dessa dependência, “o texto didático traz para sala de aula mais um personagem, seu autor, que passa a estabelecer um dialogo com o professor e seus

Considerando que o valor de bolsa e os indicadores de geração de valor são cada vez mais utilizados pelos investidores ao analisar o desempenho econômico e

Documento contendo análise de 40 (quarenta) prestações de contas dos subprojetos financiados por intermédio de Organismos Internacionais e elaboração relatório

capacidade de transporte aéreo internacional oferecidas, segundo considerações comerciais de mercado. Por força desse direito, as Partes Contratantes não devem limitar

2.º A avaliação do processo de desenvolvimento e aprendizagem dos alunos do 1.º ao 9.º ano do Ensino Fundamental e do Programa de Educação de Jovens e Adultos

Esse é um saber empírico sobre si mesma, e essa questão foi a principal e mais relevante para as mulheres, no retorno à vida sexual, após o parto: sentir-se pronta e sentir que

Biologia populacional de Pareiorhina rudolphi Pareiorhina rudolphi Pareiorhina rudolphi (Loricariidae, Pareiorhina rudolphi (Loricariidae, (Loricariidae, (Loricariidae,