sumário · 2 sumário aula 01 ..... 6

291
1

Upload: others

Post on 12-Aug-2020

12 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Sumário · 2 Sumário Aula 01 ..... 6

1

Page 2: Sumário · 2 Sumário Aula 01 ..... 6

2

Sumário Aula 01 ............................................................................................................................. 6

Instalando e configurando um servidor Web. ........................................................... 7

Instalação do Servidor .............................................................................................. 9

Estudando o mundo da Programação. .................................................................... 12

Introdução à web: ................................................................................................... 12

Web é um sistema Hipertexto/Hipermídia ............................................................. 12

Linguagem HTML .................................................................................................. 13

Partes de um documento HTML ............................................................................ 13

Páginas Estáticas VS Dinâmicas ............................................................................ 13

Páginas Dinâmicas: ................................................................................................ 14

Páginas dinâmicas de cliente: ................................................................................. 15

Páginas dinâmicas de servidor: .............................................................................. 15

O que é Javascript ................................................................................................... 16

O que é Visual Basic Script .................................................................................... 16

DHTML .................................................................................................................. 17

Exercícios: .............................................................................................................. 18

Aula 02 ........................................................................................................................... 21

O que é CSS? .......................................................................................................... 21

Para começar: ......................................................................................................... 21

Cor nos links: .......................................................................................................... 21

Espaçamento entre linhas: ...................................................................................... 22

Espaçamento entre caracteres: ................................................................................ 22

Links sem sublinhado: ............................................................................................ 22

Incluir estilos para todo um site web: ..................................................................... 23

O que é CGI? .......................................................................................................... 24

O que é Perl?........................................................................................................... 25

O que é ASP? .......................................................................................................... 26

O que é PHP? .......................................................................................................... 26

O que é JSP? ........................................................................................................... 28

PHP ......................................................................................................................... 28

Exercícios ............................................................................................................... 40

Aula 03 ........................................................................................................................... 43

Instalando o Notepad++. ........................................................................................ 43

Variáveis ................................................................................................................. 49

Inteiros: ................................................................................................................... 50

Ponto Flutuante: ...................................................................................................... 50

Page 3: Sumário · 2 Sumário Aula 01 ..... 6

3

Strings: .................................................................................................................... 50

Array: ...................................................................................................................... 50

Booleans: ................................................................................................................ 51

Aplicações: ............................................................................................................. 51

Desenvolvimento do programa: ............................................................................. 52

Exercícios ............................................................................................................... 62

Aula 04 ........................................................................................................................... 65

Comandos: .............................................................................................................. 65

Declaração de strings: ............................................................................................. 74

Concatenação: ......................................................................................................... 74

Caracteres de escape: .............................................................................................. 75

Strtoupper ............................................................................................................... 75

Substr ...................................................................................................................... 75

Exemplo: ................................................................................................................. 75

String ...................................................................................................................... 75

Strpad ...................................................................................................................... 76

Exemplo: ................................................................................................................. 76

Str_repeat ................................................................................................................ 76

Exemplo: ................................................................................................................. 76

Strlen ....................................................................................................................... 76

Str_replace .............................................................................................................. 76

Strpos ...................................................................................................................... 77

O operador ponto .................................................................................................... 77

Obtendo substrings ................................................................................................. 78

Explodindo uma string ........................................................................................... 78

Exercícios ............................................................................................................... 81

Aula 5 ............................................................................................................................. 84

Manipulação de tipos .............................................................................................. 84

Moldando Tipos - Type Casting ............................................................................. 85

Conversão de dados para inteiros no PHP .............................................................. 87

Conversão de float em inteiro:................................................................................ 87

Conversão de string em inteiro: .............................................................................. 87

Conversão de booleano em inteiro: ........................................................................ 87

Conversão de dados para float no PHP .................................................................. 88

Conversão de string em float .................................................................................. 88

Conversão de dados para strings no PHP: .............................................................. 88

Conversão de booleano em string ........................................................................... 88

Page 4: Sumário · 2 Sumário Aula 01 ..... 6

4

Conversão de inteiro e float em string .................................................................... 89

Conversão de dados para booleano no PHP ........................................................... 89

Conversão automática de tipos de dados no PHP .................................................. 90

Estruturas de Controle: ........................................................................................... 90

If ............................................................................................................................. 91

Else ......................................................................................................................... 91

Elseif/else if ............................................................................................................ 92

Sintaxe alternativa para estruturas de controle ....................................................... 93

While ...................................................................................................................... 94

Do-while ................................................................................................................. 94

For ........................................................................................................................... 95

Exercícios: .............................................................................................................. 98

Aula 06 ......................................................................................................................... 100

Foreach ................................................................................................................. 101

Break ..................................................................................................................... 103

Continue ............................................................................................................... 104

Switch ................................................................................................................... 105

Declare .................................................................................................................. 108

Ticks ..................................................................................................................... 108

Return ................................................................................................................... 110

Require() ............................................................................................................... 110

Include()................................................................................................................ 111

Security Warning .................................................................................................. 113

Require_once() ..................................................................................................... 115

Include_once() ...................................................................................................... 115

Exercícios ............................................................................................................. 117

Aula 7 ........................................................................................................................... 120

Definindo Arrays, Vetores E Matrizes: ................................................................ 120

Entendendo um Vetor: .......................................................................................... 121

Formas de criar um Vetor: .................................................................................... 121

Tratando Vetores Como Filas e Pilhas: ................................................................ 124

O Ponteiro Interno de um Vetor: .......................................................................... 126

Exercícios: ............................................................................................................ 129

Aula 8 ........................................................................................................................... 131

Trabalhando com Arrays ...................................................................................... 132

Algumas das funções ............................................................................................ 132

Trabalhando com arrays. ...................................................................................... 145

Page 5: Sumário · 2 Sumário Aula 01 ..... 6

5

Exercícios ............................................................................................................. 145

Aula 09 ......................................................................................................................... 149

Manipulação de Links: ......................................................................................... 149

Exercícios ............................................................................................................. 171

Aula 10 ......................................................................................................................... 174

Cookies: ................................................................................................................ 174

Session .................................................................................................................. 192

Exercícios ............................................................................................................. 202

Aula 11 ......................................................................................................................... 205

Páginas Dinâmicas: .............................................................................................. 214

Exercícios: ............................................................................................................ 228

Aula 12 ......................................................................................................................... 231

Exercícios: ............................................................................................................ 264

Aula 13 ......................................................................................................................... 267

Exercícios ............................................................................................................. 284

Aula 14 ......................................................................................................................... 287

Porque utilizar PHP? ............................................................................................ 287

Identidade ............................................................................................................. 287

Com PHP é possível desenvolver: ........................................................................ 287

Porque utilizar o PHP na sua empresa? ................................................................ 287

O Ecossistema PHP .............................................................................................. 289

Exercícios ............................................................................................................. 290

Page 6: Sumário · 2 Sumário Aula 01 ..... 6

6

Page 7: Sumário · 2 Sumário Aula 01 ..... 6

7

Aula 01

Instalando e configurando um servidor Web.

Nessa primeira aula veremos como instalar e configurar um servidor Web. Mas antes de qualquer coisa, precisamos saber o que é um servidor Web e como ele

funciona.

Os servidores web são responsáveis por armazenar e trocar informações com outras máquinas.

Por causa disso, pelo menos dois participantes são envolvidos em cada troca de informações: um cliente, que solicita informações, e um servidor, que atende a esses pedidos.

Cada lado exige também um programa especializado para negociar a troca de dados; no caso do cliente, um browser como a Internet Explorer é usado.

No lado de servidor, porém, as coisas não são tão simples. Existe uma miríade de opções de software disponível, mas todos têm uma tarefa semelhante: negociar transferências de dados entre clientes e servidores via http (Protocolo de Transferência de Hipertexto), o protocolo de comunicações da Web.

O software depende do sistema operacional escolhido para o servidor. Por exemplo, o IIS da Microsoft é uma escolha popular para Windows, já os fãs do Unix escolhem o Apache.

Uma comunicação simples entre o cliente e o servidor Web funciona da seguinte forma:

1. O browser do cliente decompõe a URL (o endereço da página) em várias partes separadas, tais como o nome de domínio, nome da página e protocolo.

Para a URL http://www.google.com.br/imghp, o nome de domínio é www.google.com.br, o nome da página é imghp e o protocolo é o http.

2. Um Servidor de Nome de Domínio (DNS) traduz o nome de domínio informado pelo para seu endereço de IP, uma combinação numérica que representa o endereço real do site na Internet (um nome de domínio é somente uma ferramenta para facilitar a memória). Por exemplo, o domínio google.com.br é traduzido para o endereço IP real 74.125.234.116 O que você acha mais fácil de lembrar?

3. O browser agora determina que protocolo deve ser usado. Os exemplos de protocolos incluem FTP (Protocolo de Transferência de Arquivo), e http (Protocolo de Transferência de HiperTexto).

4. O servidor passa então a recuperar os arquivos solicitados na página.

Por exemplo, quando um usuário digitar: http://www.google.com.br/imghp

Page 8: Sumário · 2 Sumário Aula 01 ..... 6

8

O browser solicita o arquivo imghp do servidor google.com.br e aguarda uma resposta. O servidor então responde os pedidos do browser. Verifica se o endereço existe, encontra os arquivos necessários, executa as instruções apropriadas e retorna para os resultados de volta para o browser. Se não puder localizar o arquivo, o servidor envia a uma mensagem de erro para o cliente.

5. O browser recebe os dados do servidor na linguagem HTML, interpreta essas instruções e exibe os resultados para o usuário.

Esse processo é repetido até que o browser deixe o site.

Além de suas funções listadas acima, o servidor de Web cuida também de outras tarefas. Considerando que um Web Browser simplesmente traduz e exibe os dados alimentados, um servidor de Web é responsável por distinguir entre vários tipos de erros e dados. Um servidor de Web deve, por exemplo, designar o código apropriado para qualquer erro interno e enviar de volta para o Browser logo depois dele acontecer.

Tem que distinguir também entre vários elementos em uma página de Web (como .GIFs, JPEGS etc.) de forma que o browser sabe que arquivos usar na hora formatar a página.

Dependendo da função do site, um servidor de Web pode também tratar de tarefas adicionais, como registro de estatísticas, segurança de manipulação e criptografia, servir imagens para outros sites (para imagens, mapas, etc), gerenciador de conteúdo dinâmico ou funções de comércio eletrônico.

Agora você tem uma ideia de como funciona um servidor web e das etapas envolvidas na exibição das páginas de seu site.

Nessa primeira aula iremos começar uma série de conteúdos para aqueles interessados em aprender a linguagem de programação para Web PHP.

PHP (um acrônimo recursivo para "PHP: Hypertext Preprocessor", originalmente Personal Home Page.) é uma linguagem interpretada livre e utilizada para gerar conteúdo dinâmico na World Wide Web.

As principais características do PHP são:

Velocidade e robustez;

Estruturado e orientado a objeto;

Portabilidade – roda em qualquer lugar;

Tipagem fraca;

Sintaxe similar a C/C++.

Page 9: Sumário · 2 Sumário Aula 01 ..... 6

9

Instalação do Servidor

Para que possamos executar nossas páginas e códigos PHP em nosso computador, temos que ter um servidor instalado. Para isso utilizaremos neste curso o EasyPHP.

O EasyPHP é uma distribuição de fácil uso para Windows que contém o PHP, Apache e o MySQL, contendo também o PHPMyAdmin para o usuário administrar facilmente o MySQL.

Ele é um WAMP (pacote de soluções para Windows, Apache, MySQL e PHP) programa que instala em pequenos passos um servidor WEB Apache, um módulo para programação em PHP e o MySQL (Banco de Dados), também instala o módulo de administração de Banco de Dados phpMyAdmin. Podemos dizer que ele é um “pequeno notável”.

A vantagem de sua utilização na plataforma Windows é primordialmente trabalhar com programação em PHP sem se preocupar com os passos necessários para a configuração de um servidor Apache, e servidores de Banco de Dados.

Primeiramente você deve solicitar ao seu instrutor o instalador do EasyPHP. Execute o

EasyPHP, a primeira tela que você terá acesso será uma similar a essa abaixo, onde você deverá selecionar o idioma, já está marcado Inglês, portanto, clique em OK.

Você iniciará o assistente para configuração do EasyPHP. Clique em Next.

Page 10: Sumário · 2 Sumário Aula 01 ..... 6

10

Agora você pode visualizar o Contrato de Licença do EasyPHP, selecione a opção Eu

aceito os termos de

Contrato e logo em

seguida clique em

Next.

Você visualizará uma tela de informações, clique em Next.

Agora você pode escolher onde irá instalar o EasyPHP, nós usaremos o diretório

padrão de instalação, portanto apenas clique em Next.

Page 11: Sumário · 2 Sumário Aula 01 ..... 6

11

Agora devemos selecionar a pasta do menu iniciar, mais uma vez, apenas clique em Next.

Agora você visualizará a tela que nos avisa que o EasyPHP está pronto para ser

instalado, caso as

configurações

estejam de

acordo com seu

gosto, clique em

Install.

Aguarde a instalação terminar e desmarque a opção visualizar ajuda, logo em seguida

clique em Finish.

Perceba

agora que nosso EasyPHP já está rodando.

Clicando

com o botão direito nele é possível ver todas as opções e configurações.

Page 12: Sumário · 2 Sumário Aula 01 ..... 6

12

Clique com o botão direito no ícone e logo em seguida clique em localhost.

Aqui você poderá visualizar tudo que for criado em php e colocado dentro do diretório www do EasyPHP. Como não temos nenhum arquivo no diretório www, não há nenhuma opção nesta tela de localhost. Agora você possui um servidor web com Apache, PHP e MySQL instalado em seu computador. Sempre que for escrever alguma página ou script PHP, salve o conteúdo na pasta www, execute o EasyPHP, e escreva localhost em seu navegador para testa-lo.

Estudando o mundo da Programação.

Vamos estudar de maneira global o mundo da programação de páginas web. Para isso começaremos estudando rapidamente alguns conceitos básicos, que

certamente muitos já saberão, como o marco onde a web se desenvolve, o que é uma página web, como se constrói uma página e a linguagem HTML.

Ademais veremos o que é uma página estática e dinâmica distinguindo entre páginas dinâmicas de cliente e servidor.

Vamos nos deter com maior profundidade na apresentação de cada uma das linguagens que temos a nossa disposição para construir páginas web, marcados no âmbito onde se executam: cliente ou servidor.

Introdução à web:

A web se enquadra dentro da Internet, não é mais que um serviço dos muitos que

presta a Rede, entre os que podemos encontrar: • Correio eletrônico • IRC ou chat • FTP • A própria web

Web é um sistema Hipertexto/Hipermídia

O sistema com o qual está construído a web se chama hipertexto e é um emaranhado

de páginas conectadas por links.

Page 13: Sumário · 2 Sumário Aula 01 ..... 6

13

Os sistemas de hipertexto se utilizam em outros contextos à parte da web, com a ajuda do Windows.

São muito fáceis de utilizar e também é muito fácil encontrar o que buscamos rapidamente, basta clicarmos em links e acessarmos a informação que mais nos interessa.

A web não só se limita a apresentar textos e links, também pode nos oferecer imagens,

vídeos, áudio e todo tipo de apresentações, chegando a ser o serviço mais rico em meios que tem a Internet.

Por esta razão, para nos referir ao sistema que implementa o web (hipertexto), foi acunhado um novo termo que é hipermídia, referente a possibilidade do adendo de conteúdos multimídia.

Linguagem HTML

Vemos uma página web em nosso navegador, ou cliente web, e parece uma só

entidade, mas não é assim, está composta por uma infinidade de diferentes arquivos, como são as imagens, os possíveis vídeos e o mais importante: o código fonte.

O código das páginas está escrito em uma linguagem chamada HTML, que indica basicamente onde colocar cada texto, cada imagem ou cada vídeo e a forma que terão ao serem colocados na página.

O HTML se criou a princípio com objetivos de divulgação. Porém, não se pensou que a web chegaria a ser uma área de ócio com caráter

multimídia, de modo que, o HTML se criou sem dar respostas a todos os possíveis usos que lhe dariam posteriormente e ao todo coletivo de gente que o utilizariam no futuro.

A linguagem consta de etiquetas que tem esta forma <B> ou <P>. Cada etiqueta significa uma coisa, por exemplo, <B> significa que se escreve em negrito (bold) ou <P> significa um parágrafo, <A> é um link, etc.

Quase todas as etiquetas têm sua correspondente etiqueta de fechamento, que indica que a partir deste ponto não deve afetar o código.

Por exemplo,</B> se utiliza para indicar que se deixe de escrever em negrito. Portanto, o HTML não é mais que uma série de etiquetas que se utilizam para definir a

forma ou o estilo que queremos aplicar ao nosso documento. <B>Isto está em negrito</B>.

Partes de um documento HTML

Um documento HTML deve estar delimitado pela etiqueta <html> e </html>. Dentro deste documento, podemos ainda distinguir duas partes principais: O

cabeçalho, delimitado por <head> e </head> onde colocaremos etiquetas de índole informativa, como por exemplo, o título de nossa página.

O corpo, delimitado pelas etiquetas <body> e </body>, que será onde colocaremos nosso texto e imagens delimitados por sua vez por outras etiquetas como as que vimos anteriormente.

Páginas Estáticas VS Dinâmicas

Na web podemos encontrar, ou construir, dois tipos de páginas:

• As que se apresentam sem movimento e sem funcionalidades além dos links. • As páginas que têm efeitos especiais e nas quais podemos interagir.

Page 14: Sumário · 2 Sumário Aula 01 ..... 6

14

As primeiras páginas são as que denominamos páginas estáticas, se constroem com a linguagem HTML, que não permite grandes manobras para criar efeitos nem funcionalidades maiores além dos links.

Estas páginas são muito fáceis de criar, embora ofereçam poucas vantagens tanto aos que desenvolvem a página como aos visitantes, já que só podem apresentar textos planos acompanhados de imagens e no máximo conteúdos multimídia como podem ser vídeos ou áudios.

O segundo tipo de páginas se denomina página dinâmica. Uma página é dinâmica quando se inclui qualquer efeito especial ou funcionalidade, e para isso é necessário utilizar outras linguagens de programação, à parte do simples HTML.

Enquanto as páginas estáticas todo mundo pode imaginá-las e não merecem mais explicações, as páginas dinâmicas são mais complexas e versáteis.

Para esclarecer este conceito, veremos com detalhe a seguir o que são as páginas dinâmicas.

Páginas Dinâmicas:

Como vimos, uma página é dinâmica quando realiza efeitos especiais ou programa

alguma funcionalidade ou interatividade. Ademais, vimos que para programar uma página dinâmica, necessitaremos de outras

linguagens a parte do HTML. Entretanto, nunca devemos esquecer o HTML, já que este é à base do

desenvolvimento web: geralmente ao escrever uma página dinâmica o código das outras linguagens de programação se inclui embebida dentro do mesmo código HTML.

Uma razão pela qual construiremos uma página dinâmica é o simples visual que podem alcançar os trabalhos, já que podemos fazer apresentações mais interessantes das que se conseguem utilizando unicamente HTML.

Porém vamos ver com calma algumas razões menos óbvias, mas mais importantes. Suponhamos que decidimos realizar um portal de televisão onde uma das informações

principais a prover poderia ser a programação semanal. Efetivamente, esta informação costuma ser dada pelas televisões com meses de

antecedência e poderia ser muito facilmente armazenada em uma base de dados. Se trabalhássemos com páginas HTML, teríamos que construir uma página

independente para cada semana na qual introduziríamos "a mão" cada um dos programas de cada um dos canais.

Ainda assim, teríamos que lembrarmos a cada semana de remover a página da semana passada e colocar a da anterior. Tudo isto poderia ser facilmente resolvido mediante páginas dinâmicas.

Neste caso, o que faríamos seria criar um programa (somente um) que se encarregaria de recolher da base de dados da programação aqueles programas que são retransmitidos nas datas que nos interessa e de confeccionar uma página onde apareceria ordenado por canais e por hora de retransmissão.

Deste modo, podemos automatizar um processo e já não nos preocuparmos mais de um aspecto da página por alguns meses.

Poderíamos aplicar este tipo de procedimento em outras situações: podemos preparar o horóscopo de todos os dias, as promoções de um site de e-comercio...

Podemos fazer uma classificação às páginas dinâmicas em função de onde se realiza o processamento da página, ou seja, o computador que se encarregará do peso adicional.

Page 15: Sumário · 2 Sumário Aula 01 ..... 6

15

Páginas dinâmicas de cliente:

São as páginas dinâmicas que se processam no cliente. Nestas páginas, toda a carga de

processamento dos efeitos e funcionalidades é suportada pelo navegador. Usos típicos das páginas de cliente são efeitos especiais para webs como rollovers ou

controle de janelas, apresentações nas quais se podem mover objetos pela página, controle de formulários, cálculos, etc.

O código necessário para criar os efeitos e funcionalidades se inclui dentro do mesmo arquivo HTML e é chamado SCRIPT.

Quando uma página HTML contém scripts de cliente, o navegador se encarrega de interpretá-los e executá-los para realizar os efeitos e funcionalidades.

As páginas dinâmicas de cliente se escrevem em duas linguagens de programação

principalmente: Javascript e Visual Basic Script (VBScript), que veremos detalhadamente mais adiante. Também veremos o conceito de DHTML e conheceremos as CSS.

Nota: Flash é uma tecnologia e um programa, para criar efeitos especiais em páginas web. Com Flash também conseguimos fazer páginas dinâmicas do lado do cliente.

As páginas do cliente são muito dependentes do sistema onde estão se executando. E essa é sua principal desvantagem, já que cada navegador tem suas próprias

características, inclusive cada versão, e o que pode funcionar em um navegador pode não funcionar em outro.

Como vantagem pode-se dizer que estas páginas baixam ao servidor alguns trabalhos, oferecem respostas imediatas às ações do usuário e permitem a utilização de alguns recursos da máquina local.

Páginas dinâmicas de servidor:

Podemos falar também de páginas dinâmicas do servidor, que são reconhecidas,

interpretadas e executadas pelo próprio servidor. As páginas do servidor são úteis em muitas ocasiões. Com elas pode-se fazer todo tipo

de aplicações web. Desde agendas a fóruns, sistemas de documentação, estatísticas, jogos, chats, etc.

São especialmente úteis em trabalhos que tem de se acessar a informação centralizada, situada em uma base de dados no servidor, e quando por razões de segurança os cálculos não podem se realizar no computador do usuário.

É importante destacar que as páginas dinâmicas de servidor são necessárias porque para fazer a maioria das aplicações web deve-se ter acesso a muitos recursos externos ao computador do cliente, principalmente bases de dados hospedadas em servidores de Internet.

Um caso claro é um banco: não tem nenhum sentido que o cliente tenha acesso a toda base de dados, só a informação que lhe convém saber.

As páginas dinâmicas do servidor costumam se escrever no mesmo arquivo HTML, misturado com o código HTML, assim como ocorria nas páginas do cliente.

Quando uma página é solicitada por parte de um cliente, o servidor executa os scripts e gera uma página resultado, que somente contem código HTML.

Este resultado final é o que se envia ao cliente e pode ser interpretado sem lugar a erros nem incompatibilidades, visto que somente contem HTML.

Logo é o servidor o que maneja toda a informação das bases de dados e qualquer outro recurso, como imagens ou servidores de correio e logo envia ao cliente uma página web com os resultados de todas as operações.

Page 16: Sumário · 2 Sumário Aula 01 ..... 6

16

Para escrever páginas dinâmicas de servidor existem várias linguagens, que veremos com mais detalhe adiante.

Common Gateway Interface (CGI) normalmente escritos em Perl, Active Server Pages (ASP), Hipertext Preprocesor (PHP), e Java Server Pages (JSP).

As vantagens deste tipo de programação são que o cliente não pode ver os scripts, já que se executam e se transformam em HTML antes de envia-los.

Ademais são independentes do navegador do usuário, já que o código que recebem é HTML facilmente interpretável.

Como desvantagens pode-se assinalar que será necessário um servidor mais potente e com mais capacidades que o necessário para as páginas de cliente.

Ademais, estes servidores poderão suportar menos usuários concorrentes, porque vai requerer mais tempo de processamento para cada um.

O que é Javascript

Javascript é uma linguagem de programação utilizada para criar pequenos

programinhas encarregados de realizar ações dentro do âmbito de uma página web. Trata-se de uma linguagem de programação do lado do cliente, porque é o navegador

que suporta a carga de processamento. Graças a sua compatibilidade com a maioria dos navegadores modernos, é a

linguagem de programação do lado do cliente mais utilizada. Com Javascript podemos criar efeitos especiais nas páginas e definir interatividades

com o usuário. O navegador do cliente é o encarregado de interpretar as instruções Javascript e

executá-las para realizar estes efeitos e interatividades, de modo que o maior recurso, e talvez o único, com que conta esta linguagem é o próprio navegador.

Javascript é o seguinte passo, depois do HTML, que pode dar um programador da web que decida melhorar suas páginas e a potência de seus projetos.

É uma linguagem de programação bastante simples e pensada para fazer as coisas com rapidez, às vezes com leveza.

Inclusive as pessoas que não tenham uma experiência prévia na programação poderão aprender esta linguagem com facilidade e utilizá-la em toda sua potência com somente um pouco de prática.

Entre as ações típicas que se podem realizar em Javascript temos duas vertentes. Por um lado os efeitos especiais sobre páginas web, para criar conteúdos dinâmicos e

elementos da página que tenham movimento, mudem de cor ou qualquer outro dinamismo. Por outro lado, Javascript nos permite executar instruções como resposta às ações do

usuário, com o qual podemos criar páginas interativas com programas como calculadoras, agendas, ou tabelas de cálculo.

Javascript é uma linguagem com muitas possibilidades, permite a programação de pequenos scripts, mas também de programas maiores, orientados a objetos, com funções, estruturas de dados complexas, etc.

Ademais, Javascript coloca à disposição do programador todos os elementos que formam a página web, para que este possa acessar a eles e modificá-los dinamicamente.

Com Javascript o programador, é quem se converte no verdadeiro dono e controlador de cada coisa que ocorre na página quando está sendo visualizada pelo cliente.

O que é Visual Basic Script

É uma linguagem de programação de scripts do lado do cliente, mas é somente

compatível com Internet Explorer.

Page 17: Sumário · 2 Sumário Aula 01 ..... 6

17

É por isso que sua utilização está desaconselhada a favor de Javascript. Está baseado em Visual Basic que é uma linguagem popular para criar aplicações

Windows. Tanto sua sintaxe como sua forma de trabalhar está muito inspirada nele. Entretanto,

nem tudo o que se pode fazer em Visual Basic poderemos fazer com Visual Basic Script, pois este último é uma versão reduzida do primeiro.

A forma de funcionamento de Visual Basic Script para construir efeitos especiais em páginas web é muito similar à utilizada em Javascript, e os recursos aos quais se podem acessar também são os mesmos: o navegador.

Como dissemos, não devemos utilizar esta linguagem na maioria das ocasiões, embora um caso em que teria sentido utilizar Visual Basic Script seria a construção de uma Intranet onde saibamos com toda certeza que os navegadores que vão se conectar serão sempre em Internet Explorer.

Neste caso, um programador habitual de Visual Basic teria mais facilidades para realizar os scripts utilizando Visual Basic Script ao invés de Javascript.

Nota: O popular ASP (Active Server Pages) é uma tecnologia de programação do lado do servidor.

Habitualmente, os scripts ASP se escrevem com Visual Basic Script também e isso não deve nos confundir.

Visual Basic Script, portanto, é uma linguagem que pode ser utilizada para a programação no cliente, como também para programação no servidor.

DHTML

DHTML não é precisamente uma linguagem de programação. Mas trata-se de uma

nova capacidade que dispõem os navegadores modernos, pelo qual se pode ter um maior controle sobre a página que antes.

Qualquer página que responde às atividades do usuário e realiza efeitos e funcionalidades, pode ser englobada dentro do DHTML, mas neste caso nos referimos mais a efeitos no navegador pelos quais se podem mostrar e ocultar elementos da página, ou pode modificar sua posição, dimensões, cor, etc.

DHTML nos dá mais controle sobre a página, graças aos navegadores modernos que incluem uma nova estrutura para visualizar em páginas web denominada camada. As camadas podem ser ocultadas, mostradas, deslocadas, etc.

Para realizar as ações sobre a página, como modificar a aparência de uma camada, seguimos necessitando uma linguagem de programação do lado do cliente como Javascript ou VBScript.

Esclarecimento: DHTML também pode englobar a programação no servidor. Depende do autor que esteja descrevendo o que é DHTML, muitas vezes faz também

referência à programação ao servidor e não só ao cliente, como apontamos neste artigo. Em outras palavras e para que fique claro. As fronteiras do DHTML ficam pouco

definidas. As que marcamos nesta apostila são somente as que englobam o processo no cliente,

mas também poderíamos dizer que DHTML é qualquer coisa que faz uma página dinâmica, já seja no cliente, no servidor ou nas duas coisas.

Dentro do conceito de DHTML se englobam também as Folhas de Estilo em Cascata ou CSS (Cascade Style Sheets), que veremos na próxima aula.

Page 18: Sumário · 2 Sumário Aula 01 ..... 6

18

Exercícios: 1. Como se chama o sistema com o qual é construída a WEB? _______________________________________________________________________

_____________________________________________________________________________________________________________________________________________________________________________________

2. O HTML foi criado a princípio com que objetivo? _______________________________________________________________________

_____________________________________________________________________________________________________________________________________________________________________________________

3. Cite uma razão pela qual construiríamos uma página dinâmica: _______________________________________________________________________

_____________________________________________________________________________________________________________________________________________________________________________________

4. O que é JavaScript? _______________________________________________________________________

_____________________________________________________________________________________________________________________________________________________________________________________

5. O que é DHTML? _______________________________________________________________________

_____________________________________________________________________________________________________________________________________________________________________________________

6. Os servidores web são responsáveis pelo que? _______________________________________________________________________

_____________________________________________________________________________________________________________________________________________________________________________________

7. O que é HTTP e FTP? _______________________________________________________________________

____________________________________________________________________________________________________________________________________________________________________________________

8. O browser decompõe a URL em quais partes? _______________________________________________________________________

_____________________________________________________________________________________________________________________________________________________________________________________

9. O que é um WAMP? ____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

10. O que é PHP? ____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

Page 19: Sumário · 2 Sumário Aula 01 ..... 6

19

Page 20: Sumário · 2 Sumário Aula 01 ..... 6

20

Page 21: Sumário · 2 Sumário Aula 01 ..... 6

21

Aula 02

O que é CSS?

CSS é uma tecnologia que nos permite criar páginas web de uma maneira mais exata. Graças às CSS somos muito mais donos dos resultados finais da página, podendo fazer

muitas coisas que não se podia fazer utilizando somente HTML, como incluir margens, tipos de letra, fundos, cores...

CSS são as siglas de Cascading Style Sheets, em português, Folhas de Estilo em Cascata.

Neste artigo vamos ver alguns dos efeitos que se podem criar com as CSS sem necessidade de conhecer a tecnologia inteira.

Para começar:

As Folhas de Estilo em Cascata se escrevem dentro do código HTML da página web,

somente em casos avançados se podem escrever em um arquivo à parte e linkar a página com esse arquivo.

A princípio, vamos utilizar a maneira mais direta de aplicar estilos aos elementos da

página, mais adiante veremos a declaração em arquivos externos. Para isso, vamos conhecer um novo atributo que podemos utilizar em quase todas as

etiquetas HTML: style. Exemplo: <p style="color:green;font-weight:bold"> O parágrafo sairá com a cor verde e em

negrito</p> Dentro do atributo style devemos indicar os atributos de estilos CSS separados por

ponto e vírgula (;). Durante esta apostila vamos conhecer alguns atributos de CSS, os dois primeiros que

vimos aqui são: Color: indica a cor do conteúdo, na etiqueta onde estivermos utilizando, geralmente

indica a cor do texto. Font-weight: indica a grossura do texto. Bold serve para colocar em negrito.

Cor nos links:

Com HTML definimos a cor dos links no <body>, com os atributos link, vlink e alink.

Page 22: Sumário · 2 Sumário Aula 01 ..... 6

22

Isto nos permite mudar a cor dos links para todo o documento, mas e se quisermos mudar a cor de um link em concreto, para que tenha outra cor diferente da cor definida na etiqueta <body>?

Para fazer isto utilizaremos o atributo style dentro do link: <a href="meulink.html" style="color:red"> Assim sairá o link na cor vermelha, independente da cor definida para todo o

documento.

Espaçamento entre linhas: Com CSS podemos definir o espaço entre cada linha do documento, utilizando o

atributo lineheight. Por exemplo, podemos definir que para todo um parágrafo o espaço entre cada uma

de suas linhas seja 25 pixels: <p style="line-height: 25px;"> Um parágrafo normal no qual cada uma das linhas está separada 25 pixels da outra.

Deverá ser colocado conteúdo suficiente para duas linhas para que o espaçamento seja visível. </p>

Espaçamento entre caracteres:

Pode-se definir também o espaço entre cada caractere. Isto se faz com o atributo de

CSS letter-spacing. Vejamos um exemplo: <p style="letter-spacing:12cm"> Este parágrafo tem as letras espaçadas por 12 centímetros. </p> Este atributo, assim como ocorre com muitos outros de CSS, não está suportado para

todos os navegadores.

Links sem sublinhado:

Um dos efeitos mais significativos e fáceis de realizar com CSS é eliminar o sublinhado

dos links de uma página web. Existe um atributo que serve para definir a decoração de um texto, se está sublinhado,

riscado, ou se não tem nenhuma destas "decorações". É o atributo textdecoration, neste caso indicaremos em um link que não queremos

decoração: <a href="minhapagina.html" style="text-decoration:none">

Page 23: Sumário · 2 Sumário Aula 01 ..... 6

23

Incluir estilos para todo um site web:

Uma das características mais potentes da programação com folhas de estilo consiste

em definir os estilos de todo um website. Isto se consegue criando um arquivo onde simplesmente colocamos as declarações de

estilos da página e linkamos todas as páginas do site com esse arquivo. Deste modo, todas as páginas compartilham uma mesma declaração de estilos e,

portanto, se a mudamos, todas as páginas serão mudadas. Vejamos agora todo o processo para incluir estilos com um arquivo externo. 1 - Criamos o arquivo com a declaração de estilos. É um arquivo de texto normal, que pode ter qualquer extensão, apesar de podermos

lhe atribuir a extensão .css para lembrarmos de que tipo de arquivo estamos nos referindo. O texto que devemos incluir deve ser escrito exclusivamente em sintaxe CSS, é um

pouco diferente da sintaxe que utilizamos dentro do atributo style.

Estaria errado incluir código HTML neste arquivo: etiquetas e outras. Podemos ver um exemplo a seguir:

P { font-size : 12pt; font-family : arial,helvetica; font-weight : normal; } H1 { font-size : 36pt; font-family : verdana,arial; text-decoration : underline; text-align : center; background-color : Teal; } BODY { background-color : #006600; font-family : arial; color : White; } 2 - Linkamos a página web com a folha de estilos. Para isso vamos colocar a etiqueta <LINK> com os atributos • rel="STYLESHEET" indicando que o link é uma folha de estilo. • type="text/css" porque o arquivo é de texto, em sintaxe CSS. • href="estilos.css" indica o nome do arquivo fonte dos estilos. Vejamos uma página web inteira que linka com a declaração de estilos anterior:

Page 24: Sumário · 2 Sumário Aula 01 ..... 6

24

<html> <head> <link rel="STYLESHEET" type="text/css" href="estilos.css"> <title>Página que lê estilos</title> </head> <body> <h1>Página que lê estilos</h1> <p> Esta página tem no cabeçalho a etiqueta necessária para linkar com a folha de estilos.

É muito fácil. </p> </body> </html> As Folhas de Estilo têm muito mais possibilidades. As Folhas de Estilo em Cascata são um padrão muito amplo, com especificações e

possibilidades muito grandes. Neste artigo vimos alguns efeitos interessantes que podemos utilizar mesmo que não

tenhamos nenhum conhecimento prévio. Entretanto, o melhor para trabalhar com esta tecnologia é conhecê-la bem, dessa

forma os resultados serão muito mais surpreendentes.

O que é CGI?

É o sistema mais antigo que existe para a programação de páginas dinâmicas de

servidor. Atualmente se encontra um pouco defasado por diversas razões entre as quais se

destaca a dificuldade no desenvolvimento dos programas e a pesada carga que supõem para o servidor que os executa.

Os CGI se escrevem habitualmente na linguagem Perl, entretanto, outras linguagens

como C, C++ ou Visual Basic podem também ser utilizadas para construí-los. O funcionamento básico de um programa CGI é parecido com o apontado para o

conjunto das páginas dinâmicas do servidor, com algumas particularidades. 1. Realiza-se uma petição HTTP, a qual podem acompanhar dados que chegam

ou por um formulário, também através da URL. 2. O servidor executa os programas CGI e trabalha com os recursos necessários

para realizar as ações, como por exemplo, as bases de dados. 3. O programa CGI vai escrevendo na saída padrão, o resultado da execução do

CGI, que inclui etiquetas HTML, já que o que se escreve é uma página web. Algumas desvantagens da programação em CGI são as seguintes:

Page 25: Sumário · 2 Sumário Aula 01 ..... 6

25

• Os resultados se escrevem diretamente com o CGI, portanto o código do programa se mistura com o do HTML, tornando difícil sua compreensão e manutenção.

• Cada programa CGI que se coloca em funcionamento se faz em um espaço de

memória próprio. Sendo assim, se três usuários colocam em funcionamento um CGI ao mesmo tempo, se multiplicará por três a quantidade de recursos que ocupa esse CGI. Isto significa uma grave ineficiência.

O que é Perl?

É uma linguagem de programação muito utilizada para construir aplicações CGI para a

web. Perl é a abreviação de Practical Extracting and Reporting Language, trata-se de uma

linguagem de programação muito prática para extrair informações de arquivos de textos e gerar informes a partir do conteúdo dos arquivos.

É uma linguagem de livre uso, isso quer dizer que é gratuita. Antes, estava bastante

associado à plataforma Unix, mas atualmente está disponível em outros sistemas operativos como Windows.

Perl é uma linguagem de programação interpretada, assim como muitas outras

linguagens da Internet como Javascript ou ASP. Isto quer dizer que o código dos scripts em Perl não se compila, e sim, que cada vez

que executado, o código é lido e colocado em funcionamento. Ademais é extensível a partir de outras linguagens, já que desde Perl poderemos fazer

chamadas a subprogramas escritos em outras linguagens. Também desde outras linguagens podemos executar o código Perl. Perl está inspirado a partir de linguagens como C, sh, awk e sed (alguns provenientes

dos sistemas Unix), mas está enfocado a ser mais prático e fácil que estes últimos. É por isso que um programador, que tenha trabalhado com a linguagem C e outras,

terá uma maior facilidade para entendê-la e utilizá-la rapidamente. Se quisermos trabalhar com Perl será necessário ter instalado o intérprete da

linguagem. A partir desse momento podemos executar CGIs em nossos servidores web. O processo para conseguir pode variar de uns servidores a outros, mas costuma-se

colocar em um diretório especial do servidor chamado cgi-bin onde colocamos as correspondentes permissões CGI.

Ademais, os arquivos com o código também deverão ter permissão de execução.

Page 26: Sumário · 2 Sumário Aula 01 ..... 6

26

O que é ASP?

ASP (Active Server Pages) é a tecnologia desenvolvida pela Microsoft para a criação de

páginas dinâmicas de servidor. ASP se escreve na mesma página web, utilizando a linguagem Visual Basic Script ou

Jscript (Javascript de Microsoft). Uma linguagem do server side é aquela que se executa no servidor web, justo antes da

página ser enviada através da Internet ao cliente. As páginas que se executam no servidor podem realizar acessos à bases de dados,

conexões em rede, e outras tarefas para criar a página final que o cliente verá. O cliente somente recebe uma página com o código HTML resultante da execução da

página ASP. Como a página resultante contém unicamente código HTML, é compatível com todos

os navegadores. Os tipos de servidores que empregam esta linguagem são, evidentemente, todos

aqueles que funcionam com sistema Windows NT, apesar de que também podemos utilizar em um PC com Windows 98 se instalarmos um servidor denominado Personal Web Server.

Inclusive sistemas Linux podemos utilizar a ASP se instalarmos um componente

denominado Chilisoft, apesar de que parece claro que será melhor trabalhar sobre o servidor web.

Com a ASP podemos realizar muitos tipos de aplicações distintas. Permite-nos acesso à base de dados, ao sistema de arquivos do servidor e em geral, a

todos os recursos que tenha o próprio servidor. Também temos a possibilidade de comprar componentes ActiveX fabricados por

distintas empresas de desenvolvimento de software que servem para realizar múltiplos usos, como o envio de correio, gerar gráficos dinamicamente, e etc.

Atualmente, já foi apresentada a segunda versão de ASP, o ASP.NET, que compreende

algumas melhoras em relação às possibilidades da linguagem e rapidez em seu funcionamento. ASP.NET tem algumas diferenças em relação à sintaxe com o ASP, de modo que há de

ser tratado de formas distinta um do outro.

O que é PHP?

PHP é o acrônimo de Hipertext Preprocesor. E será a linguagem que utilizaremos em

nosso curso. É uma linguagem de programação do server side gratuita e independente de

plataforma, rápido, com uma grande livraria de funções e muita documentação.

Page 27: Sumário · 2 Sumário Aula 01 ..... 6

27

As páginas que se executam no servidor podem realizar acessos a bases de dados, conexões em rede, e outras tarefas para criar a página final que será vista pelo cliente.

O cliente somente recebe uma página com o código HTML resultante da execução da PHP.

Como a página resultante

contém unicamente código HTML, é compatível com todos os navegadores.

Esquema do funcionamento das

páginas PHP acima. Uma vez que já conhecemos o

conceito de linguagem de programação de scripts do lado do servidor podemos falar de PHP.

PHP se escreve dentro do código HTML, o que o faz realmente fácil de utilizar, assim como ocorre com o popular ASP da Microsoft, porém com algumas vantagens como sua gratuidade, independência de plataforma, rapidez e segurança.

Qualquer pessoa pode baixar através da página principal do PHP www.php.net e de

forma gratuita, um módulo que faz com que nosso servidor web compreenda os scripts realizados nesta linguagem.

É independente de plataforma, visto que existe um módulo de PHP para quase

qualquer servidor web. Isto faz com que qualquer sistema possa ser compatível com a linguagem e significa

uma vantagem importante, já que permite levar o site desenvolvido em PHP de um sistema a outro sem praticamente nenhum trabalho.

PHP, no caso de estar montado sobre um servidor Linux ou Unix, é mais rápido que

ASP, dado que se executa em um único espaço de memória e isto evita as comunicações entre componentes COM que se realizam entre todas as tecnologias implicadas em uma página ASP.

Por último assinalamos a segurança, neste ponto também é importante o fato de que

em muitas ocasiões PHP se encontra instalado sobre servidores Unix ou Linux, que são bastante conhecidos como mais velozes e seguros que o sistema operativo onde se executa ASP, Windows NT ou 2000.

Ademais, PHP permite configurar o servidor de modo que se permita ou rejeite

diferentes usos, o que pode fazer da linguagem mais ou menos segura dependendo das necessidades de cada um.

Foi criado originalmente em 1994 por Rasmus Lerdorf, mas como PHP está

desenvolvido em política de código aberto, ao longo de sua história teve muitas contribuições de outros desenvolvedores.

Atualmente PHP se encontra em sua versão 5.

Page 28: Sumário · 2 Sumário Aula 01 ..... 6

28

Esta linguagem de programação está preparada para realizar muitos tipos de

aplicações web graças à extensa livraria de funções com a qual está dotada. A livraria de funções cobre desde cálculos matemáticos complexos até tratamento de

conexões de rede, podemos dar dois exemplos. Algumas das mais importantes capacidades de PHP são: compatibilidade com as bases

de dados mais comuns, como MySQL, mSQL, Oracle, Informix, e ODBC, por exemplo. Inclui funções para o envio de correio eletrônico, upload de arquivos, criar

dinamicamente no servidor imagens no formato GIF, inclusive animadas e uma lista interminável de utilidades adicionais.

O que é JSP?

JSP é a abreviação de Java Server Pages, que em português seria algo como Páginas de

Servidor Java. É então, uma tecnologia orientada a criar páginas web com programação em Java. Com JSP podemos criar aplicações web que se executam em vários servidores web, de

múltiplas plataformas, já que Java é em essência uma linguagem multiplataforma. As páginas JSP estão compostas de código HTML/XML misturado com etiquetas

especiais para programar scripts de servidor em sintaxe Java. Portanto, poderemos escrever as JSP com nosso editor HTML/XML habitual.

PHP

Uma observação importante é que para o desenvolvimento dos códigos em PHP que

iremos criar em nosso curso, iremos utilizar o Notepad++, é um software de edição simples e grátis que pode ser facilmente encontrado na internet. Mais adiante teremos uma explicação de como instalá-lo.

Você ainda pode utilizar diversos editores para desenvolver em PHP, como por exemplo, o Adobe Dreamweaver e PHP Designer.

Agora que instalamos todos

os componentes necessários para o desenvolvimento em PHP, especificamente um Servidor Web, PHP e MySQL estando estes três elementos no pacote EasyPHP, estamos prontos para iniciar os primeiros passos para escrever em PHP.

A primeira coisa que devemos

fazer é nos certificar que nosso servidor Web está rodando.

Page 29: Sumário · 2 Sumário Aula 01 ..... 6

29

Você deverá ligá-lo se ainda não estiver, falamos sobre isso na primeira aula, mas

podemos testar por meio do navegador, clique em Internet Explorer.

Clique agora na Barra de Navegação e digite: http://localhost/

Aperte a tecla Enter.

Page 30: Sumário · 2 Sumário Aula 01 ..... 6

30

Como podemos perceber, nosso Servidor Web não está rodando, para iniciá-lo, clique em Iniciar > Todos os Programas > EasyPHP 5.3.2. > EasyPHP 5.3.2.

Pronto, nosso servidor está rodando, clique em Atualizar no Internet Explorer.

Perceba que agora nosso servidor está funcionando corretamente. Minimize o navegador. Você deve estar se perguntando, toda a vez que eu iniciar meu

servidor eu terei de fazer esse procedimento? Essa é uma ótima pergunta. Não, você pode fazer com que o seu Servidor Web seja

iniciado automaticamente, vamos fazer isso agora. Para isso clique com o botão direito no ícone do EasyPHP e posicione o mouse sobre a

opção Configurações, em seguida selecione a opção EasyPHP.

Page 31: Sumário · 2 Sumário Aula 01 ..... 6

31

Na janela que irá se abrir, selecione a caixa Iniciar com o Windows, clique em Aplicar e por último clique em Fechar.

Continuando agora com nossa criação em PHP, primeiramente devemos criar um

diretório onde iremos colocar nossos primeiros arquivos em PHP. Clique com o botão direito no ícone do EasyPHP e selecione a opção Explore. Está é a pasta inicial do EasyPHP, a www, nela iremos criar uma nova pasta, para isso

clique em Nova Pasta.

Page 32: Sumário · 2 Sumário Aula 01 ..... 6

32

Coloque seu nome como phpteste e aperte Enter. Iremos utilizar muito está pasta a medida de nosso curso, portanto iremos criar um atalho para ela na área de trabalho.

Clique com o botão direito na pasta phpteste e posicione a seta do mouse sobre a opção Enviar Para, em seguida selecione a opção Área de Trabalho (criar atalho), como mostra a imagem abaixo.

Pronto, criamos um atalho para a pasta phpteste com sucesso na Área de Trabalho. Agora, volte ao diretório principal do EasyPHP. Clique com o botão direito em www e

selecione a opção Propriedades.

Page 33: Sumário · 2 Sumário Aula 01 ..... 6

33

Vá até a aba Compartilhamento e clique no botão Compartilhar...

Clique em Compartilhar.

Page 34: Sumário · 2 Sumário Aula 01 ..... 6

34

E finalmente, clique em Pronto.

Agora clique em Fechar.

Page 35: Sumário · 2 Sumário Aula 01 ..... 6

35

Feche também a janela do EasyPHP.

Mãos à obra nesse momento, iremos criar nosso primeiro arquivo em PHP.

Primeiramente devemos baixar o Notepad++, para isso vamos restaurar a janela do Internet Explorer, para isso, clique no local indicado na imagem abaixo.

Agora clique na barra de navegação, digite o endereço:

http://www.google.com.br/ e pressione Enter.

Page 36: Sumário · 2 Sumário Aula 01 ..... 6

36

Agora estamos na página inicial do site de busca mais famoso do mundo, o Google.

Para iniciar uma busca referente ao Notepad++, digite no campo de busca “Notepad ++ em português” e pressione Enter.

Agora podemos ver os resultados referentes à nossa pesquisa, o primeiro nos direcionará para uma página de download do Notepad++ em português, vamos escolher essa opção clicando no local indicado na imagem abaixo.

Page 37: Sumário · 2 Sumário Aula 01 ..... 6

37

Clique em Download.

Clique agora em Download grátis.

Page 38: Sumário · 2 Sumário Aula 01 ..... 6

38

Após o download ter sido concluído, clique em Executar.

Antes de iniciarmos a instalação do Notepad++, feche o navegador.

Essa é a tela de download e instalação do Notepad++, primeiramente você visualizará o contrato de licença, clique em Aceitar.

Haverá uma opção referente à Tollbar, caso queira instalar alguma delas, mantenha os

itens selecionados. Clique em Próximo.

Page 39: Sumário · 2 Sumário Aula 01 ..... 6

39

Por favor, aguarde o término do download e verifique que automaticamente o instalador do Notepad++ irá ser executado. Quanto à tela que era responsável pelo download, podemos fechá-la, clique então em Sair.

Em nossa próxima aula iremos terminar a instalação do Notepad++ e Iniciar a criação

de códigos em PHP.

Não deixe de fazer os exercícios de sua apostila. Até a próxima!

Page 40: Sumário · 2 Sumário Aula 01 ..... 6

40

Exercícios 1. Cite dois editores de PHP. _______________________________________________________________________

______________________________________________________________________________________________________________________

2. Qual a primeira coisa que precisamos fazer para utilizar um servidor web? _______________________________________________________________________

______________________________________________________________________________________________________________________

3. Quais os passos para iniciar o servidor web? _______________________________________________________________________

______________________________________________________________________________________________________________________

4. Como podemos fazer para o servidor iniciar com o sistema operacional? _______________________________________________________________________

______________________________________________________________________________________________________________________

5. Qual o diretório principal do servidor web? _______________________________________________________________________

______________________________________________________________________________________________________________________

6. O que é CSS? _______________________________________________________________________

______________________________________________________________________________________________________________________

7. O que é CGI? _______________________________________________________________________

______________________________________________________________________________________________________________________

8. O que é ASP? _______________________________________________________________________

______________________________________________________________________________________________________________________

9. O que é PHP? _______________________________________________________________________

______________________________________________________________________________________________________________________

10. JSP é uma abreviação de que? _______________________________________________________________________

______________________________________________________________________________________________________________________

Page 41: Sumário · 2 Sumário Aula 01 ..... 6

41

Page 42: Sumário · 2 Sumário Aula 01 ..... 6

42

Page 43: Sumário · 2 Sumário Aula 01 ..... 6

43

Aula 03

Instalando o Notepad++.

Nessa aula você irá terminar a instalação do Notepad++ e criará seus primeiros códigos em PHP.

A primeira tela é referente ao idioma, e já está setado para o português, portanto

clique em OK.

Clique agora em Próximo.

Page 44: Sumário · 2 Sumário Aula 01 ..... 6

44

Clique agora em Eu Concordo.

Clique em Próximo.

Page 45: Sumário · 2 Sumário Aula 01 ..... 6

45

E agora clique em Instalar e aguarde o término da instalação.

Mantendo a opção “Executar Notepad ++”, clique em Terminar.

Esse arquivo chamado change.log não nos interessa. Por isso feche-o da mesma forma que foi feito em aula, clique com o botão direito e selecione a opção Fechar.

Perceba que foi criado um arquivo chamado new 2. A princípio não iremos colocar

nenhum código nesse arquivo, apenas salve o arquivo na pasta phpteste, você criou um atalho desta pasta na Área de Trabalho.

Você deve salvá-la com o nome de “new_phpinfo.php”, .php é a extensão em formato PHP, seus arquivos em PHP sempre devem ser salvos em .php

Page 46: Sumário · 2 Sumário Aula 01 ..... 6

46

Agora nosso arquivo em PHP está salvo em nosso Servidor Web, vamos então escrever nosso primeiro código em nosso arquivo.

Digite <?php phpinfo(); ?>

Agora clique em Salvar.

Vamos visualizar o que desenvolvemos até agora em nosso navegador. De um clique

no Internet Explorer.

Page 47: Sumário · 2 Sumário Aula 01 ..... 6

47

Agora clique na barra de navegação e digite: http://localhost/phpteste/new_phpinfo.php Em seguida pressione Enter. Você poderá ver que isso trará informações sobre PHP, aquela pequena função que

você inseriu é uma função em PHP muito especial que retorna todo o tipo de informação referente à PHP que você tenha instalado em seu sistema.

Isso é um

grande recurso para você saber que o PHP está rodando e qual é sua configuração, provavelmente todo o programador em PHP usa está página como um fácil e rápido teste para ter certeza de que o PHP está rodando com sucesso na máquina antes de começarem a fazer qualquer outra coisa.

Devido a essa página exibir muito referente à suas configurações, você nunca irá

querer coloca-la no ar onde alguém poderá encontrá-la. Para propósitos de desenvolvimento, no entanto, ela se torna muito útil.

Vamos voltar agora ao Notepad++, clique no local indicado na imagem abaixo.

Page 48: Sumário · 2 Sumário Aula 01 ..... 6

48

Vamos falar um pouco sobre o código que digitamos para entendermos um pouco mais sobre como o PHP funciona.

Esse código que digitamos é formado primariamente por três partes.

1ª <?php 2ª phpinfo(); 3ª ?>

A primeira e a segunda parte deste código são as tags que fazem relação ao início e ao término do código.

Foi dito no decorrer do curso que o PHP é incorporado ao HTML e esse é o mecanismo

que faz com que isso ocorra <?php?>, nosso servidor acessa a página web e sabe que está pronto para PHP porque temos a extensão .php, mas ainda precisa de alguma indicação de onde o HTML começa e termina e onde o PHP começa e termina.

E fazemos isso por falarmos “Ok, ligue o PHP!”, fazemos isso com o “<?php”

começando assim nosso código em PHP, e quando terminamos nosso código, colocamos “?>” para darmos a mensagem “Ok, meu pode desligar o PHP!”.

Existem formas curtas de se escrever em PHP, chamadas de short open tags, o que são consideradas formas ruins.

Ex: <? ?>, <?= ?>

Page 49: Sumário · 2 Sumário Aula 01 ..... 6

49

Existem ainda, outros tipos de tag que são ASP style tags que são consideradas formas muito ruins.

Ex: <% %>, <%= %> Há uma ótima razão para essas serem consideradas formas ruins, é porque elas nem

sempre funcionam, sendo assim é aconselhável sempre utilizar a forma correta <?php ?>, para evitar retrabalho e problemas futuros.

Algo interessante referente à PHP é que não importa onde cada código está localizado

ao longo da linha, desde que esteja na ordem correta.

Assim podemos deixar nosso código da forma mais legível possível, facilitando nosso trabalho.

Agora que você já sabe um pouco sobre o funcionamento básico do PHP, vamos falar

sobre variáveis.

Variáveis Variáveis são usadas para guardar informações que podem ser usadas mais de uma vez

no mesmo script. As variáveis podem conter textos, números, arrays, etc. Para declarar uma variável em PHP, utilizamos o sinal de cifrão ($) seguido do nome da

variável. Depois, colocamos o sinal de igual e o valor da variável. Por fim, finalizamos com ponto-e-vírgula.

Caso o valor da variável seja um texto, ele deverá estar entre aspas.

Observe o exemplo:

<?php $autor = "João da Silva"; ?>

Para usar uma variável, é muito simples. Entenda observando o exemplo abaixo:

<?php $autor = "João da Silva"; echo $autor; ?>

O Script acima irá exibir um nome. Repare que para exibir o valor numérico da variável não precisamos usar aspas. O PHP diferencia letras maiúsculas e minúsculas nos nomes das variáveis. Costuma-se

dizer que os nomes das variáveis são "Case Sensitive". Isso quer dizer que você não pode criar uma variável com o nome $nomeAutor e

depois usar como $nomeautor ou $NOMEAUTOR.

Page 50: Sumário · 2 Sumário Aula 01 ..... 6

50

O nome de uma variável não pode conter espaços, hífens e caracteres especiais. Além disso, o nome de uma variável não pode começar com um número (após o cifrão). Resumindo, o nome da variável pode conter apenas letras, números (sem iniciar) e underscore (_).

Vamos falar agora a respeito dos tipos de dados suportados.

Inteiros:

Sintaxe: $curso = 1000; $curso = -1000; $curso = 0234; (inteiro base octal) $curso = 0x34; (inteiro na base hexadecimal)

Ponto Flutuante:

Sintaxe: $curso = 1.050; $curso = 52e3; (equivalente a 52000)

Strings: Sintaxe: $curso = ‘PHP’; # desta maneira, o valor da variável será exatamente o texto contido entre as aspas.

$curso = “PHP”; # desta maneira, qualquer variável ou caractere de escape será expandido antes de ser

atribuído.

Ainda dentro do grupo das Strings estão os Caracteres de Escape:

\n – nova linha; \r – retorno de carro (semelhante a \n) \t – tabulação horizontal \\ - a própria barra (\) \$ - o símbolo $ \’ – aspas simples \” aspas duplas

Array: Array é um tipo de variável que possui seu conteúdo agrupado por índices, como um

vetor ou um dicionário. Estes índices podem ser de qualquer tipo suportado pelo PHP, como é mostrado a seguir:

Sintaxe: $estilo_musical[0] = ‘pagode’; $estilo_musical[1] = “drum \’n\ ‘ bass”;

Page 51: Sumário · 2 Sumário Aula 01 ..... 6

51

$estilo_musical[“MPB”] = ‘Gilberto Gil’; $estilo_musical[“Rock”] = ‘Rolling Stones’; Listas: Utilizadas em PHP para realizar atribuições múltiplas, como por exemplo,

atribuir valores de um array para variáveis, como mostra a seguir: Sintaxe: list($a,$b,$c) = array (0=>”a”, 1=>”b”, 2=>”c”); O trecho de código acima atribuirá simultânea e respectivamente os valores do array

ás variáveis passadas como parâmetros para o comando list. É muito importante lembrar que só serão passadas ao comando list os elementos do array que possuírem os índices com valores inteiros e não negativos.

Booleans:

Em PHP, não existe um tipo específico para as variáveis do tipo boolean, ele trata este tipo com valores inteiros: 0 para false e valores diferentes deste como true.

Aplicações: Trabalhando com números inteiros, funções e strings. Primeiramente vamos abrir o Notepad++, pois ele é o responsável pelo

desenvolvimento PHP em nosso curso. Clique no menu Iniciar.

Page 52: Sumário · 2 Sumário Aula 01 ..... 6

52

Agora clique em Notepad++.

Tomaremos por conceito básico que você está com o EasyPHP sempre ativo devido as

configurações que efetuamos na última aula. Sendo assim não precisamos nos preocupar com ele agora.

O que iremos criar com a ajuda do Notepad++ é um programa que declara uma

determinada variável e logo em seguida chama seu valor de acordo com o que foi determinado previamente.

Desenvolvimento do programa: Você irá desenvolver agora seu primeiro aplicativo web. Clique no local indicado Novo para criar um novo documento em branco.

Page 53: Sumário · 2 Sumário Aula 01 ..... 6

53

Com o novo documento criado, podemos encerrar o primeiro que foi aberto clicando com o botão direito e selecionando a opção fechar, mas deixa que nós façamos a primeira ação para você.

Selecione a opção Fechar esta aba.

Vamos iniciar com o código responsável por dar o OK para a criação do PHP. Digite: <?php

Page 54: Sumário · 2 Sumário Aula 01 ..... 6

54

Agora, para organizar melhor nosso código, vamos quebrar uma linha e começar a declaração de variáveis.

Aperte Enter.

Vamos declarar agora a primeira variável, você aprendeu qual a utilização das variáveis nas aulas passadas, mas relembrando, elas armazenam dados para serem usados posteriormente.

Digite: $joao = 19;

Acabamos de declarar nossa primeira variável, agora iremos adicionar mais 3 variáveis. Aperte Enter. Digite agora $pedro = 16; Vamos declarar agora a terceira variável. Aperte Enter. Digite agora $jessica = 17; Vamos adiante para declararmos a última variável de nosso código. Aperte Enter. Digite $carlos = 20; Pronto, declaramos todas as variáveis.

Page 55: Sumário · 2 Sumário Aula 01 ..... 6

55

Agora iremos declarar as funções que irão chamar os dados armazenados nas

variáveis. A única função que iremos utilizar em nosso código será a echo. O echo imprime a string declarada dentro de si assim como qualquer outra variável ou

expressão que esteja dentro de sua função. Para iniciarmos nossa função, vamos fazer duas quebras de linha, assim organizando

melhor nossa página.

Aperte Enter. Aperte novamente Enter. Agora digite: echo ( "João tem $joao anos.<br>");

Page 56: Sumário · 2 Sumário Aula 01 ..... 6

56

Agora analisaremos a estrutura dessa função. A função echo, “mandou” por assim dizer, que fosse impressa a frase: “João tem (variável de joao) anos.”.

O <br> é referente a uma quebra de linha, você pode ainda utilizar caracteres especiais

mas colocamos um código bem simples em HTML para facilitar. Devemos fazer a quebra de linha porque iremos declarar mais quatro variáveis.

Agora para seguirmos adiante, iremos quebrar a linha de código mais uma vez. Aperte Enter. Agora digite: echo ( "Pedro tem $pedro anos.<br>"); Vamos acrescentar outra quebra no código. Aperte Enter. Agora digite: echo ( "Jéssica tem $jessica anos.<br>"); Quebraremos a linha do código mais uma vez para declarar o ultimo echo. Aperte Enter. Digite agora echo ( "Carlos tem $carlos anos.<br>"); Por fim, vamos quebrar novamente a linha para encerrar nosso código. Aperte Enter. Digite: ?>

Page 57: Sumário · 2 Sumário Aula 01 ..... 6

57

Agora, clique no ponto indicado:

Pressione Enter. Digite: header(“Content-type: text/html; charset=utf8”);

Esse código irá codificar nossas palavras que tiveram caracteres especiais.

Page 58: Sumário · 2 Sumário Aula 01 ..... 6

58

Agora vamos salvar o arquivo que desenvolvemos. Clique em Arquivo.

Agora clique em Salvar.

Page 59: Sumário · 2 Sumário Aula 01 ..... 6

59

Agora clique em Área de Trabalho.

De um clique duplo na pasta phpteste – atalho.

Renomeie o arquivo para testeinteiros.php e aperte Enter. Pronto, agora nosso arquivo está salvo em nosso servidor e pronto para ser executado

por qualquer navegador.

Page 60: Sumário · 2 Sumário Aula 01 ..... 6

60

Vamos visualizar o resultado de nosso código no Internet Explorer, clique nele.

Agora clique na Barra de Navegação.

Agora digite: http://localhost/phpteste/testeinteiros.php

Page 61: Sumário · 2 Sumário Aula 01 ..... 6

61

E aperte Enter.

Agora você pode visualizar o resultado do código que desenvolvemos. Ele é um código que imprime números Inteiros e Strings, como você pode perceber ao

decorrer da aula. Os números inteiros são referentes às variáveis que você declarou antes de

acrescentar o echo, as strings estão entre aspas logo após os parênteses de cada echo. A string seria a frase em sim, colocada entre aspas.

Page 62: Sumário · 2 Sumário Aula 01 ..... 6

62

Exercícios 1. Como podemos criar um novo arquivo no Notepad++? _______________________________________________________________________

_____________________________________________________________________________________________________________________________________________________________________________________

2. Qual tag inicia o código em PHP? _______________________________________________________________________

_____________________________________________________________________________________________________________________________________________________________________________________

3. Para que serve a função echo? _______________________________________________________________________

_____________________________________________________________________________________________________________________________________________________________________________________

4. Onde devemos salvar os arquivos em PHP para que possam ser visualizados pelo navegador?

___________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

5. Com que extensão devem ser salvos os arquivos em PHP? _______________________________________________________________________

_____________________________________________________________________________________________________________________________________________________________________________________

6. O que exibiu o arquivo new_phpinfo.php que criamos no decorrer da aula? _______________________________________________________________________

_____________________________________________________________________________________________________________________________________________________________________________________

7. O que são variáveis? _______________________________________________________________________

_____________________________________________________________________________________________________________________________________________________________________________________

8. O que é um array? _______________________________________________________________________

_____________________________________________________________________________________________________________________________________________________________________________________

9. Para que são usadas as listas em PHP? _______________________________________________________________________

_____________________________________________________________________________________________________________________________________________________________________________________

Page 63: Sumário · 2 Sumário Aula 01 ..... 6

63

Page 64: Sumário · 2 Sumário Aula 01 ..... 6

64

Page 65: Sumário · 2 Sumário Aula 01 ..... 6

65

Aula 04

Comandos:

Veremos como colocar em prática o que aprendemos nas aulas anteriores com referência a variáveis e tipos de dados, especificamente o uso dos comandos de avaliação if e else.

Primeiramente vamos abrir o Notepad++, pois ele é o responsável pelo desenvolvimento em PHP em nosso curso.

Clique no menu Iniciar.

Agora clique em Notepad++

Page 66: Sumário · 2 Sumário Aula 01 ..... 6

66

Tomemos por conceito básico que você está com o EasyPHP sempre ativo devido as configurações que efetuamos nas aulas anteriores. Sendo assim, não precisamos nos preocupar com ele agora.

O que iremos criar com a ajuda do Notepad++ é um programa que declara se um aluno

está aprovado ou reprovado, tomando como base suas notas. Vamos

iniciar com o código responsável por dar o OK para a criação do PHP.

Digite:

<?php

Agora, para

organizar melhor nosso código, vamos quebrar uma linha e começar a declaração de variáveis.

Aperte Enter. Vamos declarar agora a primeira variável você aprendeu para que servem as variáveis

nas aulas passadas, mas relembrando, elas armazenam dados para serem usados posteriormente.

Digite: $prova1

= 6;

Page 67: Sumário · 2 Sumário Aula 01 ..... 6

67

Acabamos de declarar nossa primeira variável, agora iremos adicionar mais 3 variáveis. Pressione Enter. Digite agora $prova2 = 8; Vamos declarar agora a terceira variável. Aperte Enter. Digite agora $prova3 = 10; Vamos adiante para declararmos a ultima variável de nosso código. Aperte Enter. Digite $prova4 = 3; Vamos quebrar mais uma linha. Pressione Enter. Agora vamos declara a variável responsável pela soma das notas. Digite: $media = ($prova1 + $prova2 + $prova3 + $prova4) /4; Pronto, declaramos todas as variáveis.

Agora iremos declarar os comandos de avaliação if e else. Pressione Enter. Pressione novamente Enter.

Page 68: Sumário · 2 Sumário Aula 01 ..... 6

68

Agora digite if ($media >= 7)

Vamos analisar o código por alguns instantes, o que definimos nesse if, é que se a

$media for maior ou igual a 7, irá ser tomada uma determinada ação, definiremos essa ação agora.

Pressione Enter. Digite { e pressione Enter. Agora devemos pressionar a tecla Tab, mas deixe que nós façamos isso para você. Agora digite: echo ("Você foi aprovado sua nota final é de $media.");

Page 69: Sumário · 2 Sumário Aula 01 ..... 6

69

Aperte Enter. Pressione Backspace. Digite }.

Vamos analisar por um momento a estrutura dessas linhas de código que acabamos de

inserir. A função echo, irá imprimir a string referente ao resultado da nota. Agora iremos

acrescentar um comando que irá se aplicar caso a nota seja menor que 7. Aperte Enter. Digite else e pressione Enter. Agora digite {. Aperte Enter. Agora devemos pressionar a tecla Tab, mas deixe que nós façamos isso para você. Digite: echo ("Você foi reprovado sua nota final é de $media."); Pressione Backspace agora. Digite } e pressione Enter.

Page 70: Sumário · 2 Sumário Aula 01 ..... 6

70

Digite por fim ?>.

Clique no local indicado e tecle Enter.

Page 71: Sumário · 2 Sumário Aula 01 ..... 6

71

Digite o código de decodificação de caracteres: header(“Content-type: text/html; charset=utf-8”);

Agora vamos salvar o arquivo que desenvolvemos. Clique em Arquivo.

Page 72: Sumário · 2 Sumário Aula 01 ..... 6

72

Agora clique em Salvar Como.

Abrirá automaticamente o caminho selecionado da última vez em que um projeto foi

salvo, neste caso será phpteste na área de trabalho.

Page 73: Sumário · 2 Sumário Aula 01 ..... 6

73

Renomeie o arquivo para nota.php e aperte Enter. Pronto, agora nosso arquivo está salvo em nosso servidor e pronto para ser executado

por qualquer navegador. Vamos visualizar o resultado de nosso código no Internet Explorer. Clique nele.

Agora clique na barra de navegação.

Page 74: Sumário · 2 Sumário Aula 01 ..... 6

74

Agora digite http://localhost/phpteste/nota.php Aperte Enter.

Agora você pode visualizar o resultado do código que desenvolvemos.

Declaração de strings:

Uma string é uma cadeia de caracteres alfanuméricos. Para declarar uma string podemos utilizar aspas simples '' ou aspas duplas "". $variavel = 'Isto é um teste'; $variavel = “Isto é um teste”;

A diferença é que todo conteúdo contido dentro das aspas duplas é avaliado pelo PHP.

Assim, se a string contém uma variável, esta variável será traduzida pelo seu valor. <?php $fruta = 'maçã'; print "como $fruta"; // resultado 'como maçã' print 'como $fruta'; // resultado 'como $fruta' ?> Podemos declarar uma string com uma palavra-chave: <?php $texto = <<<CHAVE Aqui nesta área você pode escrever CHAVE; echo $texto; ?>

Concatenação: Para concatenar strings, pode-se utilizar o operador "." ou colocar múltiplas variáveis

dentro de strings duplas "", uma vez que seu conteúdo é interpretado. <?php $fruta = 'maçã'; //primeira forma echo $fruta . ' é a fruta de adão'; //resultado = maçã é a fruta de adão //segunda forma echo "{$fruta} é a fruta de adão"; //resultado = maçã é a fruta de adão ?>

Page 75: Sumário · 2 Sumário Aula 01 ..... 6

75

O PHP realiza automaticamente a conversão de tipos: <?php $a = 1234; echo 'O salário é ' . $a . "\n"; echo "O salário é $a \n'; ?>

Caracteres de escape: Como já visto nas aulas anteriores, dentro de aspas duplas "" podemos utilizar

controles especiais interpretados pelo PHP, que são os caracteres de escape (\): \n nova linha \r retorno de carro \t tabulação \\ barra invertida \ \" aspas duplas \$ símbolo de $

Strtoupper

Transforma uma string (conteúdo) para maiúsculo. <?php string strtoupper('Convertendo para maiúsculo'); ?>

Substr

Retorna parte de uma string (conteúdo). string substr (string conteúdo, int início [, comprimento])

Exemplo: <?php $rest = substr("América", 1); echo $rest . "\n"; // mostra mérica $rest = substr("América", 1, 3); echo $rest . "\n"; // mostra mér $rest = substr("América", 0, -1); echo $rest . "\n";// mostra Améric $rest = substr("América", -2); echo $rest . "\n";// mostra ca ?>

String Uma string é uma cadeia de caracteres alfanuméricos.

Page 76: Sumário · 2 Sumário Aula 01 ..... 6

76

Strpad Preenche uma string com outra string, dentro de um formato específico.

string str_pad ( string entrada, int tamanho [, string complemento [, int tipo]]) Tipo de preenchimento pode ser: STR_PAD_RIGHT = preenche com caracteres à direita; STR_PAD_LEFT = preenche à esquerda STR_PAD_BOTH = preenche em ambos os lados.

Exemplo: <?php $texto = "The beatles"; print str_pad($texto, 20) . "\n"; print str_pad($texto, 20, "*", STR_PAD_LEFT) . "\n"; print str_pad($texto, 20, "*", STR_PAD_BOTH) . "\n"; print str_pad($texto, 20, "*) . "\n"; ?>

Str_repeat Repete uma string uma certa quantidade de vezes. string str_repeat ( string entrada, int quantidade)

Exemplo: <?php $txt = ".o000o."; print str_string($txt, 5) . "\n"; ?>

Strlen Retorna o comprimento da string. int strlen ( string entrada) <?php $txt = "o rato oreu a roupa do rei de roma"; print 'O comprimento é: ' . strlen($txt) . "\n"; ?>

Str_replace Substitui uma string por outra em um dado contexto. mixed str_replace ( mixed procura, mixed subistitui, mixed contexto) <?php $txt = "o rato oreu a roupa do rei de roma"; print str_replace('Rato', 'leão', $txt;

Page 77: Sumário · 2 Sumário Aula 01 ..... 6

77

?>

Strpos Encontra a primeira ocorrência de uma string dentro de outra. int strpos ( string principal, string procurada [, int offset]) <?php $minha_string = "o rato roeu a roupa do rei de roma"; $encontrar = 'roupa'; $posicao = strpos($minha_string, $encontrar); if ($posicao) { echo "String encontrada na posição $posicao"; } else { echo "String não encontrada"; } ?> Uma das tarefas mais complicada ao se programar, é lidar com dados e a linguagem

utilizada não possuir meios adequados para fazê-lo.

Geralmente, a manipulação de strings é a pior delas. Mas não no PHP.

O pessoal responsável pela linguagem montou um verdadeiro arsenal que facilita a vida dos programadores. Só temos que agradecer.

O operador ponto A primeira coisa que você precisa saber sobre strings no contexto PHP é a existência do

operador ponto.

O operador ponto é usado para concatenar (ou fundir) strings. Veja um exemplo:

<?php $variavelTexto = "Este é um exemplo de "; echo($variavelTexto."concatenação de strings"); ?> Dê uma olhada na saída efetuada pela função echo(): "Este é um exemplo de

concatenação de strings". O operador ponto, colocado entre a variável $variavelTexto e a string literal, tem como

resultado a união das duas strings.

É claro que poderíamos ter fornecido o parâmetro da função echo() como "$variavelTexto concatenação de strings", ou seja, colocar a variável dentro das aspas duplas.

O resultado seria o mesmo, porém o estilo de programação é considerado de baixo nível.

Page 78: Sumário · 2 Sumário Aula 01 ..... 6

78

Existem inúmeras razões para usar o operador ponto. A principal, no entanto, é apenas para manter cada coisa no seu lugar.

Um bom programador não sobrecarrega o interpretador PHP fazendo com que ele tenha que extrair uma variável que esteja embutida numa string literal.

Use e abuse do operador ponto, é para isto que ele foi bolado.

Obtendo substrings Uma substring nada mais é do que um pedaço de uma string. Observe o exemplo: <?php $stringLonga = "Esta é uma string da qual queremos tirar um pedaço."; echo(substr($stringLonga, 0, 4)); ?> Para extrair um naco da string 'stringLonga' utilizamos a função substr(), a qual precisa

de três argumentos: A string da qual queremos extrair a substring;

A posição inicial, onde a substring começa a ser extraída;

O comprimento da substring que deve ser extraída.

A primeira posição de uma string é 0 (zero) e não 1 como você poderia pensar.

Pois bem, vamos analisar o que a função substr() faz no nosso código:

Ela pega a string $stringLonga, ajusta a posição inicial em 0 (o início da string) e para de extrair caracteres na quarta posição a partir da posição inicial.

O resultado acaba sendo 'Esta'. Se tivéssemos chamado echo() com substr($strLonga, 7, 3), o resultado seria obviamente 'uma'.

Confira contando as posições na string e lembre-se: espaços são caracteres!

Explodindo uma string

Explodir uma string significa quebrá-la em pedaços tendo como referência um

caractere que indica onde ela deve ser quebrada. Vejamos um exemplo:

Bem, imagine que você tenha uma string delimitada por um determinado caractere.

Uma URL, por exemplo. A URL poderia ser:

"http://www.nomeDoHost.com.br/dir/dir/nomeDoArquivo.ext".

Queremos obter apenas o nome do arquivo, então:

Page 79: Sumário · 2 Sumário Aula 01 ..... 6

79

<?php $Url="http://www.NomeDoHost.com.br/dir/NomeDoArquivo.ext"; $cacosDaUrl = explode("/", $Url); $arrayReverso = array_reverse($cacosDaUrl); echo($arrayReverso[0]); ?>

Primeiro definimos uma variável que contém a URL.

Como queremos apenas extrair o nome do arquivo desta URL, é melhor dividir a string nos seus vários elementos.

É fácil perceber que estes elementos estão sendo separados por uma barra (/) portanto, basta utilizar este 'separador' para dividir a string nos seus componentes. É aí que entra a função explode().

A função explode() pede dois parâmetros. O primeiro é o caractere separador e o segundo é a string que deve ser explodida.

Esta função retorna um array contendo todos os elementos encontrados entre os separadores.

Guardamos este array na variável $cacosDaUrl. O array $cacosDaUrl é devolvido pela função explode() da seguinte forma:

$cacosDaUrl[0] = "http:" $cacosDaUrl[1] = www.NomeDoHost.com.br $cacosDaUrl[2] = "dir’" $cacosDaUrl[3] = "NomeDoArquivo.ext"

Agora é só pegar o elemento com a chave 3 do array $cacosDaUrl e pronto.

Porém, e sempre tem que existir um porém, se houver mais de um diretório envolvido? Coisas do tipo:

"http://www.NomeDoHost.com.br/dir1/dir2/NomeDoArquivo.ext"?

Então pegamos o elemento da chave 4. Mas, e se não soubermos de antemão a posição do nome do arquivo? Raciocine: o nome do arquivo é SEMPRE o último elemento do array.

Uma das formas de obtê-lo é calculando a chave do último elemento contando o número de elementos.

Outra solução é inverter as posições dos elementos, ou seja, o último será o primeiro (elemento 0), o penúltimo o segundo, e assim sucessivamente.

Assim temos a certeza da posição do nome do arquivo na chave 0. A função count(), que devolve o número de elementos de um array você já conhece.

Então, vamos dar uma olhada na segunda alternativa, a que foi utilizada no exemplo.

Page 80: Sumário · 2 Sumário Aula 01 ..... 6

80

Criamos a variável $arrayReverso para poder armazenar o valor de retorno da função array_reverse().

Esta função faz exatamente o que estamos precisando.

Enviamos como parâmetro o array $cacosDaUrl e recebemos de volta um array com todos os elementos invertidos, ou seja, o nome do arquivo estará na posição 0.

Daí, para conferir, basta dar um echo() em $arrayReverso[0].

Chegamos ao final da quarta aula. Não esqueça de fazer os exercícios propostos na apostila.

Page 81: Sumário · 2 Sumário Aula 01 ..... 6

81

Exercícios 1. Como podemos calcular a média de 4 avaliações? _______________________________________________________________________

______________________________________________________________________________________________________________________

2. Qual a função do comando if? _______________________________________________________________________

______________________________________________________________________________________________________________________

3. Qual a função do comando else? _______________________________________________________________________

______________________________________________________________________________________________________________________

4. Podemos inserir variáveis dentro de um echo? _______________________________________________________________________

______________________________________________________________________________________________________________________

5. Qual a diferença de uma string com aspas duplas e com aspas normais? _______________________________________________________________________

______________________________________________________________________________________________________________________

6. O que podemos utilizar para concatenar strings? _______________________________________________________________________

______________________________________________________________________________________________________________________

7. Qual a função do strtoupper? _______________________________________________________________________

______________________________________________________________________________________________________________________

8. Qual a função do strpad? _______________________________________________________________________

___________________________________________________________________________________________________________________

Page 82: Sumário · 2 Sumário Aula 01 ..... 6

82

Page 83: Sumário · 2 Sumário Aula 01 ..... 6

83

Page 84: Sumário · 2 Sumário Aula 01 ..... 6

84

Aula 5

Manipulação de tipos

O PHP não requer (ou suporta) a definição de tipo explicita na declaração de variáveis: o tipo de uma variável é determinado pelo contexto em que a variável é utilizada.

Isto significa que, se você assimila um valor string para a variável $var, $var se torna uma string. Se você então assimilar um valor inteiro para $var, ela se torna um inteiro.

Um exemplo da conversão automática do PHP é o operador de adição '+'. Se qualquer um dos operadores for float, então todos os operadores são avaliados como floats, e o resultado será um float.

De outra forma, se os operadores forem interpretados como inteiros então o resultado será um inteiro.

Note que isso NÃO muda os tipos dos operadores: apenas muda em como esses operadores são avaliados.

<?php $foo = "0"; // $foo eh string (ASCII 48) $foo += 2; // $foo eh agora um interio (2) $foo = $foo + 1.3; // $foo eh agora um float (3.3) $foo = 5 + "10 pequenos porcos"; // $foo eh inteiro (15) $foo = 5 + "10 minúsculos porcos"; // $foo eh inteiro (15) ?>

Nota: O comportamento de uma conversão automática para array é atualmente indefinida.

<?php $a = "1"; // $a é uma string $a[0] = "f"; // E com relação aos índices da string? O que acontece? ?>

Desde que o PHP (por razões históricas) suporta indexação de strings através de

utilizando a mesma sintaxe da indexação de arrays, o exemplo acima nos deixa um problema: $a se tornou um array sendo o primeiro elemento "f", ou será que "f" se tornou o primeiro caractere da string $a?

As versões atuais do PHP interpretam a segunda assimilação como identificação de deslocamento na string, então $a se torna "f", o resultado desta conversão automática, entretanto, pode ser considerada indefinida.

Page 85: Sumário · 2 Sumário Aula 01 ..... 6

85

O PHP 4 introduziu a nova sintaxe de chaves para acessar caracteres na string. Utilize esta sintaxe em vez do exemplo apresentado anteriormente:

<?php $a = "abc"; // $a eh uma string $a{1} = "f"; // $a eh agora "afc" ?>

Moldando Tipos - Type Casting

A moldagem de tipos no PHP funciona como no C: o nome de um tipo desejado é escrito entre parênteses antes da variável em que se deseja a moldagem.

<?php

$foo = 10; // $foo eh um inteiro

$bar = (boolean) $foo; // $bar eh um booleano

?>

As moldagens permitidas são:

(int), (integer) - molde para inteiro (bool), (boolean) - molde para booleano (float), (double), (real) - molde para número de ponto flutuante (string) - molde para string (array) - molde para array (object) - molde para objeto

Note que tabulações e espaços são permitidos dentro dos parênteses, então o

seguinte são funcionalmente equivalentes:

<?php

$foo = (int) $bar;

$foo = ( int ) $bar;

?>

Nota: Em vez de moldar uma variável para string, você também pode englobar a variável entre aspas duplas.

Page 86: Sumário · 2 Sumário Aula 01 ..... 6

86

<?php

$foo = 10; // $foo eh um interio

$str = "$foo"; // $str eh uma string

$fst = (string) $foo; // $fst tambem eh uma string

// Isto imprimirah "eles são o mesmo"

if ($fst === $str) {

echo "eles são o mesmo";

}

?>

No PHP é possível converter a variável de um tipo para outro. Para isso devemos

utilizar os conversores de tipo, para fazer a conversão devemos utilizar o tipo pra qual devemos converter entre parênteses antes do nome da variável em que se deseja converter.

No PHP possuímos os seguintes conversores:

Conversor Função

(int), (integer) converte

para inteiro

(bool), (boole

an)

converte

para booleano

(float), (doubl

e), (real)

converte

para float

(string) converte

para string

(array) converte

para array

(object) converte

para objeto

Page 87: Sumário · 2 Sumário Aula 01 ..... 6

87

Conversão de dados para inteiros no PHP

Para converter um valor para inteiro, como vimos anteriormente, basta utilizarmos um

dos conversores de inteiro antes do valor. Observe o exemplo:

Conversão de float em inteiro:

Quando convertemos um número de float, ponto flutuante, para inteiro ele sempre

terá o seu valor truncado, ou seja, arredondado para baixo. Observe:

<?php $float = (int) 10.9; var_dump( $float ); echo '<br />' . PHP_EOL; $float2 = (int) 10.1; var_dump( $float2 ); ?> Como você pode observar ambos os valores 10.9 e 10.1 foram convertidos para 10. A função var_dump() utilizada anteriormente, além de exibir o valor da variável,

mostrará também o tipo da variável como você verá ao testar os exemplos. Já que estamos trabalhando com tipos de dados, é ideal sabermos se o valor foi convertido ou não.

Conversão de string em inteiro:

A conversão de string para inteiro depende do formato da string, assim o PHP avalia o

formato da string caso não possua nenhum valor numérico será convertido para 0 (zero). Caso possua valor numérico em sua primeira posição o valor será considerado, caso o

valor não esteja na primeira posição, será desconsiderado. Veja o exemplo:

<?php $string = (int) 'Muitas casas'; var_dump( $string ); // int(0) echo '<br />' . PHP_EOL; $string2 = (int) '10 casas aproximadamente'; var_dump( $string2 ); // int(10) echo '<br />' . PHP_EOL; $string3 = (int) 'Exatamente 10 casas'; var_dump( $string3 ); // int(0) ?>

Conversão de booleano em inteiro:

A conversão de booleano para string segue uma regra simples em que o valor TRUE é

definido como 1(um) e o valor FALSE é definido como 0(zero). Observe:

Page 88: Sumário · 2 Sumário Aula 01 ..... 6

88

<?php $bool = (int) TRUE; var_dump( $bool ); echo '<br />' . PHP_EOL; $bool2 = (int) FALSE; var_dump( $bool2 ); ?>

Conversão de dados para float no PHP

A conversão para float como pode ser observado anteriormente na tabela, é feita

pelos conversores (float), (double) ou (real). As regras de conversão para float seguem as mesmas que você acabou de ver na

conversão de dados para inteiros. Exceto na conversão para strings.

Conversão de string em float

Na conversão para float a string será avaliada como um ponto flutuante se conter

qualquer um dos caracteres '.', 'e', ou 'E', lembrando que a string deve ser iniciada com um número.

Caso contrário será convertido para 0 (Zero), lembrando que este zero será um float

devido a conversão. Observe:

<?php $string = (float) '1.75cm'; var_dump( $string ); // float(1.75) echo '<br />' . PHP_EOL; $string2 = (float) 'Ele possuia 1.75cm'; var_dump( $string2 ); // float(0) ?>

Conversão de dados para strings no PHP: Para converter um dado para string você já deve estar imaginando que basta utilizar o

conversor (string) e é exatamente isto.

Conversão de booleano em string Quando convertemos um valor booleano para string ocorre uma simples regra, o

valor TRUE será convertido na string 1 e o valor FALSE será convertido em uma string vazia. Observe:

<?php $bool = (string) TRUE; var_dump( $bool ); // string(1) "1" echo '<br />' . PHP_EOL; $bool2 = (string) FALSE; var_dump( $bool2 ); // string(0) "" ?>

Page 89: Sumário · 2 Sumário Aula 01 ..... 6

89

Conversão de inteiro e float em string

Na conversão de inteiro e float o número será convertido para string mantendo a sua

representação. Observe:

<?php $inteiro = (string) 150; var_dump( $inteiro ); // string(3) "150" echo '<br />' . PHP_EOL; $float = (string) 1.77; var_dump( $float ); // string(4) "1.77" ?>

Conversão de dados para booleano no PHP

Na conversão de dados para booleano os seguintes valores serão considerados FALSE(falso):

O próprio booleano FALSE O inteiro 0 (zero)

O ponto flutuante 0.0 (zero)

Uma string vazia e a string "0"

Qualquer outro valor será convertido em TRUE (verdadeiro), observe: <?php $bool = (bool) FALSE; var_dump( $bool ); // bool(false) echo '<br />' . PHP_EOL; $inteiro = (bool) 0; var_dump( $inteiro ); // bool(false) echo '<br />' . PHP_EOL; $float = (bool) 0.0; var_dump( $float ); // bool(false) echo '<br />' . PHP_EOL; $string = (bool) ''; var_dump( $string ); // bool(false) echo '<br />' . PHP_EOL; $inteiro = (bool) 10; var_dump( $inteiro ); // bool(true) echo '<br />' . PHP_EOL; $float = (bool) 1.0; var_dump( $float ); // bool(true) echo '<br />' . PHP_EOL; $string = (bool) 'Uma string'; var_dump( $string ); // bool(true) ?>

Page 90: Sumário · 2 Sumário Aula 01 ..... 6

90

Conversão automática de tipos de dados no PHP Apesar de existirem os conversores que acabamos de ver, o PHP também possui a

conversão automática de tipos que funciona seguindo as mesmas regras que acabamos de ver, observe.

<?php $soma = 10 + 3.5; var_dump( $soma ); // float(13.5) echo '<br />' . PHP_EOL; $soma = 10 + 7.0; var_dump( $soma ); // float(17) echo '<br />' . PHP_EOL; $soma = 10 + FALSE; var_dump( $soma ); // int(10) echo '<br />' . PHP_EOL; $soma = 1 + '7.5'; var_dump( $soma ); // float(8.5) echo '<br />' . PHP_EOL; $soma = 1 + '-7.5 graus celcius'; var_dump( $soma ); // float(-6.5) echo '<br />' . PHP_EOL; $soma = 1 + 'Luanito 20 anos'; var_dump( $soma ); // int(1) echo '<br />' . PHP_EOL; $soma = '20 anos de carreira' + 1; var_dump( $soma ); // int(21) ?> Como você pode observar se utilizarmos float e inteiro em uma operação o resultado

final será float, o valor FALSE possui o valor 0 (zero) os dados seguiram se as mesmas regras de conversão, inclusive as strings que só as iniciadas com valores numéricos são validas para operações matemáticas, ou seja as regras válidas nas conversões de dados, também são aplicadas aqui na conversão automática de tipos.

Não utilizamos os conversores para array e nem para objeto como você pode observar,

mais não se preocupe assim que estes dados forem estudados mostraremos a conversão dos mesmos.

Estruturas de Controle:

Qualquer script PHP é construído por uma série de instruções.

Uma instrução pode ser uma atribuição, uma chamada de função, um 'loop', uma instrução condicional, ou mesmo uma instrução que não faz nada (um comando vazio).

Instruções geralmente terminam com um ponto e vírgula.

Além disso, as instruções podem ser agrupadas em um grupo de comandos através do encapsulamento de um grupo de comandos com chaves.

Um grupo de comandos é uma instrução também. Os vários tipos de instruções são descritos neste capítulo.

Page 91: Sumário · 2 Sumário Aula 01 ..... 6

91

If

A construção if é uma das mais importantes implementações de muitas linguagens, incluindo o PHP.

Ela permite a execução condicional de fragmentos de código.

O PHP implementa uma estrutura if que é similar aquela do C:

if (expressao)

instrucoes

Uma expressão é avaliada por seu contexto Booleano.

Se a expressão for avaliada como TRUE, o PHP executará instruções, e se for avaliado como FALSE, ele será ignorado.

Os exemplos a seguir mostrariam que a é maior que b se a variável $a for maior que a variável $b:

<?php if ($a > $b) echo "a é maior que b"; ?>

Normalmente você vai querer que mais que uma instrução seja executada condicionalmente.

E é claro, não há necessidade de englobar cada instrução com uma cláusula if. Em vez disso, você pode colocar várias instruções em um agrupamento de comandos.

Por exemplo, este código mostraria que a é maior que b se $a for maior que $b, e

então atribuiria o valor de $a para $b:

<?php if ($a > $b) { echo "a é maior que b"; $b = $a; } ?>

Comandos if podem ser aninhados infinitamente dentro de outros comandos if, o que faz com que você complete a flexibilidade para a execução condicional de várias partes do seu programa.

Else

Normalmente você vai querer executar uma instrução se certa condição for encontrada, e uma instrução diferente se a condição não for encontrada.

Isto é o que o else faz. else estende um comando if para executar uma instrução caso a expressão no comando if seja avaliada como FALSE.

Page 92: Sumário · 2 Sumário Aula 01 ..... 6

92

Por exemplo, o código a seguir mostraria a é maior que b se $a for maior que $b, e a NÃO é maior que b caso contrário:

<?php if ($a > $b) { echo "a é maior que b"; } else { echo "a NÃO é maior que b"; } ?>

O comando else só é executado se a expressão if for avaliada como FALSE, e se havendo qualquer expressão elseif, somente se todas elas forem avaliadas como FALSE também.

Elseif/else if

elseif, como seu nome sugere, é uma combinação de if e else. Da mesma forma que o else, ele estende um comando if para executar uma instrução diferente no caso de a expressão if original ser avaliada como FALSE.

Porém, ao contrário de else, ele executará aquela expressão alternativa somente se a expressão condicional do elseif for avaliada como TRUE.

Por exemplo, o código a seguir mostraria a é maior que b, a é igual a b ou a é menor que b:

<?php if ($a > $b) { echo "a é maior que b"; } elseif ($a == $b) { echo "a é igual a b"; } else { echo "a é menor que b b"; } ?>

Pode haver vários elseifs dentro da mesma instrução if. A primeira expressão elseif (se houver) que for avaliada como TRUE será executada.

No PHP, você também pode escrever 'else if' (em duas palavras) e o comportamento será idêntico a um 'elseif' (em uma só palavra).

O significado sintático é ligeiramente diferente (se você está familiarizado com C, ele tem o mesmo comportamento), mas no final das contas ambos teriam exatamente o mesmo comportamento.

O comando elseif só é executado se a expressão if precedente e quaisquer expressões elseif anteriores forem avaliadas como FALSE, e a expressão elseif atual for avaliada como TRUE.

Nota: Note que elseif e else if somente será considerado exatamente o mesmo quando usando chaves.

Page 93: Sumário · 2 Sumário Aula 01 ..... 6

93

Quando usando dois pontos para definir sua condição if/elseif, você não deve separar else

if em duas palavras, ou o PHP falhará com um parse error.

<?php /* Método incorreto: */ if($a > $b): echo $a." is greater than ".$b; else if($a == $b): // Não compilará. echo "The above line causes a parse error."; endif; /* Método correto: */ if($a > $b): echo $a." is greater than ".$b; elseif($a == $b): // Note a combinação das palavras. echo $a." equals ".$b; else: echo $a." is neither greater than or equal to ".$b; endif; ?>

Sintaxe alternativa para estruturas de controle

O PHP oferece uma sintaxe alternativa para algumas das suas estruturas de controle: if, while, for, foreach e switch.

Em cada caso, a forma básica da sintaxe alternativa é mudar o sinal de abertura para dois-pontos (:) e o sinal de fechamento para endif;, endwhile;, endfor;, endforeach; ou endswitch;, respectivamente.

<?php if ($a == 5): ?> A é igual a 5 <?php endif; ?>

No exemplo acima, o bloco HTML "A é igual a 5" está aninhado dentro de uma instrução if escrito na sintaxe alternativa. O bloco HTML será mostrado somente se $a é igual a 5.

A sintaxe alternativa se aplica a else e elseif também. A seguir temos uma estrutura if com elseif e else no formato alternativo:

<?php if ($a == 5): echo "a igual a 5"; echo "..."; elseif ($a == 6): echo "a igual a 6"; echo "!!!"; else: echo "a não é nem 5 nem 6"; endif; ?>

Page 94: Sumário · 2 Sumário Aula 01 ..... 6

94

While

Loops while são o tipo mais simples de criar um 'loop' em PHP. Eles se comportam como seus compatíveis em C.

O formato básico de um comando while é:

while (expressao) instrucoes

O significado de um comando while é simples.

Ele pede que o PHP execute os comandos aninhados repetidamente, enquanto a expressão do while é avaliada como TRUE.

O valor da expressão é verificado cada vez que se passa no começo do 'loop', desta forma, mesmo que este valor mude durante a execução do(s) comando(s) aninhado(s), a execução não parará até que o fim da iteração (cada vez que o PHP executa os comandos dentro do 'loop' é uma iteração).

Às vezes, se a expressão while é avaliada como FALSE logo no início, o(s) comando(s) aninhado(s) não será(ão) rodado(s) nem uma vez sequer.

Como no comando if, você pode agrupar múltiplos comandos dentro do mesmo

laço while englobando um grupo de instruções com chaves, ou usando a sintaxe alternativa:

while (expressao): instrucoes ... endwhile;

Os exemplos a seguir são idênticos, e ambos imprimem números de 1 até 10:

<?php /* exemplo 1 */ $i = 1; while ($i <= 10) { echo $i++; /* o valor impresso será

$i depois do acréscimo (post-increment) */

} /* exemplo 2 */ $i = 1; while ($i <= 10): echo $i; $i++; endwhile; ?>

Do-while

Loops do-while são bem similares aos loops while, exceto pelo fato de que a condição é verificada no fim de cada iteração em vez de no começo.

Page 95: Sumário · 2 Sumário Aula 01 ..... 6

95

A diferença principal dos loops while regulares é que a primeira iteração de um loop do-while é certamente executada (a condição só é verificada no fim da iteração) enquanto que ele pode não rodar necessariamente em um loop while normal.

A condição é verificada no começo de cada iteração, se ela é avaliada como FALSE logo no começo, a execução do loop terminaria imediatamente.

Há apenas uma sintaxe para loops do-while:

<?php $i = 0; do { echo $i; } while ($i > 0); ?>

O loop acima rodaria exatamente uma vez, desde que depois da primeira iteração, quando a condição é verificada, ela é avaliada como FALSE ($i não é maior que zero 0) e a execução do loop termina.

Usuários avançados de C podem estar familiarizados com o uso diferenciado do loop do-while, para permitir o fim da execução no meio dos blocos de código, englobando-os com do-while (0), e usando a instrução break.

O fragmento de código a seguir demonstra isso:

<?php do { if ($i < 5) { echo "i não é grande o suficiente"; break; } $i *= $factor; if ($i < $minimum_limit) { break; } echo "i está Ok"; /* process i */ } while (0); ?>

Não se preocupe se você não entendeu isto da forma certa ou de jeito nenhum. Você pode codificar scripts simples ou mesmo poderosos sem usar esse 'recurso'.

For

Loops do tipo for são os laços mais complexos em PHP.

Eles se comportam como os seus compatíveis em C. A sintaxe de um loop for é:

for (expr1; expr2; expr3) instrucoes

A primeira expressão (expr1) é avaliada (executada) uma vez incondicionalmente no começo do loop.

Page 96: Sumário · 2 Sumário Aula 01 ..... 6

96

No começo de cada iteração, expr2 é avaliada. Se ela é avaliada como TRUE, o loop continua e o(s) comando(s) aninhado(s) é(são) executado(s). Se ela é avaliada como FALSE, a execução do 'loop' termina.

No fim de cada iteração, expr3 é avaliada (executada).

Cada uma das expressões pode ser vazia ou conter múltiplas expressões separadas por vírgulas.

Em expr2, todas as expressões separadas por vírgula são avaliadas, mas o resultado é obtido pela última parte. expr2 vazia significa que o loop pode rodar indefinidamente (PHP considera-a implicitamente como TRUE, como em C).

Isto pode não ser tão inútil quanto você pode pensar, pois frequentemente você pode querer terminar o 'loop' usando uma instrução break condicional em vez de usar a expressão-verdade do for.

Considere os seguintes exemplos. Todos eles mostram números de 1 até 10:

<?php /* exemplo 1 */ for ($i = 1; $i <= 10; $i++) { echo $i; } /* exemplo 2 */ for ($i = 1; ; $i++) { if ($i > 10) { break; } echo $i; } /* exemplo 3 */ $i = 1; for (; ; ) { if ($i > 10) { break; } echo $i; $i++; } /* exemplo 4 */ for ($i = 1, $j = 0; $i <= 10; $j += $i, print $i, $i++); ?>

Obviamente, o primeiro exemplo parece ser o mais bonito (ou talvez o quarto), mas você pode perceber que a possível utilização de expressões vazias em laços for se torna prático em algumas ocasiões.

Page 97: Sumário · 2 Sumário Aula 01 ..... 6

97

O PHP também suporta a "sintaxe de dois-pontos" alternativa para laços for:

for (expr1; expr2; expr3): instrucoes; ...; endfor;

Page 98: Sumário · 2 Sumário Aula 01 ..... 6

98

Exercícios: 9. O PHP requer a definição de tipo explicita na declaração de variáveis? _______________________________________________________________________

_____________________________________________________________________________________________________________________________________________________

10. O comportamento de uma conversão automática para array é definida ou indefinida?

____________________________________________________________________________________________________________________________________________________________________________________________________________________________

11. Cite 3 tipos de moldagens permitidas em PHP: _______________________________________________________________________

_____________________________________________________________________________________________________________________________________________________

12. No PHP, é permitido converter uma variável de um tipo para outro? _______________________________________________________________________

_____________________________________________________________________________________________________________________________________________________

13. Os scripts são construídos pelo que? _______________________________________________________________________

_____________________________________________________________________________________________________________________________________________________

14. Instruções geralmente terminam com o que? _______________________________________________________________________

_____________________________________________________________________________________________________________________________________________________

15. Qual a função do if? _______________________________________________________________________

_____________________________________________________________________________________________________________________________________________________

16. Qual a função do elseif? _______________________________________________________________________

_____________________________________________________________________________________________________________________________________________________

17. Qual a função do else? _______________________________________________________________________

_____________________________________________________________________________________________________________________________________________________

Page 99: Sumário · 2 Sumário Aula 01 ..... 6

99

Page 100: Sumário · 2 Sumário Aula 01 ..... 6

100

Page 101: Sumário · 2 Sumário Aula 01 ..... 6

101

Aula 06

Na aula de hoje aprenderemos um pouco mais sobre estruturas de controle.

Foreach

O PHP4 inclui um construtor foreach, muito parecido com o Perl e outras linguagens.

Isto oferece uma maneira fácil de iterar sobre matrizes. foreach funciona somente com arrays, e lançará um erro se tentar utilizá-lo em uma variável de qualquer tipo diferente ou em variáveis não inicializadas.

Há duas sintaxes; a segunda é uma abreviatura, mas bem útil do que primeira:

foreach (expressao_array as $valor) instruções foreach (expressao_array as $chave => $valor) instruções

A primeira forma varre uma dada matriz dada por expressao_array.

Em cada 'loop', o valor do elemento corrente é atribuído a $valor e o ponteiro interno da matriz é avançado em uma posição (assim, na próxima iteração você estará olhando para o próximo elemento).

A segunda forma faz a mesma coisa, exceto pelo fato de que a chave do elemento atual será atribuída à variável $chave em cada iteração.

A partir do PHP5, é possível iterar objetos também.

Nota: Quando o foreach inicia sua primeira execução, o ponteiro interno da matriz é zerado automaticamente para o primeiro elemento do array.

Isto significa que você não precisa chamar reset() antes de um loop foreach.

Nota: Note também que foreach opera sobre uma cópia do array especificado, não o próprio array. foreach é semelhante um array de ponteiros.

Não confie no ponteiro do array durante ou após o foreach sem resetá-lo.

A partir do PHP5, você pode modificar facilmente os elementos da matriz precedendo $value com &.

Isto irá definir uma referência ao invés de copiar o valor.

<?php $arr = array(1, 2, 3, 4); foreach ($arr as &$value) { $value = $value * 2; } // $arr is now array(2, 4, 6, 8) unset($value); // quebra a referência com o último elemento ?>

Isto é possível apenas se a matriz iterada puder ser referenciada (isto é, uma variável). Nota: foreach tem a habilidade de evitar mensagens de erro com '@'.

Você pode ter notado que os seguintes itens são funcionalmente idênticos:

Page 102: Sumário · 2 Sumário Aula 01 ..... 6

102

<?php $arr = array("um", "dois", "três"); reset ($arr); while (list(, $value) = each ($arr)) { echo "Valor: $value<br />\n"; } foreach ($arr as $value) { echo "Valor: $value<br />\n"; } ?>

Os seguintes também são funcionalmente idênticos:

<?php $arr = array("one", "two", "three"); reset($arr); while (list($key, $value) = each ($arr)) { echo "Chave: $key; Valor: $value<br />\n"; } foreach ($arr as $key => $value) { echo "Chave: $key; Valor: $value<br />\n"; } ?>

Mais alguns exemplos para demonstrar os usos: <?php

$arr = array("one", "two", "three"); reset($arr); while (list($key, $value) = each ($arr)) { echo "Chave: $key; Valor: $value<br />\n"; } foreach ($arr as $key => $value) { echo "Chave: $key; Valor: $value<br />\n"; } ?>

Mais alguns exemplos para demonstrar os usos: <?php

/* exemplo foreach 1: somente valores */ $a = array(1, 2, 3, 17); foreach ($a as $v) { echo "Valor atual de \$a: $v.\n"; }

/* exemplo foreach 2: valores (com a sua notação de chave de acesso mostrado para il

ustração) *

Page 103: Sumário · 2 Sumário Aula 01 ..... 6

103

$a = array(1, 2, 3, 17); $i = 0; /* para exemplo somente */ foreach ($a as $v) { echo "\$a[$i] => $v.\n"; $i++; }

/* exemplo foreach 3: chaves e valores */ $a = array ( "um" => 1, "dois" => 2, "três" => 3, "dezessete" => 17 ); foreach ($a as $k => $v) { echo "\$a[$k] => $v.\n"; } /* exemplo foreach 4: arrays multidimensionais */ $a = array(); $a[0][0] = "a"; $a[0][1] = "b"; $a[1][0] = "y"; $a[1][1] = "z"; foreach ($a as $v1) { foreach ($v1 as $v2) { echo "$v2\n"; } } /* exemplo foreach 5: arrays dinâmicos */ foreach (array(1, 2, 3, 4, 5) as $v) { echo "$v\n"; } ?>

Break

break cancela a execução do comando for, foreach, while, do-while ou switch atual.

break aceita um argumento numérico opcional que diz a ele quantas estruturas aninhadas englobadas devem ser quebradas.

<?php $arr = array('um', 'dois', 'três', 'quatro', 'PARE', 'cinco');

Page 104: Sumário · 2 Sumário Aula 01 ..... 6

104

while (list (, $val) = each ($arr)) { if ($val == 'PARE') { break; /* Você poderia colocar 'break 1;' aqui. */ } echo "$val<br />\n"; } /* Utilizando o argumento opcional. */ $i = 0; while (++$i) { switch ($i) { case 5: echo "No 5<br />\n"; break 1; /* Sai somente do switch. */ case 10: echo "No 10; saindo<br />\n"; break 2; /* Sai do switch e while. */ default: break; } } ?>

Continue

continue é usado dentro de estruturas de loops para saltar o resto da iteração do loop atual e continuar a execução na avaliação e no início da próxima iteração.

Nota: Note que no PHP a instrução switch é considerada uma estrutura de loop quando relacionada ao comando continue.

continue aceita um argumento numérico opcional que diz a ele de quantos níveis de

loops aninhados ele deve saltar até o fim.

<?php while (list ($key, $value) = each ($arr)) { if (!($key % 2)) { // pula itens pares continue; } do_something_odd ($value); } $i = 0; while ($i++ < 5) { echo "Fora<br />\n"; while (1) { echo "&nbsp;&nbsp;Meio<br />\n"; while (1) { echo "&nbsp;&nbsp;Dentro<br />\n"; continue 3; } echo "Isto nunca será exibido.<br />\n";

Page 105: Sumário · 2 Sumário Aula 01 ..... 6

105

} echo "Nem isso.<br />\n"; } ?>

Omitindo o ponto e vírgula depois do continue pode resultar em confusão. Este é um exemplo do que você não deve fazer.

<?php for ($i = 0; $i < 5; ++$i) { if ($i == 2) continue print "$i\n"; } ?>

0 1 3 4 Mas esse script somente exibirá: 2 Porque o valor de retorno da chamada a print() é int(1), e então ele se parecerá como

o argumento numérico opcional mencionado acima.

Switch

A instrução switch é similar a uma série de instruções IFs seguidas.

Em muitas ocasiões, você poderá ter que comparar a mesma variável (ou expressão) com muitos valores diferentes, executando códigos diferentes dependendo com qual valor ele se encaixar.

É exatamente para isso que a instrução switch faz.

Nota: Note que diferentemente de outras linguagens, a instrução continue se aplica a switch e age similarmente a um break.

Se você tem um switch dentro de um loop e deseja continuar para a próxima iteração do loop, use continue 2.

Nota: Note que switch/case fazem comparações soltas.

Os exemplos seguintes mostram duas maneiras diferentes de escrever a mesma coisa,

uma utilizando uma série de ifs e elseifs e a outra utilizando a instrução switch:

Exemplo #1: Estrutura switch <?php

if ($i == 0) { echo "i igual a 0"; } elseif ($i == 1) { echo "i igual a 1";

Page 106: Sumário · 2 Sumário Aula 01 ..... 6

106

} elseif ($i == 2) { echo "i igual a 2"; } switch ($i) { case 0: echo "i igual a 0"; break; case 1: echo "i igual a 1"; break; case 2: echo "i igual a 2"; break; } ?>

Exemplo #2: A estrutura switch permite uso de strings <?php

switch ($i) { case "apple": echo "i is apple"; break; case "bar": echo "i is bar"; break; case "cake": echo "i is cake"; break; } ?>

É importante entender como a instrução switch funciona para evitar enganos.

A instrução switch executa linha a linha (atualmente, instrução a instrução). No início, nenhum código é executado.

Somente quando uma instrução case é encontrada com um valor que combina com a expressão do switch faz com que o PHP execute as instruções a partir daí.

O PHP continua executando as instruções até o fim do bloco switch ou na primeira vez que encontrar uma instrução break.

Se você não escrever uma instrução break no fim das instruções case, o PHP continuará executando os cases seguintes.

Exemplo:

<?php switch ($i) { case 0: echo "i igual a 0"; case 1: echo "i igual a 1"; case 2:

Page 107: Sumário · 2 Sumário Aula 01 ..... 6

107

echo "i igual a 2"; } ?>

Aqui, se $i é igual à zero, o PHP executará todas as instruções echo!

Se $i é igual a 1, o PHP executará os últimas duas instruções echo, e somente se $i for igual a 2, você terá o comportamento 'esperado' apenas onde 'i igual a 2' será mostrado.

Então é importante não se esquecer das instruções break (e às vezes não colocá-las para obter esse resultado em certas circunstâncias).

Em uma instrução switch, a condição somente será avaliada e resultado comparado para cada instrução case.

Em uma instrução elseif, a condição é avaliada novamente. Se sua condição é mais complicada que uma simples comparação e/ou é dentro de um loop, um switch é mais rápido.

Um case pode não ter nenhuma instrução dentro, o que simplesmente passa o

controle para o próximo case.

<?php switch ($i) { case 0: case 1: case 2: echo "i é menor que 3 mas não negativo"; break; case 3: echo "i é 3"; } ?>

Um case especial é o default. Esse case é executado quando nenhum outro case combina. Por exemplo:

<?php switch ($i) { case 0: echo "i igual a 0"; break; case 1: echo "i igual a 1"; break; case 2: echo "i igual a 2"; break; default: echo "i não é igual a 0, 1 ou 2"; } ?>

Page 108: Sumário · 2 Sumário Aula 01 ..... 6

108

A expressão avaliada pelo case precisa ser um tipo simples, ou seja, inteiros, números de ponto flutuante e strings.

Arrays ou objetos não podem ser utilizados a não ser que eles impliquem num tipo simples.

A sintaxe alternativa para estruturas de controle é suportada para os switches. Para

maiores informações, veja Sintaxe alternativa para estruturas de controle.

<?php switch ($i): case 0: echo "i igual a 0"; break; case 1: echo "i igual a 1"; break; case 2: echo "i igual a 2"; break; default: echo "i não é igual a 0, 1 ou 2"; endswitch; ?>

Declare

O construtor declare é utilizado para configurar diretivas de execução para blocos de código.

A sintaxe do declare é similar à sintaxe de outros construtores de controle.

declare (diretiva) instrucao

A seção diretiva permite o comportamento do bloco declare a ser configurado.

Atualmente somente uma diretiva é reconhecida: a diretiva ticks.

A parte instrução do bloco declare será executada.

Como ela é executada e que efeitos colaterais que podem ocorrem durante a execução dependem da configuração diretiva.

O construtor declare também pode ser utilizado no escopo global, afetando todo o código que se seguir.

Ticks Um tick é um evento que ocorre para cada N níveis de instruções executadas pelo

interpretador com o bloco declare.

O valor para N é especificado utilizando ticks=N nos blocos declare das

seções diretiva.

O(s) evento(s) que ocorre(m) em cada tick são especificados utilizando register_tick_function(). Veja o exemplo abaixo para maiores detalhes.

Page 109: Sumário · 2 Sumário Aula 01 ..... 6

109

Note que mais de um evento pode ocorrer em cada tick.

Exemplo #1 Histórico de um trecho de código PHP <?php

// Uma função que grava o tempo entre as chamadas function profile ($dump = FALSE) { static $profile; // Retorna os tempos preservados no histórico, então apaga if ($dump) { $temp = $profile; unset ($profile); return $temp; } $profile[] = microtime (); } // Ativa o manipulador do tick register_tick_function("profile"); // Inicializa a função antes de declarar o bloco profile(); // Roda um trecho de código, disparando um tick a cada duas instruções declare(ticks=2) { for ($x = 1; $x < 50; ++$x) { echo similar_text(md5($x), md5($x*$x)), "<br />;"; } } // Mostra os dados guardados no histórico print_r(profile (TRUE)); ?>

No exemplo acima, o bloco 'declare' grava os tempos a cada segundo nível dentro das

instruções no bloco enquanto executam. Esta informação pode ser utilizada para encontrar áreas lentas em segmentos

particulares de código. Este processo pode ser realizado de outras formas, mas a utilização de ticks é mais

conveniente e fácil de programar.

Ticks são idealizados para debug, implementação de multitask simples, processos de I/O em background e afins.

Page 110: Sumário · 2 Sumário Aula 01 ..... 6

110

Return

Se chamada em uma função, a instrução return() termina imediatamente a execução da função atual e retorna seu argumento como o valor da função. return() também termina a execução de uma instrução eval() ou de um script.

Se chamada no escopo global, a execução do script atual será terminada. Se o arquivo do script atual foi incluído com include() ou require(), então a execução é devolvida para o arquivo chamador.

Especificamente para arquivos de script incluídos com include(), o valor fornecido para return() será devolvido como o valor da chamada include().

Se return() for chamado do arquivo de script principal, então o programa pára. Se o arquivo de script atual é o configurado em auto_prepend_file ou auto_append_file do php.ini, então a execução desses scripts é finalizada.

Nota: Note que return() é um construtor de linguagem e não uma função, e parênteses em volta do argumento não é requerido. É comum deixa-los, e você atualmente deve fazê-lo, já que o PHP tem menos trabalho para fazer neste caso.

Nota: Você jamais deve usar parênteses em torno da sua variável retornada ao retornar por referência, já que isto não irá funcionar.

Você pode retornar apenas variáveis por referência, não o resultado de um comando.

Se você usar return ($a); então você não esta retornando uma variável, mas o resultado da expressão ($a) (o qual é, claro, o valor de $a).

Require()

A instrução require() inclui e avalia um arquivo específico.

require() e include() são idênticos em todas as formas exceto pela manipulação de erros. Ambas produzem um Warning, mas require() resultará em um Fatal Error.

Em outras palavras, não hesite em utilizar require() se na falta de um arquivo quiser parar o processamento da página. include() não se comporta da mesma maneira, e o script poderá continuar nessa situação.

Em todo caso, vale a pena confirmar a configuração da diretiva include_path.

Exemplo #1 Exemplos simples de require()s <?php

require 'prepend.php'; require $somefile; require ('somefile.txt'); ?>

Nota: Até o PHP 4.0.2, havia o seguinte comportamento: require() sempre tentará ler o arquivo informado, mesmo que a linha do require nunca seja executada.

Page 111: Sumário · 2 Sumário Aula 01 ..... 6

111

É por isso que instruções condicionais não afetam require(). Entretanto, se a linha onde ocorre o require() não for executada, nada do código incluído do arquivo também será.

Similarmente, estruturas de loop não afetam o funcionamento do require().

Mas o código incluído pela função será submetida ao loop. A instrução require() apenas ocorre uma vez.

Nota: Este é um construtor de linguagem e não uma função, por isso não é possível chamá-lo através de funções variáveis.

Aviso

As versões Windows do PHP anteriores ao PHP 4.3.0 não suportam acesso a arquivos remotos através desta função, mesmo se allow_url_fopen estiver ativado.

Include()

A instrução include () inclui e avalia o arquivo informado.

Esses dois construtores são idênticos à exceção de como eles manipulam erros. Ambas produzem um Warning, mas require() resultará em um Fatal Error.

Em outras palavras, utilize require() se você deseja que um arquivo faltando interrompa o processamento da página. include() não se comporta da mesma maneira, permitindo que o script continue nessas situações.

Em todo caso, vale a pena confirmar a configuração da diretiva include_path.

Esteja avisado que um erro de interpretação no arquivo incluído não causa a parada do processamento em versões do PHP anteriores a PHP 4.3.5. A partir desta versão, causa.

Arquivos a incluir são procurados primeiramente no include_path relativo ao diretório atual de trabalho, e então no diretório atual do script. Por exemplo, se seu include_path é libraries, o diretório atual é /www/, se você incluiu include/a.php e há um b.php nesse arquivo, b.php será procurado primeiro em /www/libraries/ e somente depois em /www/include/.

Se o nome do arquivo começa com ./ ou ../, ele é procurado apenas no diretório atual.

Quando um arquivo é incluído, seu código entra no escopo de variável da linha onde a inclusão ocorre.

Qualquer variável disponível da linha onde a chamada da inclusão ocorre estará disponível para o arquivo incluído, daquele ponto em diante. Entretanto, todas as funções e classes definidas no arquivo incluído tem um escopo global.

Exemplo #1 Exemplos de include()s simples variaveis.php

<?php $cor = 'verde'; $fruta = 'maçã'; ?>

Page 112: Sumário · 2 Sumário Aula 01 ..... 6

112

teste.php <?php echo "Uma $fruta $cor"; // Uma include 'vars.php'; echo "Uma $fruta $cor"; // Uma maçã verde ?>

Se o include ocorre dentro de uma função do arquivo principal, então todo o código incluído será executado como se ele tivesse sido definido dentro daquela função.

Da mesma forma, ele seguirá o escopo de variáveis da função. Uma exceção para esta regra são as constantes mágicas que são avaliadas pelo parser antes dos includes ocorrerem.

Exemplo #2 Incluindo dentro de funções <?php

function foo() { global $cor; include 'variaveis.php'; echo "Uma $fruta $cor"; } /* variaveis.php está no escopo de foo(), * .* então $fruta NÃO está disponível fora de * .* seu escopo. $cor estará porque ela foi * .* declarada como global */ foo(); // Uma maçã verde echo "A $fruta $cor"; // Uma maçã ?>

Quando um arquivo é incluído, o interpretador sai do modo PHP e entra no modo HTML (no começo do arquivo incluído), e alterna novamente no seu fim.

Por isso, qualquer código dentro do arquivo incluído que precisa ser executado como código PHP tem de ser delimitado por tags válidas de abertura e fechamento.

Se "URL fopen wrappers" estão ativas no PHP (normalmente na configuração default), você pode especificar um arquivo utilizando uma URL (via HTTP ou qualquer outro wrapper suportado) em vez de uma caminho local.

Se o servidor apontado interpreta o arquivo informado como código PHP, variáveis podem ser passadas ao arquivo incluído na URL de requisição como num HTTP GET.

Isto não é necessariamente a mesma coisa que incluir o arquivo e compartilhar o escopo de variável do arquivo principal: o script será executado no servidor remoto e apenas seu resultado será incluído no script local.

Page 113: Sumário · 2 Sumário Aula 01 ..... 6

113

Aviso

As versões Windows do PHP anteriores ao PHP 4.3.0 não suportam acesso a arquivos remotos através desta função, mesmo se allow_url_fopen estiver ativado.

Exemplo #3 include() através de HTTP <?php

/* Este exemplo assume que www.exemplo.com está configurado para interpretar * arquivos .php mas não .txt. Além, 'Funciona' aqui significa que as * variáveis $foo e $bar estão disponíveis no arquivo incluído */ // Não funciona: arquivos txt não são manipulados em www.example.com como PHP include 'http://www.exemplo.com/arquivo.txt?foo=1&bar=2'; // Não funciona: procura por um arquivo chamado 'arquivo.php?foo=1&bar=2' no // sistemas de arquivo local. include 'arquivo.php?foo=1&bar=2'; // Funciona. include 'http://www.exemplo.com/arquivo.php?foo=1&bar=2'; $foo = 1; $bar = 2; include 'arquivo.txt'; // Funciona. include 'arquivo.php'; // Funciona. ?>

Aviso

Security Warning

O arquivo remoto pode ser processado pelo servidor remoto (dependendo da extensão do arquivo e do fato de o servidor remoto executar o PHP ou não), mas ainda tem de produzir um script PHP válido porque ele será processado pelo servidor local.

Se o arquivo do servidor remoto deve ser processado lá e apenas exibido, a função, readfile () é muito melhor para ser usada.

Entretanto, um cuidado especial deve ser tomado para se assegurar que o script remoto irá produzir um código válido e desejado.

Manipulando retornos: é possível executar um comando return() dentro de um arquivo incluído para terminar o processamento naquele arquivo e retornar para o script que o chamou.

Também é possível retornar valores dos arquivos incluídos. Você pode usar o valor de um chamado include como você faria com uma função normal. Isto não é, entretanto, possível ao incluir arquivos remotos a menos que a saída do arquivo remoto tenha tags de início e final do PHP válidas (como qualquer arquivo local).

Você pode declarar as variáveis necessárias dentro destas tags e elas serão introduzidas em qualquer ponto que o arquivo seja incluído.

Devido a include() ser um construtor especial da linguagem, parêntesis não são necessários ao redor do seu argumento. Tenha cuidado ao comparar o valor de retorno.

Page 114: Sumário · 2 Sumário Aula 01 ..... 6

114

Exemplo #4 Comparando o valor de retorno de include <?php

// não funciona, avaliado como(('vars.php') == 'OK'), ex, include('') if (include('vars.php') == 'OK') { echo 'OK'; } // funciona if ((include 'vars.php') == 'OK') { echo 'OK'; } ?>

Exemplo #5 Instruções include() e return() return.php

<?php $var = 'PHP'; return $var; ?> noreturn.php <?php $var = 'PHP'; ?> testreturns.php <?php $foo = include 'return.php'; echo $foo; // imprime 'PHP' $bar = include 'noreturn.php'; echo $bar; // imprime 1 ?>

$bar assimila o valor 1 porque a inclusão foi realizada com sucesso. Verifique a diferença entre os exemplos.

O primeiro utiliza return() dentro do arquivo incluído enquanto que o outro não.

Se houverem funções definidas no arquivo incluído, elas podem ser usadas no arquivo principal independentemente se elas foram antes de return() ou depois.

Se o arquivo for incluído duas vezes, o PHP5 causa um erro fatal porque as funções já foram declaradas, em quanto o PHP4 não reclama sobre funções definidas após return().

É remendado usar include_once() ao invés de conferir se o arquivo já foi incluído e condicionalmente retornar dentro do arquivo incluído.

Outra maneira de "incluir" um arquivo PHP em uma variável é capturar a saída usando Funções de Controle de Saída com include(). Por exemplo:

Exemplo #6 Usando o buffer de saída para incluir um arquivo PHP em uma string <?php

$string = get_include_contents('somefile.php'); function get_include_contents($filename) {

Page 115: Sumário · 2 Sumário Aula 01 ..... 6

115

if (is_file($filename)) { ob_start(); include $filename; $contents = ob_get_contents(); ob_end_clean(); return $contents; } return false; } ?>

Require_once()

A instrução require_once () incluí e avalia o arquivo especificado durante a execução do script. Seu comportamento é similar ao da instrução require (), a não ser que o arquivo informado já tenha sido incluído, não refazendo a operação novamente.

require_once() pode ser utilizado nos casos em que o mesmo arquivo pode acabar sendo incluído mais de uma vez durante a execução de um script em particular, quando na verdade ele só pode ser incluído apenas uma, para evitar problemas com redefinições de funções, alterações nos valores de variáveis, etc.

Os valores de retorno são os mesmos que include (). Se o arquivo já tiver sido incluído, esta função retorna TRUE

Nota: require_once() foi acrescentado a partir PHP 4.0.1

Nota: Esteja avisado que o comportamento de require_once () e include_once () pode não ser o que você espera em um sistema operacional insensitivo ao caso (como o Windows).

Este funcionamento mudou no PHP5 - o caminho é normalizado primeiro, assim C:\PROGRA~1\A.php é realizado como o mesmo que C:\Program Files\a.php assim o arquivo é requerido apenas uma vez.

Aviso

As versões Windows do PHP anteriores ao PHP 4.3.0 não suportam acesso a arquivos remotos através desta função, mesmo se allow_url_fopen estiver ativado.

Include_once()

A instrução include_once() inclui e avalia o arquivo especificado durante a execução de um script. Seu comportamento é similar a instrução include(), a não ser que o arquivo informado já tenha sido incluído, não refazendo a operação novamente.

Como o nome sugere, ele será incluído apenas uma vez.

include_once() pode ser utilizado nos casos em que o mesmo arquivo pode acabar sendo incluído mais de uma vez durante a execução de um script em particular, quando na verdade ele só pode ser incluído apenas uma para evitar problemas com redefinições de funções, alterações nos valores de variáveis, etc.

Nota: include_once() foi acrescentado a partir PHP 4.0.1.

Nota: Esteja avisado que o comportamento de require_once() e include_once() pode não ser o que você espera em um sistema operacional insensitivo ao caso (como o Windows).

Page 116: Sumário · 2 Sumário Aula 01 ..... 6

116

Exemplo #1 include_once() não diferencia maiúsculas e minúsculas no Windows <?php

include_once "a.php"; // isto irá incluir a.php include_once "A.php"; // isto irá incluir a.php novamente no Windows!

(Apenas PHP 4) ?> Este funcionamento mudou no PHP5 - o caminho é normalizado primeiro,

assim C:\PROGRA~1\A.php é realizado como o mesmo que C:\Program Files\a.php pois o arquivo é incluído apenas uma vez.

Aviso

As versões Windows do PHP anteriores ao PHP 4.3.0 não suportam acesso a arquivos remotos através desta função, mesmo se allow_url_fopen estiver ativado.

Page 117: Sumário · 2 Sumário Aula 01 ..... 6

117

Exercícios 1. foreach funciona somente com o que? _______________________________________________________________________

_____________________________________________________________________________________________________________________________________________________

2. O que acontece quando o foreach inicia sua primeira execução? _______________________________________________________________________

_____________________________________________________________________________________________________________________________________________________

3. Qual a função do break? _______________________________________________________________________

_____________________________________________________________________________________________________________________________________________________

4. Continue é usado para que? _______________________________________________________________________

_____________________________________________________________________________________________________________________________________________________

5. A instrução switch é similar à que? _______________________________________________________________________

_____________________________________________________________________________________________________________________________________________________

6. O construtor declare é utilizado para que? _______________________________________________________________________

_____________________________________________________________________________________________________________________________________________________

7. A instrução return é responsável pelo que? _______________________________________________________________________

_____________________________________________________________________________________________________________________________________________________

8. O que faz a instrução require()? _______________________________________________________________________

_____________________________________________________________________________________________________________________________________________________

9. O que faz a instrução include()? _______________________________________________________________________

_____________________________________________________________________________________________________________________________________________________

10. O que faz a instrução require_once()? _______________________________________________________________________

_____________________________________________________________________________________________________________________________________________________

11. O que faz a função include_once()? _______________________________________________________________________

_____________________________________________________________________________________________________________________________________________________

12. Quantas vezes o include_once() será inserido? _______________________________________________________________________

_____________________________________________________________________________

________________________________________________________________________

Page 118: Sumário · 2 Sumário Aula 01 ..... 6

118

Page 119: Sumário · 2 Sumário Aula 01 ..... 6

119

Page 120: Sumário · 2 Sumário Aula 01 ..... 6

120

Aula 7

Na aula de hoje iremos demonstrar as funcionalidades da linguagem PHP no

tratamento de vetores e matrizes. As principais funções de manipulação de vetores serão demonstradas em exemplos

práticos. O tratamento de vetores é utilizado em programação para diversas tarefas. No entanto, pode se citar como primordiais no tratamento de informações recebidas

de um banco de dados, no recebimento de formulários enviados à página e na manipulação de variáveis globais, como a $_SESSION.

Quando um sistema possui um número muito elevado de variáveis, normalmente mais

de 50, a programação começa a se tornar confusa e o programador pode perder o controle sobre as variáveis criadas.

Muitas vezes os programadores iniciantes não se lembram de ter inicializado uma

determinada variável e a acabam sobrescrevendo. Uma forma de organizar melhor a área de atuação de suas variáveis é tratá-las como

um vetor, conforme será demonstrado no decorrer deste artigo.

Definindo Arrays, Vetores E Matrizes: Vetor é uma lista de valores organizados em forma de fila, sobre um índice. Vetores também são normalmente conhecidos pelo seu nome em inglês arrays. Os vetores possuem apenas uma dimensão e por isso são chamados de matrizes

unidimensionais. Matrizes, por outro lado, são vetores formados por vetores, ou seja, é um vetor, onde

cada elemento é um novo vetor. As matrizes podem ser bidimensionais, quando formadas por um vetor de vetores,

tridimensionais, quando formadas por um vetor de vetor de vetores e assim por diante até o que se chama genericamente de matriz N dimensional.

Uma vez que matrizes, arrays e vetores são basicamente a mesma coisa, iremos tratá-

los com as mesmas funções. O PHP possui um conjunto de funções especialmente preparado para o tratamento de

vetores. Uma documentação mais apurada pode ser obtida no manual do PHP em: http://www.php.net.

Page 121: Sumário · 2 Sumário Aula 01 ..... 6

121

As saídas nas telas, mostradas neste artigo foram obtidas através das funções show_vars() e print_a() da biblioteca debuglib, constituindo importante recurso, tanto para programadores recém-iniciados, quanto para aqueles com muitos anos de experiência.

A biblioteca não faz parte da distribuição padrão do PHP, no entanto, pode ser

distribuída e utilizada gratuitamente. O download pode ser realizado em: http://www.atomar.de.

Entendendo um Vetor: Os vetores podem ser imaginados como mapas ordenados de variáveis, onde cada

parte do mapa é constituída de um valor e de um índice. Um vetor pode ser criado implicitamente através dos colchetes ou explicitamente,

através da chamada da função array(). Tanto a criação de vetores de forma implícita, quanto criação por forma explicita

apresentam as mesmas características. Para cada elemento de um vetor, deve-se especificar um par valor/índice. Caso não se especifique um índice, o próprio PHP especificará um índice para o valor

passado.

Formas de criar um Vetor:

O script acima demonstra várias formas de se criar um vetor. Em alguns casos, o nome dos índices também foi passado além do valor desejado.

Page 122: Sumário · 2 Sumário Aula 01 ..... 6

122

É possível notar também que os índices não necessitam estar em ordem, podendo ser passados em qualquer ordem ou até mesmo serem índices textuais, além dos tradicionais índices numéricos.

O resultado do script pode ser visualizado na figura a seguir.

O $vetor01 foi criado através da chamada da função array(), o que resultou em um

vetor vazio. Os colchetes vazios indicam ao PHP que se está incluindo um elemento no vetor e que

o próprio PHP deve especificar um índice. Os índices numéricos automáticos do PHP iniciam em 0, portanto, "valor 01" recebe o

índice 0. Por este mesmo motivo, "valor 02" recebe o próximo índice automático, 1. No

entanto, quando dentro dos colchetes especifica-se um índice, ele é utilizado. Este é o caso da linha $vetor01[5] = "valor 03", onde o índice 5 do vetor assumiu o

valor "valor 03". Agora, o índice automático do PHP passa a ser o próximo elemento, ou seja 6 e depois

7, como demonstrado nas linhas $vetor01[] = "valor 04" e $vetor01[] = "valor 05". Pode-se também, retroceder índices, como por exemplo, na linha $vetor01[4] = "valor

06", mas a indexação automática do PHP não retrocede, por isso, na linha $vetor01[] = "valor 07" o índice assumido é o 8.

O $vetor02 também foi criado através da função array(), no entanto, uma lista de

valores foi passada para a função, que ordenou os valores e os indexou automaticamente, de 0 até 6.

Uma chamada implícita com os colchetes vazios resulta na criação do índice 7 (sete) e

logo depois armazenou-se uma sequência de caracteres no índice 10 do vetor, também de forma implícita.

Page 123: Sumário · 2 Sumário Aula 01 ..... 6

123

O $vetor03, no entanto, foi criado passando se os pares valor/índice desejados. Isso foi feito através do operador seta dupla (=>) o qual se lê "índice com valor".

Após uma nova chamada implícita que resulta na indexação automática 11, passa-se

implicitamente o valor "mais uma string" que será armazenado no índice "string". Aqui se tem um exemplo de índice textual. Índices textuais agem da mesma forma que

índices numéricos, com a exceção que índices textuais não podem ser incrementados. A variável $vetor04, por outro lado, já foi criada de forma implícita, mostrando que

não é necessário o uso da função array() para a criação de um vetor. Desta forma, um vetor foi iniciado com o índice textual "apaga buffer". A criação de uma matriz pode ser realizada da mesma forma, como por exemplo, no

script abaixo.

Após executado, o script apresenta como saída as seguintes matrizes.

No script acima, as mesmas técnicas demonstradas anteriormente foram utilizadas

para a criação de uma matriz bidimensional.

Page 124: Sumário · 2 Sumário Aula 01 ..... 6

124

A matriz, na verdade, foi criada como sendo um vetor e cada elemento deste vetor pode ser um novo vetor, de qualquer tamanho.

Portanto, o primeiro elemento do vetor é constituído de um novo vetor de três

elementos. Pode se notar também que há uma diferença sutil entre o segundo e o terceiro

elemento deste vetor principal. O terceiro elemento é apenas um elemento do vetor, enquanto o segundo elemento é

um novo vetor de um elemento. Estas são as formas de se criar vetores e matrizes bidimensionais. Para a criação de matrizes de ordem superior, basta inserir uma nova dimensão neste

conjunto de vetores, seja através de uma nova chamada à função array() em cada novo elemento do vetor anterior ou através da utilização de um novo conjunto de colchetes.

Tratando Vetores Como Filas e Pilhas: Vetores podem ser utilizados para programar estruturas de dados, como filas e pilhas. Neste caso, podemos processar os dados que devem ser armazenados em um vetor e

os dados que são retirados do vetor segundo duas metodologias: FIFO e LIFO.

A metodologia FIFO (do inglês First In, First Out) é também conhecida como uma fila.

Isto significa dizer que os primeiros dados a serem armazenados no nosso vetor serão os primeiros dados a serem retirados do vetor, como, por exemplo, numa fila de banco, onde o primeiro cliente a entrar na fila deve ser o primeiro cliente a ser atendido.

A LIFO (do inglês Last In First Out) é também conhecida como uma pilha. Na pilha, assim como em uma pilha de papéis, o último dado a ser colocado na fila deverá ser o primeiro dado a ser solicitado.

O script abaixo demonstra, de forma bem simples, as funções necessárias para o

tratamento de filas e pilhas em PHP.

Page 125: Sumário · 2 Sumário Aula 01 ..... 6

125

É importante salientar que no script acima, onde está escrito "inserir a função para mostrar vetores", deve se inserir a função print_r() ou uma das funções da biblioteca debuglib.

Neste artigo, optou-se pelas funções da biblioteca debuglib, pois a interface com o

usuário destas funções é melhor que a da função nativa do PHP print_r(). Pode-se afirmar que é muito complicado, até quase impossível, trabalhar com vetores

de dados de tamanho ou ordem elevadas apenas com a função print_r() nativa do PHP.

Criou-se um vetor $carros01 com quatro elementos. A seguir, clonou-se este vetor, criando-se um novo vetor $carros02.

Um elemento de cada vetor foi retirado, sendo que no primeiro vetor, chamou-se a

função array_shift() e no segundo vetor, chamou-se a função array_pop(), armazenando-se este elemento nas referidas variáveis.

Logo após, armazenou-se o elemento "Clio" em cada vetor, sendo que o primeiro vetor foi tratado com a função array_push() e o segundo vetor foi tratado com a função array_unshift().

Desta forma, verifica-se que é possível construir uma pilha através da função

array_push(), que acrescenta um elemento no final de um vetor e da função array_pop() que retira um elemento do final de um vetor.

Uma fila pode ser construída de forma similar, através da função array_push() e da

função array_shift(), que retira um elemento do início de um vetor. Utilizando-se a função array_unshift(), que acrescenta um elemento ao início de um

vetor, em conjunto com a função array_pop(), se obtém uma fila reversa, enquanto que o uso da função array_unshift() com a função array_shift(), possibilita a criação de uma pilha reversa.

Page 126: Sumário · 2 Sumário Aula 01 ..... 6

126

O Ponteiro Interno de um Vetor:

Outra forma de se tratar vetores é percorrendo-os, como a uma sequência de dados organizados.

Para isso, o PHP dispõe de um ponteiro interno e de funções, que movem o ponteiro

pelo vetor para alcançar um determinado dado. Considere o script abaixo.

Page 127: Sumário · 2 Sumário Aula 01 ..... 6

127

O script, depois de executado, produziu a saída na tela demonstrada na figura anterior. No exemplo, preferiu-se que as variáveis obtidas fossem colocadas em vetores de

forma a ficar mais fácil o entendimento do mesmo. No início do script, o ponteiro interno está apontando para o primeiro elemento do

vetor. A função current() retorna o valor apontado e a função key() retorna o índice do valor

apontando, portanto, ao chamar estas funções, será retornado o valor e o índice do primeiro elemento.

As funções next() e prev(), incrementam e decrementam o ponteiro, respectivamente,

retornando o novo valor apontado. É possível ainda avançar o ponteiro até o final do vetor através da função end(), a qual

também retorna o valor deste elemento, ou retroceder o ponteiro até o início do vetor com a função reset(), que também retorna o valor do elemento inicial.

Se as funções key(), current(), next() e prev() forem utilizadas de forma indevida, por

exemplo, para se acessar um valor ou um índice em uma posição não pertencente ao vetor, um valor de erro será retornado.

FALSE é obtido quando se tenta acessar o valor anterior ao início de um vetor ou o

valor posterior ao final do mesmo, bem como um valor corrente de um índice inexistente. Quando se incrementa ou se decrementa um ponteiro além do limite do vetor, a

chamada de um índice inexistente retorna o valor NULL. Em sua forma base, a função each() retorna o valor e o índice do elemento apontado

pelo ponteiro interno do vetor, em um novo vetor, indexado numericamente e textualmente pelas palavras "value" e "key".

A estrutura foreach() é um laço de repetição exatamente como o laço for(), que varre

um vetor tratando cada elemento. Há três peculiaridades no laço foreach() que devem ser consideradas: 1) O laço não age sobre o vetor, mas sobre uma cópia do vetor, portanto, a cada

iteração, o ponteiro interno do vetor original não é modificado; 2) antes do início do laço, o ponteiro interno do vetor original é retrocedido até o

primeiro elemento; 3) Ao final do laço, o ponteiro interno do vetor original é avançado até o final do

vetor. No início do script, o ponteiro é avançado duas posições, logo depois, dentro do laço

foreach(), ele é retrocedido ao início, conforme demonstrado na variável $pos. No entanto, ao final do laço, se current() for chamado a cada iteração, o ponteiro

interno do vetor original não é avançado até o final, diferente do que ocorreu com a variável $pos2, quando o laço não executou a função current().

Page 128: Sumário · 2 Sumário Aula 01 ..... 6

128

O uso do operador seta dupla permite que o laço retorne, além do valor do elemento corrente, o índice.

Page 129: Sumário · 2 Sumário Aula 01 ..... 6

129

Exercícios: 1. Primordialmente, os vetores são utilizados para que? _______________________________________________________________________

_____________________________________________________________________________________________________________________________________________________

2. Que tipo de indivíduo pode acabar sobrescrevendo variáveis? _______________________________________________________________________

_____________________________________________________________________________________________________________________________________________________

3. Os vetores podem ser imaginados como o que? _______________________________________________________________________

_____________________________________________________________________________________________________________________________________________________

4. Existe diferença entre a criação de vetores de forma implícita ou explicita? _______________________________________________________________________

_____________________________________________________________________________________________________________________________________________________

5. Os índices em geral, necessitam estar em ordem? _______________________________________________________________________

_____________________________________________________________________________________________________________________________________________________

6. Vetores podem ser utilizados para implementar estruturas de dados? Como? _______________________________________________________________________

_____________________________________________________________________________

________________________________________________________________________

Page 130: Sumário · 2 Sumário Aula 01 ..... 6

130

Page 131: Sumário · 2 Sumário Aula 01 ..... 6

131

Page 132: Sumário · 2 Sumário Aula 01 ..... 6

132

Aula 8

Trabalhando com Arrays

Um array é uma variável, mas diferente das demais, ele armazena uma coleção de valores e não somente um. E ainda por cima podem conter outras variáveis e de tipos diferentes.

Detalhe importante: Quando em uma função precisarmos retornar mais de um valor, array é a saída, basta retornar todos os valores em forma de array.

Além disso, é semelhante ao que estudamos na matemática: linhas e colunas. Matriz 3x4 (3 linhas e 4 colunas).

Um array no PHP é um mapa ordenado, que relaciona valores com chaves (em linhas e colunas).

Especificando um array()

array([chave =>] valor, ...);

A chave pode ser uma string ou um inteiro.

O valor pode ser qualquer coisa.

Algumas das funções

Essas funções abaixo permitem a interação e manipulação de arrays de várias formas. Arrays são essenciais para armazenar, gerenciar, operar sobre um conjunto de variáveis.

Arrays (matrizes) simples e multidimensionais são suportados e podem ser criados pelo usuário ou por outras funções. Existem diversas funções específicas para bancos de dados, que preenchem arrays com os dados retornados em consultas, e vários outros tipos de funções também retornam arrays.

array_fill -- Preenche um array com valores

array array_fill ( int start_index, int num, mixed value )

<?php $a = array_fill(5, 6, 'banana'); print_r($a); ?>

array_merge -- Funde dois ou mais arrays

array array_merge ( array array1, array array2 [, array ...] )

Page 133: Sumário · 2 Sumário Aula 01 ..... 6

133

<?php $array1 = array(); $array2 = array(1 => "data"); $result = array_merge($array1, $array2); ?>

Não esqueça que as chaves numéricas serão reordenadas!

Array ( [0] => data )

Se você quer preservar os arrays e apenas concatená-los, o operador +:

<?php $array1 = array(); $array2 = array(1 => "data"); $result = $array1 + $array2; ?>

As chaves numéricas serão preservadas e as associações originais permanecem.

array_pad -- Expande um array para um certo comprimento utilizando um determinado valor.

array array_pad ( array input, int pad_size, mixed pad_value )

Exemplo 1. Exemplo de array_pad()

<?php $input = array(12, 10, 9); $result = array_pad($input, 5, 0); // $result é array(12, 10, 9, 0, 0) $result = array_pad($input, -7, -1); // $result é array(-1, -1, -1, -1, 12, 10, 9) $result = array_pad($input, 2, "noop"); // Não será expandido. ?>

array_pop -- Retira um elemento do final do array

mixed array_pop ( array array )

Page 134: Sumário · 2 Sumário Aula 01 ..... 6

134

<?php $cesta = array("laranja", "banana", "melancia", "morango"); $fruta = array_pop($cesta); print_r($cesta); ?>

array_push -- Adiciona um ou mais elementos no final de um array.

int array_push ( array array, mixed var [, mixed ...] )

<?php $cesta = array("laranja", "morango"); array_push($cesta, "melancia", "batata"); print_r($cesta); ?>

array_reverse -- Retorna um array com os elementos na ordem inversa.

array array_reverse ( array array [, bool preserve_keys] )

<?php $input = array("php", 4.0, array ("verde", "vermelho")); $result = array_reverse($input); $result_keyed = array_reverse($input, TRUE); print_r($result_keyed); ?>

array_search -- Procura por um valor em um array e retorna sua chave correspondente caso seja encontrado. Caso contrário retorna FALSE.

mixed array_search ( mixed procurar_este, array procurar_neste [, bool strict] )

<?php $a=array("a","b",0,"c","d"); echo "a: ".array_search("a",$a)."<br>"; echo "b: ".array_search("b",$a)."<br>"; echo "c: ".array_search("c",$a)."<br>"; echo "d: ".array_search("d",$a)."<brn>"; echo "0: ".array_search("0",$a)."<br>"; echo "x: ".array_search("x",$a)."<br>"; echo "1: ".array_search("1",$a); ?>

Page 135: Sumário · 2 Sumário Aula 01 ..... 6

135

<?php if (array_search($needle, $array)!== FALSE) { //code goes here ( } ?> <?php function array_replace($search, $replace, &$array) { foreach($array as $key => $value) { if($value == $search) { $array[$key] = $replace; } } } ?> <? $Projects[0] = array(123, "Text 1"); $Projects[1] = array(456, "Text 2"); $Projects[2] = array(789, "Text 3"); $search_value = "ext 3"; foreach ($Projects as $key => $row){ foreach($row as $cell){ if (strpos($cell, $search_value) !== FALSE){ echo "<p>Project ".$key; } } } ?>

array_shift -- Retira o primeiro elemento de um array.

mixed array_shift ( array array )

<?php $cesta = array("laranja", "banana", "melancia", "morango"); $fruta = array_shift($cesta); print_r($cesta); ?>

array_sum -- Calcula a soma dos elementos de um array.

mixed array_sum ( array arr )

Page 136: Sumário · 2 Sumário Aula 01 ..... 6

136

<?php $a = array(2, 4, 6, 8); echo "soma(a) = ".array_sum($a)."<br>"; $b = array("a" => 1.2, "b" => 2.3, "c" => 3.4); echo "soma(b) = ".array_sum($b)."<br>"; ?>

array_unique -- Remove os valores duplicados de um array.

array array_unique ( array array )

<?php $input = array("a" => "verde", "vermelho", "b" => "verde", "azul", "vermelho"); $result = array_unique($input); print_r($result); ?>

Exemplo 2. array_unique() e tipos

<?php $input = array(4, "4", "3", 4, 3, "3"); $result = array_unique($input); var_dump($result); ?> <pre> <h2>array_values -- Retorna todos os valores de um array</h2> array array_values ( array input ) //Retorna os valores, as chaves não <pre> <?php $array = array("tamanho" => "G", "cor" => "dourado"); print_r(array_values ($array)); ?>

array -- Cria um array.

array array ( [mixed ...] )

Exemplo 1. Exemplo de array()

Page 137: Sumário · 2 Sumário Aula 01 ..... 6

137

<?php $frutas = array ( "frutas" => array("a"=>"laranja", "b"=>"banana", "c"=>"maçã"), "numeros" => array(1, 2, 3, 4, 5, 6), "buracos" => array("primeiro", 5 => "segundo", "terceiro") ) ?>

Exemplo 2. Indexação automática com array()

<?php $array = array(1, 1, 1, 1, 1, 8 => 1, 4 => 1, 19, 3 => 13); print_r($array); ?>

arsort -- Ordena um array em ordem decrescente dos valores mantendo a associação entre índices e valores.

void arsort ( array array [, int sort_flags] )

<?php $frutas = array("d" => "limao", "a" => "laranja", "b" => "banana", "c" => "melancia"); arsort($frutas); foreach ($frutas as $chave => $valor) { echo "$chave = $valor\n"; } ?>

asort -- Ordena um array em ordem crescente dos valores mantendo a associação

entre índices e valores.

void asort ( array array [, int sort_flags] )

<?php $frutas = array("d" => "limao", "a" => "laranja", "b" => "banana", "c" => "melancia"); asort($frutas); foreach ($frutas as $chave => $valor) { echo "$chave = $valor\n"; } ?>

Page 138: Sumário · 2 Sumário Aula 01 ..... 6

138

count -- Conta o número de elementos de uma variável.

int count ( mixed var [, int mode] )

<?php $a[0] = 1; $a[1] = 3; $a[2] = 5; $a[3] = 6; $result = count($a); // $result == 4 print $result."<br>"; $b[0] = 7; $b[5] = 9; $b[10] = 11; $result = count($b); // $result == 3; print $result; ?>

Exemplo 2. Uso recursivo da função count() (PHP >= 4.2.0).

<?php $food = array( 'fruits' => array('orange', 'banana', 'apple'), 'veggie' => array('carrot', 'collard','pea')); // recursive count echo count($food,COUNT_RECURSIVE); // mostra 8 // normal count echo count($food); // mostra2 2 ?> <?php $food = array( 'fruits' => array('orange', 'banana', 'apple'), 'veggie' => array('carrot', 'collard','pea')); // recursive count echo count($food,COUNT_RECURSIVE)."<br>"; // mostra 8 // normal count echo count($food); // mostra2 2 ?>

current -- Retorna o elemento corrente em um array.

mixed current ( array array )

<?php $transport = array('foot', 'bike', 'car', 'plane');

Page 139: Sumário · 2 Sumário Aula 01 ..... 6

139

$mode = current($transport); // $mode = 'foot'; echo "Atual $mode<br>"; $mode = next($transport); // $mode = 'bike'; echo "Atual $mode<br>"; $mode = current($transport); // $mode = 'bike'; echo "Atual $mode<br>"; $mode = prev($transport); // $mode = 'foot'; echo "Atual $mode<br>"; $mode = end($transport); // $mode = 'plane'; echo "Atual $mode<br>"; $mode = current($transport); // $mode = 'plane'; echo "Atual $mode<br>"; ?>

each -- Retorna o par chave/valor corrente de um array e avança o seu cursor.

array each ( array array )

<?php $foo = array("bob", "fred", "jussi", "jouni", "egon", "marliese"); $bar = each($foo); print_r($bar); ?> <?php $foo = array("Robert" => "Bob", "Seppo" => "Sepi"); $bar = each($foo); print_r($bar); ?>

Percorrendo um array com each()

<?php $fruit = array('a' => 'apple', 'b' => 'banana', 'c' => 'cranberry'); reset($fruit); while (list($key, $val) = each($fruit)) { echo "$key => $val\n"; } /* Saída: a => apple b => banana c => cranberry */

Page 140: Sumário · 2 Sumário Aula 01 ..... 6

140

?>

end -- Faz o ponteiro interno de um array apontar para o seu último elemento.

mixed end ( array array )

<?php $frutas = array('melancia', 'banana', 'morango'); print end($frutas); // morango ?>

key -- Retorna uma chave da posição atual de um array associativo. mixed key ( array array )

<?php $array = array( 'fruit1' => 'apple', 'fruit2' => 'orange', 'fruit3' => 'grape', 'fruit4' => 'apple', 'fruit5' => 'apple'); // este ciclo exibirá todas as chaves do array associativo // auxiliado pela função next() while ($fruit_name = current($array)) { echo key($array).'<br>'; next($array); } ?> <?php $array = array( 'fruit1' => 'apple', 'fruit2' => 'orange', 'fruit3' => 'grape', 'fruit4' => 'apple', 'fruit5' => 'apple'); // este ciclo exibirá toda a chave do array associativo // onde o valor é igual a "apple" while ($fruit_name = current($array)) { if ($fruit_name == 'apple') { echo key($array).'<br>'; } next($array); }

Page 141: Sumário · 2 Sumário Aula 01 ..... 6

141

?>

next -- Avança o ponteiro interno de um array.

mixed next ( array array )

<?php $transport = array('foot', 'bike', 'car', 'plane'); $mode = current($transport); // $mode = 'foot'; print"$mode<br>"; $mode = next($transport); // $mode = 'bike'; print"$mode<br>"; $mode = next($transport); // $mode = 'car'; print"$mode<br>"; $mode = prev($transport); // $mode = 'bike'; print"$mode<br>"; $mode = end($transport); // $mode = 'plane'; print"$mode<br>"; ?>

prev -- Retrocede o ponteiro interno de um array.

mixed prev ( array array )

<?php $transport = array('foot', 'bike', 'car', 'plane'); $mode = current($transport); // $mode = 'foot'; print"$mode<br>"; $mode = next($transport); // $mode = 'bike'; print"$mode<br>"; $mode = next($transport); // $mode = 'car'; print"$mode<br>"; $mode = prev($transport); // $mode = 'bike'; print"$mode<br>"; $mode = end($transport); // $mode = 'plane'; print"$mode<br>"; ?> <pre> <h2>reset -- Faz o ponteiro interno de um array apontar para o seu primeiro

elemento</h2> mixed reset ( array array )

Page 142: Sumário · 2 Sumário Aula 01 ..... 6

142

<pre> <?php $array = array('primero passo', 'segundo passo', 'terceiro passo', 'quarto passo'); // por definição, o ponteiro está sobre o primeiro elemento echo current($array)."<br>\n"; // "Primeiro passo" // pula dois passos next($array); next($array); echo current($array)."<br>\n"; // "passo três" // reinicia o ponteiro, começa novamente o primeiro passo reset($array); echo "Depois de resetado...: " . current($array)."<br>\n"; // "primeiro passo" ?>

sizeof -- Apelido de count()

sort -- Ordena um array pelo seu valor.

void sort ( array array [, int sort_flags] )

<?php $frutas = array("limao", "laranja", "banana", "melancia"); sort($frutas); foreach ($frutas as $chave => $valor) { echo "frutas[".$chave."] = ".$valor."<br>"; } ?>

Os seguintes também são funcionalmente idênticos:

<?php $arr = array("one", "two", "three"); reset($arr); while (list($key, $value) = each ($arr)) { echo "Chave: $key; Valor: $value<br />\n"; } foreach ($arr as $key => $value) { echo "Chave: $key; Valor: $value<br />\n"; } ?>

Page 143: Sumário · 2 Sumário Aula 01 ..... 6

143

Mais alguns exemplos para demonstrar os usos:

<?php /* exemplo foreach 1: somente valores */ $a = array(1, 2, 3, 17); foreach ($a as $v) { echo "Valor atual de \$a: $v.\n"; } /* exemplo foreach 2: valores (com as chaves impressas para ilustração) */ $a = array(1, 2, 3, 17); $i = 0; /* para exemplo somente */ foreach ($a as $v) { echo "\$a[$i] => $v.\n"; $i++; } /* exemplo foreach 3: chaves e valores */ $a = array ( "um" => 1, "dois" => 2, "três" => 3, "dezessete" => 17 ); foreach ($a as $k => $v) { echo "\$a[$k] => $v.\n"; } /* exemplo foreach 4: arrays multidimensionais */ $a[0][0] = "a"; $a[0][1] = "b"; $a[1][0] = "y"; $a[1][1] = "z"; foreach ($a as $v1) { foreach ($v1 as $v2) { echo "$v2\n"; } }

Page 144: Sumário · 2 Sumário Aula 01 ..... 6

144

/* exemplo foreach 5: arrays dinâmicos */ foreach (array(1, 2, 3, 4, 5) as $v) { echo "$v\n"; } ?>

Exemplo de array multidimensional.

$produto[1][codigo] = "1"; $produto[1][nome] = "João Pereira Brito"; $produto[1][email] = "[email protected]"; $produto[1][rua] = "Vasco da Gama"; $produto[1][numero] = "1345"; $produto[2][codigo] = "2"; $produto[2][nome] = "Antônio queiroz";

Exemplo de Array

$i=0; while($i < $numregs){ $codigo=pg_result($consulta,$i,codigo); $nome=pg_result($consulta,$i,nome); $venc=pg_result($consulta,$i,vencimento); $apartamento=pg_result($consulta,$i,apartamento); $pessoas=pg_result($consulta,$i,pessoas); $cota_agua=pg_result($consulta,$i,cota_agua); $cota_condominio=pg_result($consulta,$i,cota_condominio); $cota_reserva=pg_result($consulta,$i,cota_reserva); $total = $cota_agua + $cota_condominio + $cota_reserva; $total = number_format($total,2, ',','.'); ... $i++; }

Também podemos ter um array formado por outros arrays (neste caso, cada sub array

é uma linha do principal).

$arrayvarios = array( array(1, 3, 5, 7), array(2, 4, 6, 8),

Page 145: Sumário · 2 Sumário Aula 01 ..... 6

145

array(1, 1, 1, 1) );

Neste caso temos um array 2x4 (2 linhas por 4 colunas, que iniciam sempre com índice

zero).

Então se queremos retornar o valor 8, que está na linha 2 e coluna 4, devemos

retornar o índice 1,3 (linha2=índice 1, coluna4=índice3).

print $arrayvarios[1][3];

Atribuindo valores às chaves de arrays.

Também podemos fazer diretamente assim:

print $alunos["0732355"] = "João Brito";

Lembrando que, a chave, é exclusiva. Podemos ter:

$alunos["0732355"] = "João Brito"; $alunos["0932355"] = "João Brito"; Mas não podemos ter: $alunos["0732355"] = "João Brito"; $alunos["0732355"] = "Ribamar FS";

Trabalhando com arrays.

Para facilitar o entendimento, vamos definir array como um conjunto de valores, que podem ser identificados em grupo ou então separadamente. Estes conjuntos podem ser muito úteis enquanto programamos, pois em alguns casos podem substituir uma tabela em banco de dados ou então utilizando métodos mais avançados podemos carregá-los dinamicamente e utiliza-los quase como um banco de dados em memória.

A linguagem PHP oferece uma incrível gama de recursos para se trabalhar com arrays. Com destaque para as funções auxiliares que permitem fazer desde uma simples contagem de elementos até a conversão automática de um array ou string.

Exercícios 1. O que é um array? _______________________________________________________________________

_____________________________________________________________________________________________________________________________________________________

2. O que é um array em PHP?

Page 146: Sumário · 2 Sumário Aula 01 ..... 6

146

____________________________________________________________________________________________________________________________________________________________________________________________________________________________

3. Qual o objetivo da função array_fill? _______________________________________________________________________

_____________________________________________________________________________________________________________________________________________________

4. Qual o objetivo da função array_merge? _______________________________________________________________________

_____________________________________________________________________________________________________________________________________________________

5. Qual o objetivo da função array_push? _______________________________________________________________________

_____________________________________________________________________________________________________________________________________________________

Page 147: Sumário · 2 Sumário Aula 01 ..... 6

147

Page 148: Sumário · 2 Sumário Aula 01 ..... 6

148

Page 149: Sumário · 2 Sumário Aula 01 ..... 6

149

Aula 09 Nas ultimas aulas nós aprendemos os fundamentos da linguagem PHP e como utilizá-

los. Agora iremos aprender a desenvolver páginas WEB e também veremos como as

funções em PHP se comportam neste tipo de situação. Existem apenas 3 formas de recebermos dados de nosso usuário pela WEB, estes

seriam: 1ª URL ou Links 2ª Forms 3ª Cookies A princípio, existem apenas estas três formas de interação com o usuário, podemos

conhecê-las também por: 1ª URL ou Links - GET 2ª Forms - POST 3ª Cookies – COOKIE Podemos efetuar uma operação GET quando nos referirmos a uma URL ou Link. Forms irá postar os dados no servidor. E cookies seria quando puxarmos um cookie do servidor. Cada linguagem web possui uma maneira diferente de interagir com estas 3 técnicas.

Veremos então, alguns exemplos de manipulação de links.

Manipulação de Links: Temos previamente abertos dois documento em PHP chamados primeirapagina.php e

segundapagina.php, primeiramente estaremos trabalhando com estes dois documentos. Ambos estão

armazenados em nossa pasta testephp dentro de nosso servidor.

Em ambos nós

possuímos uma estrutura de HTML básica em cada uma das páginas, como você pode visualizar no documento primeirapagina.html, Links em PHP serão simplesmente

Page 150: Sumário · 2 Sumário Aula 01 ..... 6

150

links em HTML, se quisermos chegar a segunda página, devemos primeiramente digitar: <a href=segundapagina.php> Segunda Página </a> Da mesma forma que o exemplo abaixo.

Após salvar o documento, abra o seu navegador de internet:

Page 151: Sumário · 2 Sumário Aula 01 ..... 6

151

Clique na barra de navegação:

Digite http://localhost/phpteste/primeirapagina.php e pressione Enter.

Como você pode notar, foi criado um link, você pode ver que é um link em HTML

normal referente à segunda página.

Page 152: Sumário · 2 Sumário Aula 01 ..... 6

152

Clique sem Segunda Página:

Você pode verificar que o link nos direcionou para a segunda página. Simples não

acha?

Mas isso não é realmente PHP, isto é apenas HTML, de fato nem criamos ainda uma

tag em PHP dentro da estrutura de nossas páginas. Volte agora a estrutura da primeirapagina.php.

Em HTML você pode enviar valores juntamente com o link que você criou. Para fazer

isso, note no exemplo abaixo o valor que especificamos foi de id=1.

Page 153: Sumário · 2 Sumário Aula 01 ..... 6

153

Clique no local indicado para Salvar:

Após salva-lo, você ainda pode perceber que tudo ainda se refere a HTML, mas e se na

segunda página nós desejarmos pegar este valor de id e trabalharmos com ele? Teremos de ter um pouco de PHP para que possamos pegar o valor da URL.

Page 154: Sumário · 2 Sumário Aula 01 ..... 6

154

Entre na estrutura de nossa segunda pagina.php:

Dentro da tag <body>, vamos iniciar nosso código em PHP. Faça como o exemplo

abaixo.

Se tentássemos rodar agora nossa segunda página, teríamos o resultado de que o valor

ainda não foi definido. Portanto, o que precisamos é uma forma de recebermos o valor da URL.

O PHP em si faz algo de grande ajuda para nós, tudo que foi colocado depois do ponto de interrogação em nossa URL, pode ser considerado como um array de acesso e este array é chamado Super Global.

Para termos acesso a ele, digite: print_r($_GET); da forma demonstrada abaixo.

Page 155: Sumário · 2 Sumário Aula 01 ..... 6

155

Vamos agora comentar a linha abaixo, observe o exemplo a seguir.

Após salva-lo, podemos visualizar o resultado do código em navegador.

Você pode visualizar que a página em si não nos deu dado nenhum, pois não

determinamos nenhum dado específico para ela. Para determinarmos isso, clique no final do endereço de sua segunda página.

Page 156: Sumário · 2 Sumário Aula 01 ..... 6

156

Agora digite ?id=1 e pressione Enter, isso nos dará o resultado exemplificado abaixo.

Como você pode ver, ele nos retornou que o id é igual a 1. Você pode utilizar este array da forma que quiser, por exemplo, no lugar de id=1 digite

nome=ivo e pressione Enter, você poderá visualizar o resultado abaixo.

Você pode ver que nos retornou o nome sendo igual a ivo. Agora vamos voltar a determinar o array como id=1, para isso, clique em Voltar. Agora vamos setar uma nova variável na estrutura de nossa segunda página para que

ela possa ser chamada por nosso echo que está comentado. Vamos também remover o comentário, verifique na imagem abaixo.

Page 157: Sumário · 2 Sumário Aula 01 ..... 6

157

Agora para termos uma noção melhor do que fizemos, vamos ressaltar esse echo com uma fonte diferente.

Vamos colocá-lo dentro das tags <strong> para ressaltá-lo. Verifique a imagem abaixo.

Page 158: Sumário · 2 Sumário Aula 01 ..... 6

158

Após salva-lo, vamos visualizar o resultado no navegador, confira na imagem abaixo.

Você pode agora verificar que nosso id está em negrito. Vamos agora modificar o valos desse id. Faça como na imagem a seguir, lembrando-se

de atualizar a página.

Page 159: Sumário · 2 Sumário Aula 01 ..... 6

159

Você pode verificar que o resultado foi modificado. Agora volte a estrutura de nossa primeirapagina.php, vamos determinar que o id seja

diferente. Verifique na imagem abaixo o id=12.

Após salvar nosso progresso, vamos abrir a primeira página novamente, como

mostrado abaixo.

Pelo que você pode analisar anteriormente, este link irá nos direcionar para a segunda

página e irá determinar seu id como 12.

Page 160: Sumário · 2 Sumário Aula 01 ..... 6

160

Clique no link e você terá o seguinte resultado:

Como pode ver, o resultado foi exatamente como esperado. Nós já deixamos nosso site muito dinâmico não acha? Pois podemos enviar valores

entre as páginas por utilizarmos estes links.

Até agora, tivemos uma explicação referente à primeira forma de como podemos receber informação de nosso usuário, como trabalhar com URL’s e links ou requisições GET.

Agora vamos dar uma olhada em Forms que normalmente serão relacionados a

requisições POST, pois os dados serão postados de um formulário para o servidor.

Vamos ver então como formulários funcionam em PHP.

Criamos previamente para você dois novos arquivos chamados form.php e processo.php como você pode ver na imagem abaixo.

Page 161: Sumário · 2 Sumário Aula 01 ..... 6

161

Você pode ver que dentro de form.php possuímos uma estrutura básica em HTML.

Agora vamos inserir para você certo código relacionado à criação de formulários e

vamos explica-lo passo a passo. Como você pode ver temos um formulário que irá direcionar o resultado de nossos

dados para uma página chamada “processo.php” com o método “post”.

Page 162: Sumário · 2 Sumário Aula 01 ..... 6

162

Inserimos a seguir um valor chamado “Usuário” do tipo “text” que irá requisitar a nosso usuário que se identifique.

Logo após isso inserimos um valor chamado “Senha:” do tipo “password” que irá requisitar a nosso usuário que insira uma palavra chave.

Já que determinamos que seu tipo seja “password”, os caracteres não serão vistos. E finalmente temos um valor chamado “Enviar” que irá nos retornar um botão de

envio dos dados para a página “processo.php”.

Page 163: Sumário · 2 Sumário Aula 01 ..... 6

163

Uma vez que desenvolvermos um site onde será utilizado login e senha para limitar o acesso de determinados usuários, iremos utilizar formulários similares a este.

Vamos visualizar o resultado de nosso código em nosso navegador. Tendo em mente que você já está familiarizado com o procedimento, deixe que nós

acessemos o arquivo para você. Agora podemos digitar nestes campos valores, tais valores serão processados e

enviados para o arquivo que criamos previamente chamado processo.php.

Page 164: Sumário · 2 Sumário Aula 01 ..... 6

164

O que teremos de fazer agora é preparar a página processo.php para receber os dados, não acha?

Abra o Notepad++ clicando no local indicado abaixo.

Agora clique em processo.php

Como você pode ver, temos uma estrutura em HTML básico, o que iremos fazer é inserir um pouco de PHP dentro da tag <body>.

Clique no local indicado.

Page 165: Sumário · 2 Sumário Aula 01 ..... 6

165

Iremos inserir previamente para você as tags iniciais do PHP para acelerarmos o

processo. Agora digite $username = $_POST['username']; como na imagem abaixo e logo em

seguida, pressione Enter.

Page 166: Sumário · 2 Sumário Aula 01 ..... 6

166

Agora digite $password = $_POST['password']; como na imagem abaixo e logo em seguida pressione Enter.

Agora digite echo "{$username}: {$password}"; como na imagem abaixo.

O que fizemos aqui, foi simplesmente determinar que iremos puxar da variável global

$_POST, os dados de username e password e logo em seguida exibir os mesmo.

Page 167: Sumário · 2 Sumário Aula 01 ..... 6

167

Clique em Salvar. Verificando o resultado do formulário: Clique no navegador indicado na imagem abaixo.

Agora clique em usuário.

Page 168: Sumário · 2 Sumário Aula 01 ..... 6

168

Vamos determinar um nome para nosso usuário, digite ivo como na imagem abaixo.

Agora clique no campo senha.

Page 169: Sumário · 2 Sumário Aula 01 ..... 6

169

Vamos determinar agora uma senha para ele, digite 123 como na imagem abaixo.

Pronto, já preenchemos os campos necessários para o envio de dados por meio nosso

formulário, o que nos resta a fazer é clicar em enviar.

Clique no botão Enviar destacado na imagem abaixo.

Page 170: Sumário · 2 Sumário Aula 01 ..... 6

170

Como você pode notar ele retornou nosso usuário e senha.

Você pode criar validações via forms onde você poderá validar um login para um site,

enviar um comentário de um determinado site via e-mail, entre outras diversas funcionalidades.

Como você pode notar, existem diversas formas de deixarmos nossas páginas mais

interativas e até mesmo de deixamos elas mais seguras com o auxílio da validação via o método post.

Chegamos ao final da nona aula. Não deixe de executar os exercícios da apostila.

Page 171: Sumário · 2 Sumário Aula 01 ..... 6

171

Exercícios 1. URL’s também são conhecidas como o que? _______________________________________________________________________

_____________________________________________________________________________________________________________________________________________________

2. Forms também são conhecidos como o que? _______________________________________________________________________

_____________________________________________________________________________________________________________________________________________________

3. De que três formas podemos interagir com o usuário? _______________________________________________________________________

_____________________________________________________________________________________________________________________________________________________

4. Podemos interligar páginas utilizando PHP? _______________________________________________________________________

_____________________________________________________________________________________________________________________________________________________

5. De um exemplo de variável global utilizada em aula. _______________________________________________________________________

_____________________________________________________________________________________________________________________________________________________

6. Forms normalmente serão relacionados a que tipo de requisições? _______________________________________________________________________

_____________________________________________________________________________________________________________________________________________________

7. Qual a função da linha de código <form action= “processo.php” method=”post”>?

____________________________________________________________________________________________________________________________________________________________________________________________________________________________

8. Qual a função da linha de código <input type=”text” name=“username” value=”” />?

____________________________________________________________________________________________________________________________________________________________________________________________________________________________

9. Qual a função da linha de código <input type=”password” name=”password” value=”” />?

____________________________________________________________________________________________________________________________________________________________________________________________________________________________

10. Qual a função da linha de código <input type=”submit” name=”submit” value=”Enviar” />?

____________________________________________________________________________________________________________________________________________________________________________________________________________________________

11. Podemos criar validações com formulários? _______________________________________________________________________

_____________________________________________________________________________________________________________________________________________________

Page 172: Sumário · 2 Sumário Aula 01 ..... 6

172

Page 173: Sumário · 2 Sumário Aula 01 ..... 6

173

Page 174: Sumário · 2 Sumário Aula 01 ..... 6

174

Aula 10 Nas ultimas aulas vimos como podemos utilizar URL’s, Links e Forms com requisições

GET’s e POST’s, aprendemos também a trabalhar com estes valores em PHP.

Existe mais uma forma de interagirmos com nosso usuário e com o navegador do usuário, esta forma seria por meio de:

Cookies:

Nosso Servidor Web pode fazer uma requisição ao Navegador Web de nosso usuário para enviar de volta um Cookie.

Então, como você pode estar imaginando, Cookies serão acessados da mesma forma

que requisições GET e POST.

Lembre-se que com GET nos colocamos nas aulas anteriores um $_GET e quando formos lidar com POST colocamos $_POST, nós acessaremos variáveis Cookies da mesma forma.

Porém, diferente de URL’s, Links e Forms onde nós sabíamos que poderíamos usar

HTML para setar os valores, com cookies nós precisaremos aprender algo a mais, como setar um cookie.

A setagem de cookies será feita da seguinte forma: Setcookie( $name, $value, $expire); Está será nossa função cookie, primeiramente teremos as variáveis referentes ao

nome do cookie, o valor do cookie e em quanto tempo o cookie irá expirar.

Estas são as partes essenciais dos cookies, tais partes que são importantíssimas de você ter em mente.

Agora vamos utilizar uma

página em PHP onde poderemos criar nossa função cookie.

Você pode ver que

previamente criamos dois arquivos em PHP para você, cookies.php e cookies_read.php, ambos estão salvos em nossa pasta testephp. Primeiramente estaremos trabalhando com cookies.php como você pode ver.

Inicialmente, vamos digitar uma função cookie e logo em seguida analisa-la.

Como você pode notar,

Page 175: Sumário · 2 Sumário Aula 01 ..... 6

175

nós já aceleramos o processo e inserimos as tags iniciais do PHP para você.

Digite: setcookie(‘teste’, 45, time()+(60*60*24*7)); como na imagem abaixo.

Como você pode notar, nós setamos o nome do cookie como “teste”. Logo em seguida setamos seu valor para 45.

Page 176: Sumário · 2 Sumário Aula 01 ..... 6

176

E finalmente colocamos uma data de expiração de uma semana, deve estar um pouco

complicado de entender a expiração, não é? Vamos analisa-la com calma.

Page 177: Sumário · 2 Sumário Aula 01 ..... 6

177

Quando colocamos “time()” em nossa função, determinamos que daquele exato momento em diante, o tempo de expiração do cookie seria contado.

Logo em seguida colocamos uma fórmula matemática básica. Estamos multiplicando

60 segundos, por 60 minutos, por 24 horas, por 7 dias. Você já tem ideia do resultado que teremos? Exatamente, teremos um tempo de expiração de uma semana.

Para um momento agora e analise novamente toda a função para ter certeza de que

compreendeu seu funcionamento. Caso tentássemos exibir este nosso cookie em um navegador, não receberíamos nada

de volta, pois o que fizemos aqui foi apenas setar um cookie.

Para termos uma visualização melhor dos

cookies, na aula de hoje utilizaremos o Mozilla Firefox.

Podemos ver se nosso cookie foi setado ou não, para isso, deixe que nós exibamos o arquivo cookies.php no Firefox para você.

Nosso Firefox já está com a Barra de Menus

ativada, você viu como ativá-la no decorrer da aula. Como você pode perceber, não tivemos retorno nenhum, porém, nosso cookie foi

setado.

Page 178: Sumário · 2 Sumário Aula 01 ..... 6

178

Para visualiza-lo, clique em Firefox.

Posicione o mouse sobre Opções.

Page 179: Sumário · 2 Sumário Aula 01 ..... 6

179

Agora clique em Barra de menus.

Note que o visual do Firefox foi alterado.

Page 180: Sumário · 2 Sumário Aula 01 ..... 6

180

Clique em Ferramentas.

Clique no local indicado:

Page 181: Sumário · 2 Sumário Aula 01 ..... 6

181

Clique em Segurança.

Clique em Exibir cookies.

Page 182: Sumário · 2 Sumário Aula 01 ..... 6

182

Como você pode ver, nosso Cookie está listado, assim como seus dados logo abaixo.

Você pode ver seu Nome. Também pode visualizar seu valor. O endereço referente ao servidor, assim como seu caminho estão também visíveis. E por fim, a validade de seu cookie.

Agora vamos ver como podemos visualizar o valor deste cookie.

Feche todas as janelas relacionadas à exibição de cookies até que você tenha somente

a aba principal do Firefox sendo exibida assim como na imagem abaixo.

Page 183: Sumário · 2 Sumário Aula 01 ..... 6

183

Agora clique em Notepad++.

Clique agora em cookies_read.php

Page 184: Sumário · 2 Sumário Aula 01 ..... 6

184

Como você pode ver, temos previamente uma estrutura simples de HTML desenvolvida.

Clique aqui na parte interna da tag <body>

Deixe que nós coloquemos as tags iniciais do PHP para acelerar o processo.

Page 185: Sumário · 2 Sumário Aula 01 ..... 6

185

Agora digite $var1 = $_COOKIE[‘test’]; como na imagem abaixo e logo em seguida pressione Enter.

Como você pode perceber, acabamos de setar a variável global $_COOKIE. Digite echo $var1; para que nosso código fique similar ao código abaixo.

Page 186: Sumário · 2 Sumário Aula 01 ..... 6

186

Agora podemos verificar qual será o resultado desta página no navegador, vamos abrir previamente o arquivo cookies_read.php para você.

Como pode perceber, ele nos retornou o valor do cookie “teste” que seria igual a 45.

Outra ação que podemos tomar ao trabalharmos com cookies, é a de eliminarmos o

mesmo. Podemos fazer isso por setar o seu valor igual a nada ou setar sua data de expiração

para um momento do passado. Vamos tentar fazer isso agora. Clique em Notepad++.

Page 187: Sumário · 2 Sumário Aula 01 ..... 6

187

Dentro de nossa estrutura cookies_read.php, iremos adicionar um pouco de código e logo em seguida explica-lo passo a passo.

Como pode ver, setamos um cookie com valor igual a 0, ou nenhum, e colocamos sua

data de expiração para uma semana atrás, como você pode perceber pelo sinal negativo.

Isto fará com que nosso cookie seja setado como algo sem significado assim como dirá

que o mesmo já expirou. Vamos agora carregar está página novamente no navegador, mas deixe que nós

façamos isso para você. Clique em Atualizar.

Page 188: Sumário · 2 Sumário Aula 01 ..... 6

188

Ele nos retornou o valor de 45 porque primeiramente ele leu o cookie e nos retornou o echo de seu valor, apenas após isto ele setou o valor como 0 e como expirado.

Então vamos atualizar nossa página novamente, clique em Atualizar.

Agora ele nos retornou uma mensagem de erro, como que dizendo “Não, eu não

encontrei um cookie com este nome.” Porque nós o expiramos.

O usuário tem controle sobre os cookies, ele pode facilmente limpar a lista de cookies

deletando os mesmos. O usuário também possui autonomia para mudar os valores do cookie. Por isso é interessante remos cuidado ao chamarmos dados de cookies de volta, pois é

há o risco de buscarmos dados inválidos. Como você pode ver em nosso navegador, recebemos automaticamente um erro

quando o cookie foi modificado, e isto com certeza são algo que queremos evitar ao trabalharmos com cookies.

Devido a isso, seria uma ótima prática se nos acostumarmos a determinar em nossa

estrutura o seguinte.

Page 189: Sumário · 2 Sumário Aula 01 ..... 6

189

Primeiramente clique em Notepad++.

Agora vamos modificar o nosso código um pouco, preste atenção em como ele ficará a seguir.

O que determinamos aqui, primeiramente foi um valor padrão para a $var1, que seria

igual a 0 caso nenhum valor tenha sido setado.

Page 190: Sumário · 2 Sumário Aula 01 ..... 6

190

Em seguida, determinamos que se o cookie estiver setado, e apenas se estiver setado, utilizaremos a variável ($var1).

Agora vamos fazer um teste com esse cookie, clique no Firefox.

No Firefox, clique em Atualizar.

Page 191: Sumário · 2 Sumário Aula 01 ..... 6

191

Como você pode ver ele nos deu o retorno de 0.

Caso fossemos até nossa página cookies.php e voltássemos para nossa

cookies_read.php, ele nos daria o valor de 45. Vamos conferir na prática, mas deixe que nós executemos o arquivo cookies.php para

você. Agora clique em voltar para retornar a página cookies_read.php, e como já era de se

imaginar, recebemos o valor de 45 e imediatamente ele deletará o valor do cookie de acordo com o cookies_read.php.

Page 192: Sumário · 2 Sumário Aula 01 ..... 6

192

O que podemos aprender com cookies é que eles são de vital importância para colocar dados no browser de nosso usuário para que possamos ter acesso aos mesmos em outro momento, podemos retorna-los daqui a um mês, um ano, de acordo com nossa necessidade, se o cookie estiver lá, poderemos puxar de volta esta informação e saber algo referente a este usuário.

Mas também não podemos confiar que os cookies estarão lá, portanto é interessante

que chequemos se realmente o cookie está lá e só depois utiliza-lo. Agora que entendemos como cookies funcionam, entendemos seus pros e contras,

vimos que existem formas de perdermos e manipularmos dados em cookies vamos dar uma olhada em algo um pouco mais robusto.

Principalmente se estivermos trabalhando com aplicativos web, cookies talvez não seja

a melhor forma de utilização para nós. Na verdade, você irá achar interessante utilizar cookies juntamente com sessions.

Session

Session é um arquivo armazenado no servidor web. Dentro deste arquivo, você pode

armazenar qualquer informação que você desejar. Você pode colocar muito mais informação lá do que você pode colocar em um cookie,

e esta é uma das vantagens da utilização de sessions. A forma de descobrirmos qual arquivo pertence a qual usuário, é por meio dos

cookies. Para isso, setamos um session cookie especial no seu navegador, então procuramos naquele cookie o lugar onde o arquivo se encontra dentro de nosso servidor.

Logo em seguida podemos ver dentro daquele arquivo a informação armazenada na

session. A informação não estará disponível para visualização ou para edição, tudo que pode

ser feito, é a modificação do número de ID referente ao arquivo. O número ID será muito longo e complicado, para termos certeza de que não haverá

problemas entre outras sessions referentes a outros usuários. Então, para utilizarmos uma session, vamos ter de primeiramente, criar este arquivo e

setar o cookie na máquina do usuário ou, se já tivermos feito isso, vamos precisar encontrar aquele cookie e encontrar o arquivo correspondente na máquina.

Precisaremos fazer isso com algo chamado session_start, essa é uma função muito

simples que iremos lhe mostrar agora, mas antes disso precisamos mencionar algo muito importante referente à session_start.

A session_start deve acontecer no início de todo o seu código, isso é muito importante

que você sempre tenha em mente, antes de qualquer coisa, ao se trabalhar com session_start, ela deve ser a parte inicial de seu código.

Page 193: Sumário · 2 Sumário Aula 01 ..... 6

193

Antes que você acrescente qualquer HTML ou qualquer espaço em branco, você precisará colocar sua session_start.

Como você pode perceber, criamos previamente para você um arquivo chamado

sessions.php.

Dentro dele, criamos previamente para você uma estrutura em HTML básico.

Como foi comentado anteriormente, você deve determinar que o arquivo será uma

session logo no início do código. Iremos digitar as tags iniciais do PHP e a função session_start(); para você logo no

início do código, confira na imagem abaixo.

Page 194: Sumário · 2 Sumário Aula 01 ..... 6

194

Esse único comando irá dizer: “OK, PHP, vá até o navegador, pegue o ID desse session cookie, volte, encontre o arquivo e o abra para que possamos utiliza-lo. Caso você volte e não encontre arquivo algum, crie um novo.”

Então, a questão chave aqui seria toda a vez que utilizarmos session_start, ela deverá ser a primeira coisa a ser adicionada a nosso código.

Vamos agora tentar visualizar o resultado de nossa session em nosso navegador, mas

antes disso, salve seu arquivo. Isso na verdade não nos retornará nada, mas poderemos ter uma noção do que

aconteceu. Clique no

ícone do Firefox. Para que

possamos acelerar o processo, deixe que nós executemos o arquivo sessions.php no navegador para você.

Como

pode ver, não obtivemos retorno algum, porém,

Page 195: Sumário · 2 Sumário Aula 01 ..... 6

195

poderemos notar que a session foi criada.

Clique em Ferramentas.

Page 196: Sumário · 2 Sumário Aula 01 ..... 6

196

Agora clique em Propriedades da página.

Selecione a opção Segurança.

Page 197: Sumário · 2 Sumário Aula 01 ..... 6

197

Clique em Exibir cookies.

Agora você pode visualizar que criamos um novo cookie com nossa session, e este

cookie possui um conteúdo muito extenso, esse seria o ID que o cookie irá utilizar para encontrar o arquivo dentro de nosso servidor.

Page 198: Sumário · 2 Sumário Aula 01 ..... 6

198

Por questões de segurança, esta é uma boa técnica a ser utilizada, pois seria difícil encontrar um arquivo ou até mesmo de descobrir a que arquivo esse ID está se referindo.

Sabemos que até o momento, o conteúdo de nosso arquivo sessions.php está vazio, portanto, vamos acrescentar algo dentro do mesmo.

Feche todas as janelas referentes exibição de cookies até que você tenha apenas a aba principal do Firefox aberta.

Clique agora em Notepad++.

Nós podemos acrescentar coisas a este arquivo e da mesma forma puxarmos as

mesmas para fora por nos referirmos as sessions da mesma forma que nos referimos as Super Globals GET, POST e COOKIE.

Para isso, vamos digitar as tags iniciais do PHP. Agora digite $_SESSION[“name”] = “ivo”; assim como na imagem abaixo.

Page 199: Sumário · 2 Sumário Aula 01 ..... 6

199

Isso será colocado dentro do arquivo session. Vamos criar agora um novo bloco de PHP logo abaixo, mas deixe que nós criemos as

tags iniciais para você. Essas tags farão a leitura de nosso nome. Digite $name = $_SESSION[“name”]; assim como na imagem abaixo e pressione Enter.

Agora digite echo $name; assim como na imagem abaixo.

Page 200: Sumário · 2 Sumário Aula 01 ..... 6

200

Salve seu arquivo. Vamos tentar visualizar isso em nossa página. Clique no Firefox.

Agora clique em Atualizar.

Page 201: Sumário · 2 Sumário Aula 01 ..... 6

201

Está é forma como podemos setar valores em uma session e os puxar para fora novamente.

Agora você pode visualizar o poder das sessions, podemos estocar uma determinada

informação em nosso servidor e não na máquina do usuário. Se voltássemos e visualizássemos os cookies, nos veríamos apenas aquele mesmo

arquivo de ID, não veríamos nenhuma destas informações. Essas informações estão armazenadas apenas em nossa máquina, onde podemos ficar

tranquilos em saber que somos os únicos a terem acesso às mesmas. Em geral isto seria tudo ao se trabalhar com sessions, falamos muito a respeito dos

benefícios de se trabalhar com elas, mas existe um lado negativo. Nós acabamos de criar um arquivo em nosso servidor, correto? Esse arquivo é um arquivo muito pequeno, pois a única informação contida nele é um

nome. Mas com o tempo, esse arquivo pode vir a se tornar maior, poderemos acrescentar

dados muito maiores dentro do mesmo, e podemos acabar com centenas ou milhares de arquivos.

Então devemos sempre ter em mente que seria uma boa prática limpar estes arquivos de tempo em tempo.

Estes seriam os pros e contras da utilização de sessions. Chegamos ao fim da décima aula, não deixe de efetuar os exercícios propostos na

apostila.

Page 202: Sumário · 2 Sumário Aula 01 ..... 6

202

Exercícios 1. Como é feita a setagem de Cookies? _______________________________________________________________________

______________________________________________________________________________________________________________________

2. Quais são as 3 partes principais de um Cookie? _______________________________________________________________________

______________________________________________________________________________________________________________________

3. Podemos contar que o cookie foi carregado mesmo não tendo sido exibida mensagem alguma no navegador?

_____________________________________________________________________________________________________________________________________________________________________________________________

4. Como podemos excluir um cookie? _______________________________________________________________________

______________________________________________________________________________________________________________________

5. Qual a importância dos cookies? _______________________________________________________________________

______________________________________________________________________________________________________________________

6. Podemos confiar que os cookies sempre estarão à disposição com o mesmo valor que setamos?

_____________________________________________________________________________________________________________________________________________________________________________________________

7. Onde fica armazenado o session? _______________________________________________________________________

______________________________________________________________________________________________________________________

8. O limite de informação a ser colocado em um cookie e um session é o mesmo? _______________________________________________________________________

______________________________________________________________________________________________________________________

9. O usuário poderá editar o conteúdo de um session? _______________________________________________________________________

______________________________________________________________________________________________________________________

10. O que o usuário poderá modificar no session? _______________________________________________________________________

______________________________________________________________________________________________________________________

11. Qual é a primeira coisa que deve ser colocada em nosso arquivo PHP quando estivermos trabalhando com sessions?

_____________________________________________________________________________________________________________________________________________________________________________________________

12. Qual a desvantagem do uso de sessions? _______________________________________________________________________

_____________________________________________________________________________________________________________________

Page 203: Sumário · 2 Sumário Aula 01 ..... 6

203

Page 204: Sumário · 2 Sumário Aula 01 ..... 6

204

Page 205: Sumário · 2 Sumário Aula 01 ..... 6

205

Aula 11 Um dos recursos mais úteis em PHP é a habilidade de incluir outros arquivos em PHP

dentro de nosso PHP atual.

Pode não ser imediatamente óbvio o porquê de isto ser algo bom, mas isso irá nos ajudar a não nos repetirmos, o que é sempre uma boa prática ao desenvolver código.

Esse é parte do motivo de criarmos funções, para que não tenhamos de nos repetir, e

assim possamos chamar aqueles pedaços de código da maneira mais apropriada.

E caso tenhamos de mudar a forma de como o código funciona, teríamos de mudar apenas em um lugar.

A mesma coisa pode acontecer com outros arquivos. Estes arquivos podem conter

nossas funções, para que possamos simplesmente trazer nossas funções cada vez que desejarmos declara-las novamente ou podem incluir HTML, basicamente qualquer coisa que desejarmos incluir em nosso arquivo.

Vamos ver então como isso irá funcionar. Você pode notar que previamente criamos dois arquivos, include.php e

included_func.php.

A forma mais simples de demonstrarmos a você como utilizar includes e quão útil eles serão, será por utilizarmos primeiramente nosso segundo arquivo.

Page 206: Sumário · 2 Sumário Aula 01 ..... 6

206

Clique em included_func.php.

Este arquivo se refere às funções que iremos incluir a nossa página em PHP.

Por agora, vamos fazer algo muito simples, portanto apenas digite Teste assim como na imagem abaixo.

Page 207: Sumário · 2 Sumário Aula 01 ..... 6

207

Salve seu arquivo. Acabamos de salvar o arquivo apenas com o conteúdo “Teste” dentro de si, correto? Vamos voltar agora a nosso include.php

Clique em include.php

Agora vamos inserir um pouco de PHP no interior da tag <body> clicando no local indicado abaixo.

Page 208: Sumário · 2 Sumário Aula 01 ..... 6

208

Deixe que nós coloquemos as tags iniciais do PHP para você. Agora apenas digite include(“included_func.php”); como na imagem abaixo.

Salve seu arquivo. Com este único comando nós agora incluímos o conteúdo da página

included_func.php para dentro de nossas include.php. Simples não acha? Vamos ver se isso irá funcionar. Abra o Firefox.

Page 209: Sumário · 2 Sumário Aula 01 ..... 6

209

Agora deixe que nós executemos a página include.php para você. Você pode perceber que ele realmente inclui a palavra “Teste” a nossa página

include.php.

Vamos voltar agora a estrutura de nossa included_func.php.

Clique em Notepad++.

Page 210: Sumário · 2 Sumário Aula 01 ..... 6

210

Agora clique em included_func.php.

Você pode perceber que estamos lidando com um arquivo em PHP que possui apenas texto dentro si e não há problema algum nisso, poderia ser da mesma forma HTML, poderíamos estar carregando a informação referente ao cabeçalho, por exemplo, ou poderíamos estar carregando uma porção de código em PHP.

Algo

importante a ser lembrado, você deverá utilizar as tags principais do PHP sempre que trabalhar com código em PHP, mesmo se em nosso arquivo includes.php nós já tivermos iniciado as tags iniciais.

Page 211: Sumário · 2 Sumário Aula 01 ..... 6

211

O arquivo não irá deduzir que o código será PHP, assim como qualquer outro arquivo em PHP, você deverá sempre especificar as tags iniciais para que ele seja reconhecido como código em PHP.

Vamos então definir uma função dentro de nosso included_func.php iremos inserir as tags iniciais do PHP para você.

Digite exatamente o código mostrado abaixo.

Salve o documento. Vamos agora voltar para a nossa include.php . Clique em include.php.

Page 212: Sumário · 2 Sumário Aula 01 ..... 6

212

Vamos inserir um novo bloco de PHP, mas deixe que nós façamos isso para você.

Digite agora hello(“ Everyone”); assim como na imagem abaixo.

Salve o documento.

Agora como você pode imaginar, nossa função foi incluída e podemos chama-la. Vamos ver o nosso resultado no navegador. Clique no Firefox.

Page 213: Sumário · 2 Sumário Aula 01 ..... 6

213

Agora clique em Atualizar.

Como você pode ver, o resultado foi o esperado. Ele nos retornou a frase “Hello

Everyone!”.

Você pode perceber a utilidade de se utilizar os includes, pois você pode ter um único arquivo ao desenvolver sua aplicação que irá incluir todas as suas funções ou todas as funções que são relativas a um determinado tipo.

Page 214: Sumário · 2 Sumário Aula 01 ..... 6

214

Talvez funções relativas à como preencher um formulário, elas podem ser criadas em um arquivo ou vários arquivos e arquivos include podem incluir outros arquivos.

Essa é a forma como poderemos estruturar nosso código que não tenhamos de editar

a função “Hello Everyone” em todo o momento que ela ocorrer, nós podemos apenas incluí-la uma vez.

Há uma variação em includes que é interessante comentarmos por um momento.

Essa seria require. E require faz basicamente a mesma coisa que include faz, mas ele

nos retorna um erro caso o arquivo não consiga ser carregado por alguma razão, se não for encontrado, então ele nos retornar um erro fatal e não irá continuar com o restante do programa.

Include irá tentar carregar o arquivo, mas não irá gerar um erro.

Então iremos utilizar o require quando tivermos funções que definitivamente

estivermos requisitando.

Existe ainda uma última variação referente a include e require, está seria require_once.

require_once é referente a toda a função que não desejamos incluir mais de uma vez

em nosso código, toda a função que deverá ser incluída uma única vez, ao utilizar o require_once, toda a ocorrência da função que for encontrada depois da primeira, será ignorada.

Páginas Dinâmicas: Uma das principais vantagens de trabalhar com páginas dinâmicas, é poder armazenar

os conteúdos em bases de dados. Desta forma, podemos organizá-los, atualizá-los e procurá-los de uma maneira muito mais simples.

A linguagem PHP oferece interfaces para o acesso a maioria das bases de dados

comerciais e por ODBC (Open Data Base Connectivity) a todas as bases de dados possíveis em sistemas Microsoft, a partir das quais poderemos editar o conteúdo do nosso site com extrema facilidade.

Esta interação realiza-se, por um lado, a partir das funções que o PHP nos oferece para

cada tipo de base de dados e, por outro estabelecendo um diálogo a partir de um idioma universal: SQL (Structured Query Language) o qual é comum a todas as bases de dados.

Esta linguagem torna-se muito potente e fácil de aprender.

Nas aulas anteriores você viu como deixar páginas WEB mais interativas e dinâmicas

utilizando PHP.

Hoje você aprenderá um pouco a respeito da integração de PHP com Banco de Dados MySQL.

Nosso foco na aula de hoje será a criação de uma conexão MySQL via PHP.

Page 215: Sumário · 2 Sumário Aula 01 ..... 6

215

Para criarmos uma conexão MySQL, precisaremos primeiramente de 3 informações: Endereço de nosso servidor, nome de usuário e senha do mesmo.

Você deve ter isso sempre em mente, você deverá ter conhecimento do endereço do

servidor MySQL, seu nome de usuário no banco e a senha deste usuário no banco.

Assim como você se conecta a um e-mail onde você determina seu endereço, por exemplo, www.gmail.com e logo em seguida insere seu usuário e senha, em um banco de dados o processo não é diferente.

Como iremos criar essa conexão com o PHP?

Como você pode ver, já criamos previamente para você um arquivo chamado

conexao.php, este será o arquivo onde iremos criar nossa conexão com o banco de dados.

Antes de qualquer coisa, deveremos criar as tags iniciais do PHP dentro de nosso

arquivo.

Deixe que nós criemos as tags iniciais do PHP para você, elas são de vital importância para que a conexão seja reconhecida e nosso código em PHP seja assimilado. Tudo que estiver fora destas tags, será ignorado e executado como um texto.

Page 216: Sumário · 2 Sumário Aula 01 ..... 6

216

Agora o que devemos fazer é criar uma variável dentro das tags, mas antes disso, tempos de aprender algo muito importante.

Iremos utilizar uma função chamada mysql_connect, seria interessante verificarmos a

fundo seu significado para termos uma noção melhor, para isso clique em Firefox.

Page 217: Sumário · 2 Sumário Aula 01 ..... 6

217

Agora clique na Barra de Navegação.

Digite http://php.net/mysql_connect e pressione Enter para acessar a página exibida abaixo.

Page 218: Sumário · 2 Sumário Aula 01 ..... 6

218

Como você pode ver, ela abre uma conexão com o servidor MySQL.

Para sua utilização, precisaremos de como já foi comentado, três elementos principais: Endereço do servidor, em formato de string, isto é, estando entre aspas duplas. Nome de usuário do servidor, também em formato de string. E a senha do usuário, também estando em formato de string. Com estes três elementos principais, você já estará apto a efetuar uma conexão com o

servidor MySQL.

Page 219: Sumário · 2 Sumário Aula 01 ..... 6

219

Vamos voltar agora a nosso arquivo conexao.php. Clique em Notepad++.

Agora estando de volta a estrutura de nossa conexao.php, vamos criar uma variável utilizando a função mysql_connect.

Page 220: Sumário · 2 Sumário Aula 01 ..... 6

220

Digite $conexao = mysql_connect("localhost", "root", "") assim como na imagem abaixo.

Como você pode ver, inserimos em nossa função, os parâmetros referentes a nosso banco de dados.

Já que

estamos utilizando o servidor web em nossa máquina local, seu endereço será “localhost”.

Por padrão o

MySQL cria um usuário chamado root, portanto determinamos seu nome como root.

Logo em seguida deixamos um campo em branco, pois não há senha para o usuário

root. Salve seu arquivo.

A princípio, esta simples linha de código, fará com que nos conectemos com o servidor

MySQL.

Page 221: Sumário · 2 Sumário Aula 01 ..... 6

221

Vamos visualizar o resultado de nosso arquivo no navegador. Clique em Firefox.

Deixe que nós executemos o arquivo conexao.php para você.

Como você pode notar, ele não nos retornou nada. Isso porque não determinamos nenhum echo em nosso PHP para que ele nos exiba alguma mensagem.

Page 222: Sumário · 2 Sumário Aula 01 ..... 6

222

Vamos fazer isso agora, clique em Notepad++.

Agora clique no fim da variável $conexao, no local indicado abaixo.

Page 223: Sumário · 2 Sumário Aula 01 ..... 6

223

Pressione a tecla Enter e digite echo "Conectado com sucesso ao MySQL!"; para que seu código fique similar a imagem abaixo.

Esse echo exibirá uma mensagem de conexão bem sucedida.

Mas e se por algum motivo não conseguirmos nos conectar? Nesse caso, existe mais um pouco de código a ser acrescentado.

Clique no final da variável $conexao.

Page 224: Sumário · 2 Sumário Aula 01 ..... 6

224

Pressione a tecla Backspace. Digite or die ("Falha ao conectar."); para que seu código fique similar ao da imagem

abaixo.

O parâmetro or die será responsável por exibir uma mensagem de erro caso a conexão

seja mal sucedida. Salve seu arquivo. Agora clique em Firefox.

Page 225: Sumário · 2 Sumário Aula 01 ..... 6

225

Atualize sua página.

Como você pode ver, nossa conexão foi bem sucedida, pois todos os nossos parâmetros estão de acordo.

Vamos agora verificar o que aconteceria caso ocorresse algum erro de parâmetro. Clique em Notepad++.

Page 226: Sumário · 2 Sumário Aula 01 ..... 6

226

Agora vamos modificar um pouco código para você.

Perceba que agora nosso endereço do servidor está como localhostS, isto não está correto, concorda?

Salve seu arquivo. Vamos verificar se nosso navegador irá nos indicar o erro da forma como esperamos. Clique em Firefox.

Page 227: Sumário · 2 Sumário Aula 01 ..... 6

227

Agora clique em Atualizar.

Como você pode ver o resultado não só foi um erro, como nos exibiu o que definimos

em nosso código PHP “Falha ao conectar.”.

Essa é a forma mais simples de efetuarmos uma conexão com o servidor MySQL via

PHP. Chegamos ao fim da décima primeira aula, não deixe de efetuar os exercícios

propostos na apostila.

Page 228: Sumário · 2 Sumário Aula 01 ..... 6

228

Exercícios: 1. Qual é um dos motivos de criarmos funções? _______________________________________________________________________

______________________________________________________________________________________________________________________

2. Podemos incluir o conteúdo de um arquivo dentro de outro utilizando PHP? _______________________________________________________________________

______________________________________________________________________________________________________________________

3. Cite uma utilidade no uso de includes: _______________________________________________________________________

______________________________________________________________________________________________________________________

4. Qual a diferença de include e require? _______________________________________________________________________

______________________________________________________________________________________________________________________

5. O que faz o require_once? _______________________________________________________________________

______________________________________________________________________________________________________________________

6. Cite uma das principais vantagens ao se trabalhar com páginas dinâmicas: _______________________________________________________________________

______________________________________________________________________________________________________________________

7. É possível interagir com uma base de dados via PHP? _______________________________________________________________________

______________________________________________________________________________________________________________________

8. Que três informações são necessárias para criarmos uma conexão com o banco de dados?

_____________________________________________________________________________________________________________________________________________________________________________________________

9. Que função é responsável pela conexão com o banco de dados? _______________________________________________________________________

______________________________________________________________________________________________________________________

10. Se nosso servidor estiver em nossa máquina local, qual será seu endereço? _______________________________________________________________________

______________________________________________________________________________________________________________________

11. O parâmetro or die é responsável pelo que? _______________________________________________________________________

______________________________________________________________________________________________________________________

Page 229: Sumário · 2 Sumário Aula 01 ..... 6

229

Page 230: Sumário · 2 Sumário Aula 01 ..... 6

230

Page 231: Sumário · 2 Sumário Aula 01 ..... 6

231

Aula 12 Falaremos agora um pouco mais a respeito da interação do PHP com Banco de Dados. Iniciaremos a criação de um sistema de cadastro que armazenará informações no

banco de dados. Primeiramente devemos criar um novo banco, para isso vamos utilizar o phpMyAdmin. phpMyAdmin é um programa de computador desenvolvido em PHP para

administração do MySQL pela Internet. A partir deste sistema é possível criar e remover bases de dados, criar, remover e

alterar tabelas, inserir, remover e editar campos, executar códigos SQL e manipular campos chaves.

O phpMyAdmin é muito utilizado por programadores web que muitas vezes

necessitam manipular bases de dados. Normalmente, o phpMyAdmin é tratado como uma ferramenta obrigatória em quase

todas as hospedagens da web, além de pacotes off-line, como o WAMPServer, XAMPP, EasyPHP e PHP Triad.

Vamos acessa-lo então, para isso devemos clicar com o botão direito no ícone do

EasyPHP localizado na barra de tarefas, mas deixe que nós façamos isso para você.

Page 232: Sumário · 2 Sumário Aula 01 ..... 6

232

Selecione a opção Local Web.

Clique no local indicado.

Page 233: Sumário · 2 Sumário Aula 01 ..... 6

233

Na linha de módulos, clique na primeira opção de Open.

Você pode visualizar a página principal do PhpMyAdmin, o que faremos primeiramente

será criar um novo banco de dados. Clique em Base de Dados.

Page 234: Sumário · 2 Sumário Aula 01 ..... 6

234

Digite teste, este será o nome de nossa base de dados.

Agora clique em Criar.

Como você pode ver, foi criada nossa base de dados “teste”, ela não possui nenhuma tabela ou informação, iremos acrescentar algumas delas agora.

Page 235: Sumário · 2 Sumário Aula 01 ..... 6

235

Clique em teste, depois clique no local indicado.

Digite usuarios, este será o nome de nossa primeira tabela.

Page 236: Sumário · 2 Sumário Aula 01 ..... 6

236

Clique agora no local indicado abaixo.

Digite 4 Agora clique em Executar.

Nesse momento, teremos de definir algumas informações para a tabela usuários. Como você pode ver, temos 4 campos a serem preenchidos, vamos preencher o

primeiro agora.

Page 237: Sumário · 2 Sumário Aula 01 ..... 6

237

Clique no local indicado abaixo.

Digite ID Como seu tipo já está definido como INT, vamos deixa-lo como está.

Agora clique em tamanho.

Page 238: Sumário · 2 Sumário Aula 01 ..... 6

238

Digite 16, será o número máximo de caracteres permitidos. Agora clique no local indicado abaixo para que possamos verificar o resto das

informações.

Page 239: Sumário · 2 Sumário Aula 01 ..... 6

239

Clique em Índice.

Selecione a opção PRIMARY.

Page 240: Sumário · 2 Sumário Aula 01 ..... 6

240

Clique agora na caixa indicada abaixo.

Essa caixa referente à ação de Auto Increment, isso fara com que nosso próximo

cadastro sempre tenha seu ID automático. Clique no local indicado abaixo para voltar à parte inicial da página.

Page 241: Sumário · 2 Sumário Aula 01 ..... 6

241

Vamos acrescentar as informações referentes à segunda coluna. Clique em Nome.

Digite agora nome Clique agora em Tipo.

Page 242: Sumário · 2 Sumário Aula 01 ..... 6

242

Selecione a opção VARCHAR. Valores no campo VARCHAR são strings de tamanho variável.

Clique agora em Tamanho.

Page 243: Sumário · 2 Sumário Aula 01 ..... 6

243

Digite 50 Agora vamos acrescentar as informações referentes à terceira coluna. Clique em Nome.

Digite login Clique agora em Tipo.

Page 244: Sumário · 2 Sumário Aula 01 ..... 6

244

Selecione a opção VARCHAR.

Clique agora em Tamanho.

Page 245: Sumário · 2 Sumário Aula 01 ..... 6

245

Digite 20 Agora vamos acrescentar as informações referentes à quarta coluna. Clique agora em Nome.

Digite senha Agora clique em Tipo.

Page 246: Sumário · 2 Sumário Aula 01 ..... 6

246

Selecione a opção VARCHAR.

Clique agora em Tamanho.

Page 247: Sumário · 2 Sumário Aula 01 ..... 6

247

Digite 12 Pronto, acrescentamos todas as informações necessárias referentes à nossa tabela

usuários. Clique em Guarda.

Vamos agora acrescentar um usuário, primeiramente via PhpMyAdmin. Para isso, clique em SQL.

Page 248: Sumário · 2 Sumário Aula 01 ..... 6

248

Esta é a tela de edição do SQL:

Digite agora insert into usuarios (ID, nome, login, senha) e pressione a tecla Enter.

Page 249: Sumário · 2 Sumário Aula 01 ..... 6

249

Agora digite values (‘’, "Pedro", "pedro", 123); Clique agora em Executar.

Você pode verificar que nossa linha foi inserida, agora vamos visualiza-la. Clique em Usuários.

Page 250: Sumário · 2 Sumário Aula 01 ..... 6

250

Como você pode ver, já temos nosso primeiro usuário cadastrado no banco de dados.

Mas você deve estar se perguntando, como eu posso criar esse cadastro utilizando o

PHP que já estudei? Você pode perceber que criamos previamente para você dois arquivos em PHP,

cadastro.php e process_cadastro.php. Ambos estão armazenados em nossa phpteste.

Page 251: Sumário · 2 Sumário Aula 01 ..... 6

251

Você pode ver que em nossa cadastro.php temos uma estrutura básica em HTML. Iremos acrescentar um formulário simples e iremos lhe explicar como ele foi

desenvolvido, mas você já está familiarizado com este procedimento não é?

Como pode ver, criamos um formulário que será enviado a página process_cadastro.php utilizando o método post.

Temos aqui as linhas de código referentes à criação de um Nome, Login e Senha.

Page 252: Sumário · 2 Sumário Aula 01 ..... 6

252

E finalmente a linha de código referente a seu Envio.

Pare um minuto e analise o código com calma, caso você não se lembre muito bem de como funciona sua estrutura.

Salve seu arquivo. O que precisaremos fazer agora e editar nossa process_cadastro.php Para isso, clique no local indicado abaixo.

Page 253: Sumário · 2 Sumário Aula 01 ..... 6

253

Como você pode ver, dentro de nossa process_cadastro.php temos uma estrutura básica em HTML e logo dentro da tag <body> temos as tag inicias do PHP.

Clique no

local indicado abaixo.

Criaremos agora uma porção de código referente à conexão de banco de dados, seleção de banco e acrescento de informações.

Primeiro criaremos a conexão com o banco de dados, criaremos também um or die para caso o banco não seja encontrado.

Digite: $conexao = mysql_connect("localhost", "root", "") or die ("Falha ao conectar."); E pressione Enter.

Page 254: Sumário · 2 Sumário Aula 01 ..... 6

254

Agora pressione Enter novamente para termos um código mais legível.

Vamos acrescentar agora o código responsável pela seleção de nosso banco “teste”, também colocaremos um or die para caso o PHP não encontre nosso banco.

Digite mysql_select_db("teste", $conexao) or die ("Falha ao conectar no banco."); e

pressione Enter.

Pressione Enter novamente para termos um código mais legível. Vamos criar agora três variáveis, uma para Nome, uma para Login e uma para Senha.

Confira na imagem abaixo.

Page 255: Sumário · 2 Sumário Aula 01 ..... 6

255

Pressione Enter mais uma vez para termos um código mais legível. Vamos acrescentar agora as linhas de código responsáveis pela adição destas

informações no banco de dados.

Digite $inserir = mysql_query("insert into usuarios (ID, nome, login, senha) e pressione Enter.

Para deixarmos o código mais legível, vamos pressionar TAB algumas vezes para você. Digite values (“”, '".$username."', '".$login."', '".$password."')", $conexao); e pressione

Enter.

Page 256: Sumário · 2 Sumário Aula 01 ..... 6

256

Agora vamos criar um echo referente ao que acontecerá se todos dados forem acrescentados com sucesso.

Digite echo "Cadastro efetuado com sucesso!";

Salve o seu arquivo. Agora vamos verificar o resultado de nosso código no navegador. Clique em Firefox.

Page 257: Sumário · 2 Sumário Aula 01 ..... 6

257

Deixe que nós executemos nossa cadastro.php para você. Como pode ver, temos nosso formulário de cadastro funcionando corretamente.

Vamos acrescentar algumas informações nele. Clique em Nome:

Page 258: Sumário · 2 Sumário Aula 01 ..... 6

258

Digite agora Ivo da Silva

Agora clique em Login:

Digite ivo

Agora clique em Senha:.

Page 259: Sumário · 2 Sumário Aula 01 ..... 6

259

Escreve ivo123 Agora clique em Enviar.

Como pode ver, recebemos a mensagem de que nosso cadastro foi efetuado com sucesso, mas para termos certeza, vamos verificar em nosso PhpMyAdmin.

Page 260: Sumário · 2 Sumário Aula 01 ..... 6

260

Para isso deveremos clicar com o botão direito em EasyPHP, mas deixe que nós façamos isso para você.

Posicione o cursor do mouse sobre a opção Configuração.

Selecione PhpMyAdmin.

Page 261: Sumário · 2 Sumário Aula 01 ..... 6

261

Clique no local indicado abaixo.

Clique em Open.

Page 262: Sumário · 2 Sumário Aula 01 ..... 6

262

Clique em teste.

Clique na tabela usuarios.

Page 263: Sumário · 2 Sumário Aula 01 ..... 6

263

Como você pode ver, o usuário Ivo da Silva foi cadastrado com sucesso.

Esse tipo de formulário é muito útil se estivermos trabalhando com uma aplicação que

limite acesso para cada um dos usuários, podemos usá-lo para criar diversos usuários e depois verificarmos suas informações pelo PhpMyAdmin.

Não deixe de efetuar os exercícios propostos em sua apostila. Até mais.

Page 264: Sumário · 2 Sumário Aula 01 ..... 6

264

Exercícios: 1. O que é phpMyAdmin? _______________________________________________________________________

______________________________________________________________________________________________________________________

2. O phpMyAdmin é utilizado normalmente por quem? _______________________________________________________________________

______________________________________________________________________________________________________________________

3. Qual o caminho para acessarmos o phpMyAdmin no EasyPHP? _______________________________________________________________________

______________________________________________________________________________________________________________________

4. Qual a função da caixa Auto Increment? _______________________________________________________________________

______________________________________________________________________________________________________________________

5. O que são os valores no campo VARCHAR? _______________________________________________________________________

______________________________________________________________________________________________________________________

6. Através de qual aba do phpMyAdmin podemos acrescentar dado? _______________________________________________________________________

______________________________________________________________________________________________________________________

7. Que tipo de página criamos para interagir com o banco de dados? _______________________________________________________________________

______________________________________________________________________________________________________________________

8. Qual o objetivo da função $conexao = mysql_connect("localhost", "root", "")? _______________________________________________________________________

______________________________________________________________________________________________________________________

9. Qual o objetivo da linha de código or die ("Falha ao conectar.");? _______________________________________________________________________

______________________________________________________________________________________________________________________

10. Qual a função da linha de código $inserir = mysql_query("insert into usuarios (ID, nome, login, senha)?

_____________________________________________________________________________________________________________________________________________________________________________________________

11. Para que tenhamos certeza de que o cadastro foi efetuado com sucesso, o que devemos fazer?

_____________________________________________________________________________________________________________________________________________________________________________________________

Page 265: Sumário · 2 Sumário Aula 01 ..... 6

265

Page 266: Sumário · 2 Sumário Aula 01 ..... 6

266

Page 267: Sumário · 2 Sumário Aula 01 ..... 6

267

Aula 13

Nas aulas anteriores você aprendeu a inserir dados no banco de dados por meio do phpMyAdmin.

Também vimos um pouco sobre como inserir dados utilizando funções em PHP. Mas vamos imaginar que já cadastramos diversos usuários, e agora precisamos listar

todos eles em uma página. O PHP nos permite fazer esse tipo de ação, vamos aprender agora como desenvolver

esse tipo de código na prática. Como você pode notar, criamos previamente para você um arquivo chamado lista.php,

ele está salvo em nossa phpteste.

Como de costume, iremos inicialmente acrescentar as tags iniciais do PHP. Digite <?php e pressione Enter. Pressione novamente Enter.

Page 268: Sumário · 2 Sumário Aula 01 ..... 6

268

Agora digite ?> e verifique se seu código está igual ao da imagem abaixo.

Clique no interior das tags iniciais do PHP. Pronto, as tags iniciais do PHP estão adicionadas, o que devemos fazer primeiramente

agora, é criar uma conexão com o banco de dados, sempre criando um or die em caso de nossa conexão falhar.

Digite $conexao = mysql_connect("localhost", "root", "") or die ("Falha ao conectar.");

e pressione a tecla Enter.

Page 269: Sumário · 2 Sumário Aula 01 ..... 6

269

Pressione Enter mais uma vez para temos um código mais legível.

Agora devemos selecionar nosso banco “teste”, sempre adicionando um or die em

caso de nossa conexão falhar. Digite: mysql_select_db("teste", $conexao) or die ("Falha ao conectar no banco.");

Page 270: Sumário · 2 Sumário Aula 01 ..... 6

270

Pressione Enter mais uma vez para temos um código mais legível. Agora vamos criar uma variável que será responsável por efetuar uma consulta ao

banco de dados. Digite $query = mysql_query("Select * from usuarios", $conexao);

Você pode notar que temos uma função no interior de nossa variável chamada

mysql_query. Vamos descobrir o que isso significa? Clique no Firefox.

Page 271: Sumário · 2 Sumário Aula 01 ..... 6

271

Clique na Barra de Navegação.

Digite: http://php.net/function.mysql-query.php e pressione Enter.

Page 272: Sumário · 2 Sumário Aula 01 ..... 6

272

Agora estamos visualizando o manual do PHP e a descrição da função mysql_query. Como você pode notar ela envia uma consulta para o banco de dados atualmente ativo

no servidor. Agora que entendemos como essa função funciona, podemos voltar ao nosso código. Clique em Notepad++.

Como você pode ver, estamos solicitando que a função mysql_query selecione todos os dados da tabela usuarios.

Page 273: Sumário · 2 Sumário Aula 01 ..... 6

273

Pressione Enter agora para deixarmos nosso código mais legível. Agora vamos criar uma variável responsável por perguntar o número de linhas que

existem em nossa consulta anterior. Digite: $nLinhas = mysql_num_rows($query);

Vamos verificar a descrição completa dessa função no manual do PHP. Clique em Firefox.

Page 274: Sumário · 2 Sumário Aula 01 ..... 6

274

Vamos modificar o endereço de mysql_query para mysql_num_rows, você certamente está lembrado desse procedimento que foi efetuado em aula.

Como você pode notar, essa função é responsável por obter o número de linhas de um conjunto de resultados (Get number of rows in result).

Page 275: Sumário · 2 Sumário Aula 01 ..... 6

275

Agora que entendemos o funcionamento da função mysql_num_rows, vamos voltar a nosso código.

Clique em Notepad++.

Pressione Enter para deixarmos nosso código mais legível. Nesse momento, devemos criar um for referente à leitura de linhas de nossa consulta. Digite for ($i=0; $i < $nLinhas ; $i++) e pressione Enter.

O que estamos dizendo aqui é que a variável $i é igual a 0, e enquanto ele for menor

que a variável nLinhas, teremos um incremento de mais um.

Page 276: Sumário · 2 Sumário Aula 01 ..... 6

276

Digite { e pressione Enter. Pressione Enter mais uma vez para termos um código mais legível. Agora devemos pressionar a tecla TAB algumas vezes para termos um código mais

legível, mas deixe que nós façamos isso para você. Vamos criar agora as linhas de código responsáveis pela exibição de nossa consulta.

Digite agora: echo "<b>" . mysql_result($query, $i, "nome"). "</b>" .":

</br>&nbsp&nbsp&nbsp&nbsp&nbsp" .

Como na imagem abaixo.

Page 277: Sumário · 2 Sumário Aula 01 ..... 6

277

Você pode notar que temos uma função chamada mysql_result dentro dessa linha de código.

Vamos verificar seu significado com a ajuda do manual do PHP. Vamos modificar o endereço de mysql_ num_rows para mysql_result, você

certamente está lembrado desse procedimento que foi efetuado em aula. Como você pode ver, essa função é responsável por retornar os dados de seu

resultado.

Page 278: Sumário · 2 Sumário Aula 01 ..... 6

278

Muito bem, agora vamos voltar a nosso código. Clique em Notepad++.

Como você pode perceber, estamos pedindo o resultado de “nome”.

Page 279: Sumário · 2 Sumário Aula 01 ..... 6

279

Também estamos dizendo que os “nomes” serão exibidos em negrito, apenas para terem um destaque a mais.

Os caracteres &nbsp que você digitou diversas vezes, são responsáveis por criar um

espaço que não é assimilado apenas por digitarmos a tecla de espaço. Fazendo isso estamos dizendo que os nomes ficarão alinhados de certa forma e os

dados referentes a cada usuário de outra.

Page 280: Sumário · 2 Sumário Aula 01 ..... 6

280

Pressione agora a tecla Enter para termos um código mais legível. Agora devemos pressionar a tecla TAB diversas vezes, mas deixe que nós façamos isso

para você. Agora digite "\tId: " . mysql_result($query, $i, "ID") . e pressione a tecla Enter.

O que fizemos aqui foi basicamente à mesma coisa que fizemos anteriormente,

pedindo agora o resultado referente ao ID.

Page 281: Sumário · 2 Sumário Aula 01 ..... 6

281

A única diferença foram os caracteres \t que colocamos primeiramente, pois eles são responsáveis por criar uma simples tabulação, deixando assim nosso resultado mais organizado.

Digite agora: "\tLogin: " . mysql_result($query, $i, "login") . e pressione a tecla Enter.

O que fizemos aqui foi basicamente a mesma coisa que fizemos anteriormente,

pedindo agora o resultado referente ao login.

Page 282: Sumário · 2 Sumário Aula 01 ..... 6

282

Digite agora: "\tSenha: " . mysql_result($query, $i, "senha") . "</br>"; E pressione Enter. O que fizemos

aqui foi basicamente a mesma coisa que fizemos anteriormente, pedindo agora o resultado referente a senha.

Digite agora: }

E pressione

Enter. Terminamos

nosso código referente a listagem de usuários, o que faremos agora é verificar se tudo construído de um forma correta e organizada por meio de nosso navegador.

Clique no Firefox.

Page 283: Sumário · 2 Sumário Aula 01 ..... 6

283

Digite: http://localhost/phpteste/lista.php Na Barra de Navegação e pressione Enter. Como você pode ver, a listagem de usuários foi efetuada com sucesso.

Isso é muito útil caso seja necessário emitir um relatório de todos os usuários, seus nomes, senhas, talvez endereços dependendo do que foi determinado no banco e no código em PHP.

Chegamos ao fim da décima terceira aula. Não esqueça de fazer os exercícios

propostos em sua apostila.

Page 284: Sumário · 2 Sumário Aula 01 ..... 6

284

Exercícios

1. Devemos criar uma conexão em nossa página PHP para que possamos listar os dados?

_______________________________________________________________________________________________________________________________________________________________________________________

2. Devemos selecionar o banco de dados utilizado para o cadastro dos usuários

ou criar um novo banco? _______________________________________________________________________

________________________________________________________________________________________________________________

3. O que a função mysql_query faz? _______________________________________________________________________

________________________________________________________________________________________________________________

4. O que a função mysql_num_rows faz? _______________________________________________________________________

________________________________________________________________________________________________________________

5. O que a função mysql_result faz? _______________________________________________________________________

________________________________________________________________________________________________________________

Page 285: Sumário · 2 Sumário Aula 01 ..... 6

285

Page 286: Sumário · 2 Sumário Aula 01 ..... 6

286

Page 287: Sumário · 2 Sumário Aula 01 ..... 6

287

Aula 14

Porque utilizar PHP?

Veremos agora diversos aspectos que nos darão certeza do porque não só podemos mas devemos utilizar o PHP e seus recursos no Desenvolvimento Web.

Identidade O PHP é, assim como Java e .NET, uma linguagem de programação e uma plataforma

global. Como linguagem de programação, PHP tem uma sintaxe bastante parecida com C,

Shell, Perl e Java.

Com PHP é possível desenvolver:

•Aplicações Web dinâmicas (websites, intranets, extranets, etc);

•Aplicações desktop (PHP-GTK e PHP4Delphi); •Rich Clients (PHP-XUL); •Web Services (SOAP, XML-RPC, REST); •Scripts de linha de comando; •Tarefas de segundo plano.

Cerca de 1000 engenheiros desenvolvem o PHP. O PHP é Software Livre, distribuído sob uma licença na qual os usuários não são

obrigados a publicar seu código. A portabilidade é uma das maiores vantagens do PHP, possibilitando sua instalação em

vários Sistemas Operacionais como: Windows, Linux, Unix, IBM iSeries, SGI IRIX, RISC OS, Netware Novell, Mac OS X e AmigaOS.

Estatísticas de Uso Segundo a NetCraft, o PHP é utilizado em um a cada três sites na Internet. Ou seja,

mais de 20 milhões de domínios. 35% da Internet roda PHP.

Porque utilizar o PHP na sua empresa? Simplicidade: O PHP é uma linguagem com um modelo de desenvolvimento muito simples. O objetivo inicial do PHP era tornar possível um desenvolvimento rápido sem um

treinamento preliminar.

Page 288: Sumário · 2 Sumário Aula 01 ..... 6

288

Esse objetivo foi alcançado, fazendo com que a maioria das empresas de hospedagem ofereça PHP nos seus servidores.

Adaptabilidade O PHP usa duas sintaxes. Uma é procedural e a outra é orientada a objetos. A procedural é utilizada por webmasters que trabalham na interface com o usuário. Já a sintaxe Orientada a Objetos é propositalmente similar ao Java e C#, com o objetivo

de reduzir os custos com treinamento e encorajar a migração para o PHP. Portabilidade Disponível para a maioria dos sistemas operacionais, o PHP funciona da mesma

maneira que a Máquina Virtual do Java (JVM). Após desenvolver a aplicação, ela irá funcionar imediatamente, sem a necessidade de

recompilar, independente de qual sistema operacional está sendo utilizado. Durabilidade A durabilidade de uma tecnologia depende principalmente da quantidade de usuários. O PHP é utilizado por mais de 4.500.000 desenvolvedores no mundo, fazendo com que

sua comunidade seja extremamente forte e atuante. Performance O PHP tem uma grande performance e estabilidade. A combinação Linux/Apache/PHP

é muito forte. Retorno do investimento Os pontos citados anteriormente resultam em um rápido retorno do investimento. Isso é possível graças à ausência de custos com licenças, pequeno custo com

treinamentos, entre outros. Arquitetura técnica Na maioria das vezes o PHP é utilizado com: •Um Servidor Web: Apache ou Microsoft IIS; •Um SGDB (banco de dados): MySQL, PostgreSQL, Oracle, SQL Server, etc.

A maioria das plataformas utilizam Linux, Apache, MySQL e PHP (Conhecido como

LAMP). Mecanismo interno

O núcleo interno do PHP 5 é o Zend Engine 2. O PHP é feito com uma arquitetura

modular, e utiliza os mesmos conceitos do Java e .NET.

Um pré-compilador compila o código e envia para a execução em tempo real.

Page 289: Sumário · 2 Sumário Aula 01 ..... 6

289

Essa arquitetura permite que engenheiros utilizem ferramentas de otimização (opcode cache).

Uma plataforma que resolve problemas de integração.

Muitos conectores Cerca de 40% dos custos de desenvolvimento estão na integração de aplicações ou

fontes de dados. Para reduzir esses custos, o PHP pode conectar diretamente com a maioria dos bancos de dados, sistemas de pagamentos online e protocolos.

O Ecossistema PHP Após 10 anos de vida, o PHP construiu um grande ecossistema. Algumas ferramentas

tornam o desenvolvimento mais fácil e rápido. A comunidade de Software Livre vem produzindo aplicações empresariais há vários

anos. Essas aplicações ajudam empresas a encontrar suas necessidades. Como a plataforma PHP atualmente domina a Internet é muito importante ter acesso

a um grande número de recursos, empresas e desenvolvedores. No Brasil a comunidade do PHP é muito grande. O PHP Brasil Comunidades é

composto por vários grupos regionais. Em vários anos o PHP teve poucos avisos de segurança. Utilizado com o Linux e

Apache, o resultado é a plataforma mais segura para a Internet. Como seu código fonte está disponível e está constantemente sendo melhorado pela

comunidade, é a melhor tecnologia para proteger informações importantes e confidenciais. Não é à toa que empresas consagradas como Yahoo, Facebook, Wikipédia que

recebem milhões de acessos diários escolheram o PHP!

Page 290: Sumário · 2 Sumário Aula 01 ..... 6

290

Exercícios 1. O PHP é Software Livre ou Privado? _______________________________________________________________________

______________________________________________________________________________________________________________________

2. De um motivo pelo qual seria interessante utilizarmos PHP em nossa empresa. _______________________________________________________________________

______________________________________________________________________________________________________________________

3. Quais são as duas sintaxes utilizadas pelo PHP? _______________________________________________________________________

______________________________________________________________________________________________________________________

4. Existem comunidades de PHP no Brasil? _______________________________________________________________________

______________________________________________________________________________________________________________________

5. Cite algumas empresas que fazem uso constante de PHP. _______________________________________________________________________

______________________________________________________________________________________________________________________

Page 291: Sumário · 2 Sumário Aula 01 ..... 6

291