Baixe o app para aproveitar ainda mais
Prévia do material em texto
Matheus Campos Fernandes Linguagens de servidor: uma abordagem prática com PHP Dados Internacionais de Catalogação na Publicação (CIP) (Simone M. P. Vieira - CRB 8a/4771) Fernandes, Matheus Campos Linguagens de servidor : uma abordagem prática com PHP / Matheus Campos Fernandes. – São Paulo : Editora Senac São Paulo, 2021. (Série Universitária) Bibliografia. e-ISBN 978-65-5536-616-7 (ePub/2021) e-ISBN 978-65-5536-617-4 (PDF/2021) 1. Linguagem de programação 2. PHP (linguagem interpretada) 3. Aplicações – Desenvolvimento 4. Aplicativos dinâmicos 5. Sistemas para internet I. Título. II. Série. 21-1323t CDD – 005.13 BISAC COM051010 Índice para catálogo sistemático 1. Linguagem de programação 005.13 M at er ia l p ar a us o ex cl us ivo d e al un o m at ric ul ad o em c ur so d e Ed uc aç ão a D is tâ nc ia d a Re de S en ac E AD , d a di sc ip lin a co rre sp on de nt e. P ro ib id a a re pr od uç ão e o c om pa rti lh am en to d ig ita l, s ob a s pe na s da L ei . © E di to ra S en ac S ão P au lo . M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. LINGUAGENS DE SERVIDOR: UMA ABORDAGEM PRÁTICA COM PHP Matheus Campos Fernandes Administração Regional do Senac no Estado de São Paulo Presidente do Conselho Regional Abram Szajman Diretor do Departamento Regional Luiz Francisco de A. Salgado Superintendente Universitário e de Desenvolvimento Luiz Carlos Dourado Editora Senac São Paulo Conselho Editorial Luiz Francisco de A. Salgado Luiz Carlos Dourado Darcio Sayad Maia Lucila Mara Sbrana Sciotti Luís Américo Tousi Botelho Gerente/Publisher Luís Américo Tousi Botelho (luis.tbotelho@sp.senac.br) Coordenação Editorial/Prospecção Dolores Crisci Manzano (dolores.cmanzano@sp.senac.br) Administrativo grupoedsadministrativo@sp.senac.br Comercial comercial@editorasenacsp.com.br Acompanhamento Pedagógico Otacília da Paz Pereira Designer Educacional Diogo Maxwell Santos Felizardo Revisão Técnica Luiz Fernando Albertin Bono Milan Preparação e Revisão de Texto Camila Lins Projeto Gráfico Alexandre Lemes da Silva Emília Corrêa Abreu Capa Antonio Carlos De Angelis Editoração Eletrônica Sidney Foot Gomes Ilustrações Sidney Foot Gomes Imagens Adobe Stock Photos E-pub Ricardo Diana Proibida a reprodução sem autorização expressa. Todos os direitos desta edição reservados à Editora Senac São Paulo Rua 24 de Maio, 208 – 3o andar Centro – CEP 01041-000 – São Paulo – SP Caixa Postal 1120 – CEP 01032-970 – São Paulo – SP Tel. (11) 2187-4450 – Fax (11) 2187-4486 E-mail: editora@sp.senac.br Home page: http://www.livrariasenac.com.br © Editora Senac São Paulo, 2021 M at er ia l p ar a us o ex cl us ivo d e al un o m at ric ul ad o em c ur so d e Ed uc aç ão a D is tâ nc ia d a Re de S en ac E AD , d a di sc ip lin a co rre sp on de nt e. P ro ib id a a re pr od uç ão e o c om pa rti lh am en to d ig ita l, s ob a s pe na s da L ei . © E di to ra S en ac S ão P au lo . http://www.livrariasenac.com.br mailto:editora@sp.senac.br mailto:grupoedsadministrativo@sp.senac.br mailto:dolores.cmanzano@sp.senac.br mailto:luis.tbotelho@sp.senac.br M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. Sumário Capítulo 1 Aplicativos dinâmicos para web, 7 1 Aplicativo estático, 8 2 Aplicativo dinâmico, 13 3 Comparação entre as abordagens, 16 4 História do PHP e evolução, 16 Considerações finais, 18 Referências, 19 Capítulo 2 O PHP como linguagem para aplicativos dinâmicos, 21 1 Principais recursos, 22 2 Preparando o ambiente, 23 3 Apresentação da IDE, 24 4 Primeira aplicação (“Hello World”), 25 5 A arquitetura cliente-servidor, 28 Considerações finais, 30 Referências, 31 Capítulo 3 Elementos básicos do PHP – parte 1, 33 1 Variáveis e tipos de dados, 34 2 Strings, 36 3 Include e require, 39 4 Estruturas de condição e laços – parte 1 (switch case, for, if, else, while), 41 5 Requisição GET/POST, 45 Considerações finais, 49 Referências, 50 Capítulo 4 Elementos básicos do PHP – parte 2, 51 1 Arrays, 52 2 Estruturas de condição e laços – parte 2 (foreach), 55 Considerações finais, 61 Referências, 62 Capítulo 5 Funções em PHP e controle de sessões, 63 1 Funções, 64 2 Entendendo as sessões, 72 3 Funções para controle das sessões, 73 4 Cookies, 75 Considerações finais, 78 Referências, 78 Capítulo 6 Acesso a banco de dados, 79 1 Conexão de banco com MySQLi, 80 2 Conexão de banco com PDO, 84 Considerações finais, 90 Referências, 91 Capítulo 7 Manipulação de arquivos, 93 1 Lendo e manipulando diretórios, 94 2 Criando um arquivo com fopen(), 95 3 Excluindo um arquivo, 98 4 Movendo um arquivo, 99 5 Lendo conteúdo de um arquivo, 99 6 Fazendo upload de um arquivo e salvando no servidor, 101 Considerações finais, 103 Referências, 104 Capítulo 8 Orientação a objetos, 105 1 Introdução à orientação a objetos, 106 2 Try/catch, 111 3 Trabalhando com processamento de imagens, 114 Considerações finais, 118 Referências, 119 Sobre o autor, 121 M at er ia l p ar a us o ex cl us ivo d e al un o m at ric ul ad o em c ur so d e Ed uc aç ão a D is tâ nc ia d a Re de S en ac E AD , d a di sc ip lin a co rre sp on de nt e. P ro ib id a a re pr od uç ão e o c om pa rti lh am en to d ig ita l, s ob a s pe na s da L ei . © E di to ra S en ac S ão P au lo . 7 M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. Capítulo 1 Aplicativos dinâmicos para web Sites, websites, sítios da internet, portais on-line, aplicações web, aplicativos para a web, sistemas web. Todos esses termos foram usa- dos nos últimos anos para descrever o mesmo conceito. A verdade é que, atualmente, os navegadores de internet se tornaram a principal forma de consumir software. Para um usuário médio, tudo parece fun- cionar como mágica, pois o entendimento geral do funcionamento de aplicações web é bastante nebuloso. Este capítulo pretende desmisti- ficar isso. Aqui, daremos início aos nossos estudos, a começar pela diferença entre as duas abordagens possíveis para o desenvolvimento de solu- ções web: as abordagens estática e dinâmica. Na sequência, iremos apresentar a linguagem que usaremos para explorar e praticar o desen- volvimento de aplicações dinâmicas: a linguagem PHP. 8 Linguagens de servidor: uma abordagem prática com PHP Ma te ria l p ar a us o ex cl us ivo d e al un o m at ric ul ad o em c ur so d e Ed uc aç ão a D is tâ nc ia d a Re de S en ac E AD , d a di sc ip lin a co rre sp on de nt e. P ro ib id a a re pr od uç ão e o c om pa rti lh am en to d ig ita l, s ob a s pe na s da L ei . © E di to ra S en ac S ão P au lo . 1 Aplicativo estático A web, como conhecemos, surgiu como uma maneira de interligar documentos, especificamente documentos armazenados na forma de hipertexto. Um hipertexto nada maisé do que um texto que contém referências para outros documentos. Essas referências normalmente acontecem no formato de links, ou imagens, ou vídeos, etc. A forma padrão que se assumiu na web para armazenar esses hiper- textos foi a hypertext markup language (HTML). Um documento HTML é composto pelas chamadas tags, delimitadas entre <>. Um exemplo de um documento HTML é dado a seguir: <html> <head> <title>Meu Documento</title> </head> <body> <h1>Cabeçalho principal do meu documento</h1> <h2>Cabeçalho secundário do meu documento</h2> <p> Meu parágrafo contendo um texto extremamente grande. Para mais informações visite <a href="outro_documento.html">este outro documento</a> </p> <img src="cachorro.jpg" alt="Cachorro" /> </body> </html> No exemplo, o trecho <title>Meu Documento</title> delimita uma ocorrência da tag title, que indica qual o título do documento. Ela come- ça em <title> e termina em </title>, com o conteúdo sendo o texto “Meu Documento”. 9 Aplicativos dinâmicos para web M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. A tag <a href=”outro_documento.html”>este outro documento</a> tem o que chamamos de atributo. O atributo em questão é o href, e seu valor é outro_documento.html. Esta é uma tag que o texto “este outro documento” deve apontar para o documento outro_documento.html, ca- racterizando um hipertexto. Usualmente, esta tag é tratada como um link, que, ao receber um clique, levará o usuário para outro documento. A tag <img src=”cachorro.jpg” alt=”Cachorro” /> é uma tag que não pode ter conteúdo. Portanto, colocamos o fechamento dentro da pró- pria tag de abertura, identificado pelo />. Ali temos dois atributos: src, indicando qual arquivo esta tag representa, e alt, indicando a descrição textual para essa imagem. Se pareceu muita informação, fique tranquilo! Não iremos nos prender, no momento, à estrutura de um HTML. A especificação dos elementos HTML é extensa e será abordada de forma gradual ao longo deste livro. PARA SABER MAIS Caso você tenha interesse em se familiarizar com os elementos do HTML, uma lista didática pode ser acessada na referência das tags HTML no portal da W3Schools (W3SCHOOLS, [s. d.]). Como vimos, além de apontar para um outro documento HTML e para um arquivo de imagem, nosso HTML pode apontar para outros tipos de arquivos de texto, assim como vídeos, áudios, binários e qual- quer outro que você possa imaginar. Em especial, temos dois outros arquivos muito importantes que veremos mais adiante: os arquivos de Cascading Style Sheets (CSS) e JavaScript (JS). Toda a parte de desenhar de forma gráfica esse HTML (processo chamado de render) é responsabilidade única do navegador (brow- ser). A partir dessas informações textuais, o navegador interpreta o 10 Linguagens de servidor: uma abordagem prática com PHP Ma te ria l p ar a us o ex cl us ivo d e al un o m at ric ul ad o em c ur so d e Ed uc aç ão a D is tâ nc ia d a Re de S en ac E AD , d a di sc ip lin a co rre sp on de nt e. P ro ib id a a re pr od uç ão e o c om pa rti lh am en to d ig ita l, s ob a s pe na s da L ei . © E di to ra S en ac S ão P au lo . documento e o renderiza em tela. Mas como o nosso navegador tem acesso a um documento HTML? Ao digitarmos um endereço (URL – uniform resource locator), sinali- zamos para o navegador que queremos “abrir uma página na internet”. Esse processo é apenas, a princípio, a transferência (download) de um único arquivo HTML, que pode (ou não) indicar arquivos adicionais que precisam ser transferidos, gerando uma sequência de transferências. Todos esses arquivos, HTML ou de outro tipo, são transferidos usan- do-se o protocolo de transferência de hipertextos (HTTP – hypertext transfer protocol). Esse protocolo indica como o navegador deve pedir os documentos ao endereço e foi projetado de forma a facilitar a troca de hipertextos, como o próprio nome indica. NA PRÁTICA Atualmente, é muito comum usarmos HTTPS no lugar de HTTP. A letra “S” significa secure (seguro). De forma simples, é uma versão que inte- gra criptografia de ponta a ponta ao HTTP. Dessa forma, caso um tercei- ro intercepte a requisição ou a resposta, o conteúdo dela estará “tran- cado”, podendo apenas ser aberto pelo emissor e/ou pelo destinatário. Digamos, por exemplo, que digitamos o endereço “example.com/ sobre” na barra de endereço do nosso navegador. Hoje, por conveniên- cia, o navegador preenche o restante do endereço com “http://”, o que resulta em “http://example.com/sobre”, sinalizando que provavelmen- te queremos transferir um documento de hipertexto desse endereço. Então, começa uma espécie de conversa entre o nosso navegador e o endereço que digitamos. Essa conversa acontece no formato requisi- ção e resposta. O nosso navegador (chamado de front-end) envia para o endereço fornecido uma requisição, como se fosse uma espécie de mensagem http://example.com/sobre https://example.com 11 Aplicativos dinâmicos para web M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. ou pedido, dizendo: “Olá, example! Eu gostaria de acessar o arquivo ‘so- bre’. Poderia me informar qual o conteúdo dele?”. Figura 1 – Exemplo de uma requisição HTTP Navegador Requisição http://example.com Do lado que recebe a requisição, temos também um computador (chamado de back-end). Esse computador tem a tarefa de responder corretamente à nossa requisição. Existem algumas formas diferentes de criar uma resposta, como veremos. Em resumo, uma requisição HTTP não é nada mais do que um com- putador requisitando um documento para outro computador. Para nós, usuários, tudo isso é feito de forma transparente ao digitarmos o ende- reço na barrinha do nosso navegador e apertarmos a tecla “Enter”. No computador do back-end, há sempre um programa em execu- ção, que costumamos chamar de servidor HTTP. Em princípio, a úni- ca responsabilidade desse programa é ficar aguardando requisições e respondê-las adequadamente. A forma mais básica de fazer isso é simplesmente olhar em um diretório (pasta) com vários arquivos e devolver o arquivo adequado. Aplicações assim são chamadas de apli- cações estáticas. Por exemplo, digamos que o servidor de “example.com” esteja confi- gurado dessa forma. Quando ele recebe uma requisição para “example. com/produtos.html”, basta o servidor olhar no diretório que foi configu- rado, buscar pelo arquivo “produtos.html” e devolvê-lo. Nesse caso, a pessoa que desenvolve o site tem apenas a responsabilidade de escre- ver um arquivo HTML para cada página e colocá-lo no diretório adequa- do, e o servidor se encarrega de deixá-las corretamente “no ar”. https://example.com 12 Linguagens de servidor: uma abordagem prática com PHP Ma te ria l p ar a us o ex cl us ivo d e al un o m at ric ul ad o em c ur so d e Ed uc aç ão a D is tâ nc ia d a Re de S en ac E AD , d a di sc ip lin a co rre sp on de nt e. P ro ib id a a re pr od uç ão e o c om pa rti lh am en to d ig ita l, s ob a s pe na s da L ei . © E di to ra S en ac S ão P au lo . NA PRÁTICA Dentre os softwares de servidor HTTP mais usados atualmente, pode- mos citar o Apache e o Nginx. No mundo Windows, também temos o IIS. Figura 2 – Exemplo de aplicaçãoestática Navegador http://example.com/produtos.html http://example.com Pasta com arquivos Conteúdo do arquivo Repare que, nesta abordagem, o website é nada mais do que uma interface para interagir com uma pasta em outro computador. Assim, se quisermos que alguns dos nossos arquivos fiquem acessíveis de qualquer lugar, basta colocá-los em um desses servidores e acessá-los simplesmente navegando até o endereço correspondente. Um caso especial é pensado para quando a requisição não pede ne- nhum arquivo em particular, como na requisição “example.com/”. Nesse caso, há a convenção de termos um arquivo chamado “index.html”, que corresponde a essa “requisição vazia”. O arquivo recebe o nome de index (índice) pois era comum que fosse um documento que mostrasse um ín- dice de todos os arquivos acessíveis, assim como um índice de um livro. A imagem a seguir mostra um diagrama exemplificando como fica- riam nossos endereços diante de determinada disposição de arquivos no servidor. Naturalmente, configurações adicionais podem ser realiza- das no servidor para omitir a extensão “.html”, tornando os endereços mais parecidos com aqueles com que estamos acostumados (“http:// example.com/sobre”, por exemplo). https://example.com/sobre https://example.com 13 Aplicativos dinâmicos para web M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. Figura 3 – Exemplo da estrutura de uma aplicação estática index.html Arquivos no servidor sobre.html index.html produto1.html produto2.html ... http://example.com/ http://example.com/sobre.html http://example.com/produtos http://example.com/produtos/produto1.html http://example.com/produtos/produto2.html ... / produtos/ URLs correspondentes 2 Aplicativo dinâmico Há uma limitação na abordagem anterior. No nosso exemplo, tenta- mos montar uma página de e-commerce para vender produtos on-line. Como programadores, teríamos que escrever um HTML para a página ini- cial, um para cada página “fixa” (como o “sobre”) e um para cada produto. Para adicionar um produto novo, teríamos que criar um HTML novo para esse produto e atualizar a página principal para listá-lo também. Se houvesse uma seção de produtos relacionados, a cada novo produto teríamos que revisar todos os outros para checar se esse novo produto não se encaixa ali. Alterações em produtos – como mudar preço ou título ou mesmo marcar um item como fora de estoque – implicariam alterações em todas as páginas em que aquele produto aparece, seja na página do próprio produto, seja na página inicial ou nas seções de produtos relacionados de outros produtos. Qualquer alteração no layout da página, por menor que fosse, teria que ser feita em todos os HTMLs 14 Linguagens de servidor: uma abordagem prática com PHP Ma te ria l p ar a us o ex cl us ivo d e al un o m at ric ul ad o em c ur so d e Ed uc aç ão a D is tâ nc ia d a Re de S en ac E AD , d a di sc ip lin a co rre sp on de nt e. P ro ib id a a re pr od uç ão e o c om pa rti lh am en to d ig ita l, s ob a s pe na s da L ei . © E di to ra S en ac S ão P au lo . existentes. Realizar promoções no site seria uma enorme dor de cabe- ça, pois teríamos que atualizar o layout para incluir os banners corretos e modificar os produtos para refletir o preço novo, além de termos que reverter tudo quando a promoção terminasse. E o mais importante de tudo: uma página de busca, por exemplo, não poderia existir, pois seria impossível criarmos um HTML para cada combinação de busca exis- tente. Que trabalho, não é mesmo? Felizmente, existe uma abordagem que resolve todos esses proble- mas. Nós simplesmente deixamos o nosso servidor “mais inteligente”, tornando-o capaz de gerar esses HTMLs sob demanda. Para isso, é ne- cessário que o servidor tenha acesso a instruções sobre como mon- tar esses HTMLs de forma automática. Uma sequência de instruções, como você certamente sabe, é um algoritmo, que pode ser escrito em uma linguagem de programação. IMPORTANTE Em termos simples, usamos uma linguagem de programação para ex- plicar ao nosso servidor como montar o HTML de resposta para cada requisição. Assim, podemos expressar a nossa página de produtos de forma genérica, algo no seguinte sentido, em pseudocódigo: <h1>TÍTULO DO PRODUTO</h1> <img src="FOTO DO PRODUTO" /> SE O PRODUTO ESTIVER EM ESTOQUE: <h2>R$ PREÇO DO PRODUTO</h2> CASO CONTRARIO <h2>O produto não está em estoque</h2> <p>DESCRIÇÃO DO PRODUTO</p> 15 Aplicativos dinâmicos para web M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. Quando o servidor receber a requisição para mostrar a página do Produto 2, por exemplo, ele simplesmente seguirá as instruções apre- sentadas para montar o HTML na hora. Em praticamente todos os ca- sos, as informações sobre os produtos ficam armazenadas em alguma forma de banco de dados, que o servidor acessa para preencher as la- cunas do HTML. Figura 4 – Exemplo de uma requisição em uma aplicação dinâmica http://example.com/produto/2 Navegador http://example.com Programa escrito pelo desenvolvedor Conteúdo gerado pelo programa Note que, naturalmente, podemos misturar as duas abordagens. Isso, inclusive, é extremamente comum e acontece em quase todos os casos. Embora muitas vezes faça sentido o HTML ser dinâmico, ima- gens e outros arquivos são quase sempre estáticos, e podemos ter até HTMLs inteiramente estáticos, como uma página de “sobre” que con- tém apenas texto. Os servidores em geral já são preparados para lidar com esse tipo de situação. A grande maioria das linguagens de programação, para não dizer praticamente todas, possui alguma forma de programar uma aplicação web dinâmica, como Java, C#, JavaScript, Go, Python, Haskell, Ruby, etc. Qualquer linguagem que o leitor possa vir a imaginar provavelmen- te já foi usada comercialmente para o desenvolvimento de sites em al- gum projeto. Cada linguagem, naturalmente, apresenta suas vantagens e desvantagens. Ao longo deste livro, usaremos a linguagem de pro- gramação PHP para escrever os programas que serão executados no nosso servidor, a qual será apresentada ao final deste capítulo. http://example.com/produto/2 16 Linguagens de servidor: uma abordagem prática com PHP Ma te ria l p ar a us o ex cl us ivo d e al un o m at ric ul ad o em c ur so d e Ed uc aç ão a D is tâ nc ia d a Re de S en ac E AD , d a di sc ip lin a co rre sp on de nt e. P ro ib id a a re pr od uç ão e o c om pa rti lh am en to d ig ita l, s ob a s pe na s da L ei . © E di to ra S en ac S ão P au lo . 3 Comparação entre as abordagens Como pudemos ver, em geral, a abordagem dinâmica é mais pode- rosa e robusta se comparada à abordagem estática. Mas nem sempre é fácil enxergar de maneira simples os motivos disso. Por isso, apresen- tamos um resumo com as diferenças-chave entre as duas abordagens: Quadro 1 – Comparação entre as abordagens estática e dinâmica SITES ESTÁTICOS SITES DINÂMICOS Não precisam de uma linguagem de programação Dependem de uma linguagem de programação Respondem às requisições com arquivos pré-armazenados Respondem às requisições com arquivos gerados em tempo real Não conseguem acessar bancos de dados Costumam buscar informações em um banco de dados para gerar as páginas Número fixo de páginas, determinado pela quantidade de arquivos no servidor Númeropotencialmente infinito de páginas Todos os visitantes do site terão acesso à mesma versão de determinada página Podem fornecer uma versão diferente da página para cada situação Não é possível reutilizar trechos de HTML (por exemplo, para compartilhar cabeçalhos, menus e rodapés) Podemos dividir os trechos de HTML como bem entendermos. Já que as páginas serão geradas, basta escrever instruções para incluir um trecho de HTML aqui ou ali 4 História do PHP e evolução PHP é um software gratuito e de código aberto usado principalmente para o desenvolvimento de aplicações web. Entre 1994 e 1995, Rasmus Lerdorf criou e disponibilizou a primeira versão do que ele chamou de personal home page tools (PHP-tools, ou ferramentas de página prin- cipal pessoal, em tradução livre). Aos poucos, a linguagem foi se tor- nando popular, ganhando novas funcionalidades e se transformando na linguagem que hoje está em sua sétima versão e ainda continua com 17 Aplicativos dinâmicos para web M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. uma comunidade ativa. Com o tempo, a sigla foi ressignificada para se tornar o acrônimo recursivo “PHP: Hypertext Preprocessor”. Hoje, PHP é a linguagem responsável por aproximadamente 4 de cada 5 websites (W3TECHS, [2020b]). A linguagem PHP é a base do CMS (content management system, ou sistema de gerenciamento de conteúdo) mais usado no mundo: o WordPress. Segundo o W3Techs ([2020a]), 38,1% de todos os sites do mundo usam o WordPress. Considerando apenas os sites que usam CMS, 63,5% usam o WordPress, com o segundo colocado (Shopify) ten- do apenas 4,6%. A principal vantagem da linguagem PHP, que leva à sua adoção tão ampla, é ter sido criada especialmente para o desenvolvimento de apli- cações web. Ou seja, a linguagem não tem a pretensão de ser uma lin- guagem de programação de propósito geral e foca em prover a expe- riência mais simples possível para criar um site. Assim, é muito fácil e direto obter um site simples, bastando gerar um arquivo com a extensão “.php” para cada página. Esse arquivo tem uma sintaxe parecida com o exemplo dado anteriormente (pseudocódigo no tópico “Aplicativo dinâ- mico”), pois um arquivo PHP consiste em basicamente HTML com “en- xertos” de programação. A sintaxe específica da linguagem será abor- dada em profundidade ao longo do livro. Embora tenha surgido como uma linguagem bastante simples, o PHP evoluiu para adotar o paradigma orientado a objetos e tem mos- trado sinais de adoção do paradigma funcional, permitindo a criação de arquiteturas de software cada vez mais complexas. Em especial, houve um salto notável de desempenho entre as versões 5.x e 7.x (a versão 6 do PHP nunca foi lançada oficialmente). A adoção cada vez maior da linguagem também se deve ao surgimento de frameworks como CakePHP, CodeIgniter e Laravel, que tornaram bem mais fácil o desen- volvimento de sistemas web robustos. 18 Linguagens de servidor: uma abordagem prática com PHP Ma te ria l p ar a us o ex cl us ivo d e al un o m at ric ul ad o em c ur so d e Ed uc aç ão a D is tâ nc ia d a Re de S en ac E AD , d a di sc ip lin a co rre sp on de nt e. P ro ib id a a re pr od uç ão e o c om pa rti lh am en to d ig ita l, s ob a s pe na s da L ei . © E di to ra S en ac S ão P au lo . PARA SABER MAIS Mais informações sobre a história do PHP podem ser encontradas na página comemorativa dos 25 anos da linguagem, no site da Jet Brains (JET BRAINS, [2020]). Neste livro, não focaremos em um framework ou CMS específico. Aqui, o intuito é aprender os fundamentos da programação de servido- res em geral, e para isso utilizaremos a linguagem PHP de forma “pura”, como ferramenta. A ideia é que os assuntos abordados possam ser facilmente transportados para qualquer linguagem de programação. Evidentemente, para tanto, será necessário aprender também os fun- damentos da linguagem PHP, quase como uma consequência. Então, caso você tenha interesse em continuar os estudos de PHP, este livro também proverá bagagem suficiente para prepará-lo para a busca de mais informações sobre os frameworks de preferência, seja em docu- mentações, seja em blogs, tutoriais na internet ou mesmo outros livros. Considerações finais Este capítulo apresentou uma visão geral de como uma aplicação web funciona. Aprendemos como um documento é representado na web e como um navegador obtém esse documento ao se comunicar com um servidor. Vimos que uma possível abordagem para o servidor responder a uma requisição é simplesmente através de uma estrutura de pastas contendo arquivos, nas quais o servidor busca o arquivo que correspon- de à requisição feita. Notamos que essa abordagem, embora simples, é limitada. Concluímos que, para resolver essa questão, teríamos que instruir o 19 Aplicativos dinâmicos para web M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. nosso servidor sobre a maneira de montar uma resposta, e para isso temos que fazer uso de alguma linguagem de programação. Por fim, apresentamos a linguagem que usaremos ao longo do curso: o PHP, responsável pela maior parte das aplicações web da atualidade. Referências JET BRAINS. 25 years of PHP History. Jet Brains, [2020]. Disponível em: https:// www.jetbrains.com/lp/php-25/. Acesso em: 18 ago. 2020. W3SCHOOLS. HTML Element Reference. W3Schools, [2020]. Disponível em: https://www.w3schools.com/TAGS/default.ASP. Acesso em: 18 ago. 2020. W3TECHS. Usage statistics of content management systems. W3Techs, [2020a]. Disponível em: https://w3techs.com/technologies/overview/content_ management. Acesso em: 18 ago. 2020. W3TECHS. Usage statistics of server-side programming languages for web- sites. W3Techs, [2020b]. Disponível em: https://w3techs.com/technologies/ overview/programming_language. Acesso em: 18 ago. 2020. https://w3techs.com/technologies https://w3techs.com/technologies/overview/content https://www.w3schools.com/TAGS/default.ASP www.jetbrains.com/lp/php-25 21 M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. Capítulo 2 O PHP como linguagem para aplicativos dinâmicos No capítulo anterior, aprendemos como funcionam servidores, apli- cações estáticas e dinâmicas. Também vimos que uma das linguagens mais utilizadas no mercado para aplicações web dinâmicas é o PHP. Neste capítulo, aprenderemos a configurar e executar nosso próprio servidor, no conforto de nosso computador pessoal, juntamente com um banco de dados apropriado e com o interpretador da linguagem PHP. Revisitaremos alguns conceitos do capítulo anterior, mas aplica- dos ao ambiente prático em questão. Por fim, e mais importante de tudo, daremos vida ao nosso primeiro website dinâmico, o famoso “Olá mundo”! 22 Linguagens de servidor: uma abordagem prática com PHP Ma te ria l p ar a us o ex cl us ivo d e al un o m at ric ul ad o em c ur so d e Ed uc aç ão a D is tâ nc ia d a Re de S en ac E AD , d a di sc ip lin a co rre sp on de nt e. P ro ib id a a re pr od uç ão e o c om pa rti lh am en to d ig ita l, s ob a s pe na s da L ei . © E di to ra S en ac S ão P au lo . 1 Principais recursos Vamosconhecer as ferramentas que farão parte do nosso ambiente de desenvolvimento. Como comentamos no último capítulo, usaremos a linguagem de programação PHP. Aqui usaremos a versão 7.2 do PHP, mas se versões 7.x mais atuais estiverem disponíveis, não deve haver muita diferença entre elas. Como também discutimos no último capítulo, precisaremos de um software chamado servidor para receber as requisições e executar nos- so código PHP. O servidor que usaremos neste curso será o Apache, que é um servidor web livre e está entre os mais utilizados na atualidade. Uma das funções principais que nosso website precisará realizar será consultar um banco de dados. Por exemplo, se quisermos mos- trar os resultados de uma busca por produtos, precisaremos acessar o banco de dados de produtos e encontrar todos os produtos cujo nome corresponda ao termo digitado pelo usuário. Neste livro, utilizaremos o MySQL como nosso sistema gerenciador de banco de dados. Além disso, existe uma ferramenta chamada phpMyAdmin, que é simplesmente uma interface gráfica do MySQL construída com PHP. Usaremos essa interface para interagir com nosso banco de dados, tan- to de forma gráfica quanto através de consultas SQL (queries). Ao usuário, pode parecer que será trabalhoso instalarmos tudo isso. Afinal, teremos que instalar o Apache, o MySQL, o PHP e, ainda, de algu- ma forma, o phpMyAdmin, correto? Bem, temos uma boa notícia: esses programas são tão comumente utilizados em conjunto que existem ver- sões “empacotadas” de todos eles, de modo que tudo pode ser instala- do de uma só vez. No próximo tópico, focaremos na instalação para o ambiente Windows. Esse conjunto de software é conhecido na internet como 23 O PHP como linguagem para aplicativos dinâmicos M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. WAMP (Windows + Apache + MySQL + PHP). Aqui, utilizaremos uma variação portátil chamada UwAmp, que pode ser até executada a partir de pen drives. Caso o usuário esteja em um MacOS, recomenda-se a versão gratui- ta do software MAMP (você consegue deduzir o que significa a sigla?), que pode ser facilmente encontrada em uma busca rápida pela web. Se você está em um ambiente Linux, recomenda-se o software XAMPP. O “X” indica que há versões para todos os sistemas operacio- nais (SOs), e o “P” extra ao fim refere-se à linguagem Perl. Essa opção não foi recomendada para os outros casos pois o banco de dados uti- lizado é o MariaDB, em vez do MySQL. Os dois são semelhantes, mas podem ser encontradas algumas diferenças em certos passos. Se você se sentir mais confortável, basta fazer uma busca rápida por “LAMP install” no seu motor de busca e encontrará tutoriais para a instalação separada dos componentes nas inúmeras distros Linux que temos por aí. Uma alternativa mais avançada, se assim você preferir, é o uso de máquinas virtuais ou até mesmo containers que tragam todo o ambien- te pré-instalado (com o uso de tecnologias como Docker). 2 Preparando o ambiente O instalador do UwAmp pode ser encontrado na área de downloads de seu portal oficial. Ao entrar no site, há uma seção “Download”, na qual pode-se encontrar a seção “Last version”. Basta clicar no botão “Download Rar” ou “Download Zip”, aguardar o download e descompac- tar o arquivo na pasta que lhe for mais conveniente. Figura 1 – Localização dos links para download do UwWamp Fonte: UwAMP ([2020]). 3 Apresentação da IDE Como software de edição de códigos, usaremos o Visual Studio Code (VSCode), que é gratuito, multiplataforma e de fácil instalação. Ele pode ser encontrado em seu portal oficial (VISUAL STUDIO CODE, [s. d.]). Uma vez instalado, abra o VSCode e clique em “File > Open Folder”. Abra a pasta “www”, que se encontra dentro da pasta descompactada do UwAmp. À esquerda, devem aparecer o diretório “my-app” e o arquivo “index.php”. O diretório “my-app” pode ser removido, e o conteúdo do ar- quivo “index.php” pode ser apagado, mas não há necessidade de apagar o arquivo em si. Linguagens de servidor: uma abordagem prática com PHP Ma te ria l p ar a us o ex cl us ivo d e al un o m at ric ul ad o em c ur so d e Ed uc aç ão a D is tâ nc ia d a Re de S en ac E AD , d a di sc ip lin a co rre sp on de nt e. P ro ib id a a re pr od uç ão e o c om pa rti lh am en to d ig ita l, s ob a s pe na s da L ei . © E di to ra S en ac S ão P au lo . 24 M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. 4 Primeira aplicação (“Hello world”) Vamos escrever o seguinte no arquivo “index.php”: <h1>Olá mundo</h1> Se acessarmos a URL “http://localhost” no nosso navegador, tere- mos o seguinte resultado: Figura 2 – Nossa primeira aplicação IMPORTANTE Já aprendemos algo sobre PHP: arquivos .php podem conter tags HTML, como se fossem simplesmente um arquivo .html. Assim, todo arquivo .html poderia ser um arquivo .php válido, mas nem todo arquivo .php é um arquivo .html válido. Clique com o botão direito na página e selecione “Exibir código-fonte da página”. Você verá exatamente o mesmo HTML que digitamos no arquivo “index.php”. No entanto, o navegador está fazendo um pouco mais do que parece. Volte para a página, clique com o botão direito e se- lecione “Inspecionar elemento”. Irá se abrir um pequeno painel, provavel- mente à direita, chamado “Console de desenvolvedor”. Um atalho mais O PHP como linguagem para aplicativos dinâmicos 25 http://localhost 26 Linguagens de servidor: uma abordagem prática com PHP Ma te ria l p ar a us o ex cl us ivo d e al un o m at ric ul ad o em c ur so d e Ed uc aç ão a D is tâ nc ia d a Re de S en ac E AD , d a di sc ip lin a co rre sp on de nt e. P ro ib id a a re pr od uç ão e o c om pa rti lh am en to d ig ita l, s ob a s pe na s da L ei . © E di to ra S en ac S ão P au lo . rápido para abrir esse console costuma ser F12, mas isso pode variar dependendo do seu navegador. Daqui para frente, sempre que usarmos a expressão “abra o console”, estaremos nos referindo a essa ação. Uma vez que o console esteja aberto, podemos ver que na aba “Elements” (já vem selecionada por padrão) temos muito mais do que apenas o nosso h1. Na verdade, o conteúdo deve ser algo parecido com o seguinte: <html> <head></head> <body> <h1>Olá mundo</h1> </body> </html> IMPORTANTE Aqui temos mais uma lição, desta vez sobre HTML: todo HTML deve conter, na raiz, uma tag <html>, seguida por um <head> e um <body>, mesmo que vazios. O que aconteceu então? Bem, o navegador é esperto e pensou o se- guinte: “Ora, eu recebi um HTML inválido, pois ele não tem a estrutura correta. No entanto, como é só um <h1>, eu acho que o programador queria colocar este <h1> dentro do <body> e deixar o <head> vazio”. Essa foi uma dedução correta por parte do navegador. No entanto, não é uma boa prática distribuir HTML inválido pela internet. Vamos cor- rigir isso simplesmente copiando a estrutura do trecho de código ante- rior e colando no nosso arquivo. Assim, deixamos igual o que enviamos do servidor e o que o navegador vai entender, sem precisar que haja um 27 O PHP como linguagem para aplicativos dinâmicos M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. esforço a mais de nenhuma das partes. O resultado visual deveser o mesmo antes e depois das modificações. Vamos fazer o nosso site executar alguma ação? Por exemplo, mos- trar a data e hora atuais. Após o <h1>Olá mundo</h1>, escreva o seguinte: <p>Hoje é <?php echo date("d/m/Y H:i:s") ?></p> Ao abrirmos o localhost, veremos uma mensagem dizendo qual a data e hora atual. É possível que o relógio esteja adiantado em algumas horas, devido ao fato de o fuso horário do servidor vir, por padrão, no GMT. Mas como isso aconteceu? Repare que temos uma construção ali que nunca vimos: o trecho <?php ... ?>. Esse trecho indica que, após o <?php, sairemos do “am- biente” HTML e entraremos no “ambiente” PHP. Quando temos um ?>, voltamos normalmente ao “ambiente” HTML. Dentro desses trechos de PHP, podemos escrever o código que quisermos. Veremos, ao longo do livro, como encaixar programas inteiros nessas marcações. O comando que usamos foi o echo, seguido de uma chamada para a função date(“d/m/Y H:i:s”). O echo é o equivalente ao comando de print das outras linguagens, ou seja, ele pega o resultado da expressão à di- reita e exibe ali mesmo. No caso em questão, ele irá colocar o resultado de date(“d/m/Y H:i:s”) após o “é” e antes do fechamento da tag <p>. O resultado da função date é a data e hora atual, seguindo a for- matação que é recebida por parâmetro. Em outras palavras, o trecho d/m/Y H:i:s indica o formato no qual queremos mostrar a data. Tente, por exemplo, remover o d/m/Y ou o H:i:s e veja o que acontece. 28 Linguagens de servidor: uma abordagem prática com PHP Ma te ria l p ar a us o ex cl us ivo d e al un o m at ric ul ad o em c ur so d e Ed uc aç ão a D is tâ nc ia d a Re de S en ac E AD , d a di sc ip lin a co rre sp on de nt e. P ro ib id a a re pr od uç ão e o c om pa rti lh am en to d ig ita l, s ob a s pe na s da L ei . © E di to ra S en ac S ão P au lo . PARA SABER MAIS Se tiver curiosidade quanto aos códigos de formatação disponíveis, consulte as funções de data e hora no manual da PHP (PHP, [2020]). Tente mudar o formato de data para o padrão americano, com o mês antes do dia. NA PRÁTICA Também podemos realizar cálculos no PHP. Por exemplo: <?php echo 42 + 5?>. Sabendo que temos disponíveis todas as quatro operações aritméticas básicas e usando o comando date e os caracteres de forma- tação apropriados, tente fazer o PHP calcular e mostrar quantos anos você tem ou terá este ano. Então, em termos simples, abrimos um trecho de PHP e instruímos que queremos mostrar a data com dia, mês, ano, hora, minutos e segun- dos. Quando o servidor receber a requisição, ele fará exatamente isso. No tópico seguinte, deixaremos clara a separação entre cliente e servi- dor, que pode ser um pouco confusa em um desenvolvimento local. 5 A arquitetura cliente-servidor Durante o desenvolvimento, estaremos em uma posição bastante pe- culiar, pois a máquina em que iremos trabalhar estará funcionando tanto como servidor quanto como cliente. Por isso, é bom deixar claro quan- do temos que pensar como cliente e quando temos que pensar como servidor. Quando digitamos o endereço “localhost” no navegador, ele dispa- ra uma requisição para esse endereço. Essa requisição agora está nas 29 O PHP como linguagem para aplicativos dinâmicos M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. mãos do nosso sistema operacional, para encontrar quem é “localhost” e, se necessário, disparar a requisição pela internet. Seguindo as regras que foram padronizadas mundialmente (o pro- tocolo de internet, ou internet protocol – IP), o nosso SO decide que “localhost” é o servidor que está rodando na nossa própria máquina e tenta acessá-lo. Como estamos com o nosso UwAmp em execução, o SO encontra um servidor ali e entrega a requisição para ele. Agora, essa requisição é responsabilidade do servidor: o Apache. O Apache identifica que se trata de uma requisição para o arquivo raiz, já que não temos nada depois da barra (como “localhost/produtos. php”). Logo, o arquivo “index.php” é que contém as instruções para mon- tar a resposta, então o Apache o executa. O interpretador PHP lê o arquivo “index.php” e chama as funcionali- dades necessárias, resultando em um único HTML final, sem qualquer resquício de PHP. Assim, o PHP repassa esse HTML para o Apache, que devolve para o SO, que devolve para o navegador, que por sua vez faz a interpretação do HTML. Por fim, o navegador desenha na tela o resultado da interpre- tação do HTML, mostrando o que vimos anteriormente. Figura 3 – Exemplo do caminho de uma requisição Requisição Requisição index.php Navegador SO Apache PHP Resposta Resposta HTML Como pudemos ver, embora estejamos executando tanto o cliente (navegador) quanto o servidor (Apache) na mesma máquina, o meio- -campo é feito pelo SO. Assim, o navegador não faz ideia de que está 30 Linguagens de servidor: uma abordagem prática com PHP Ma te ria l p ar a us o ex cl us ivo d e al un o m at ric ul ad o em c ur so d e Ed uc aç ão a D is tâ nc ia d a Re de S en ac E AD , d a di sc ip lin a co rre sp on de nt e. P ro ib id a a re pr od uç ão e o c om pa rti lh am en to d ig ita l, s ob a s pe na s da L ei . © E di to ra S en ac S ão P au lo . falando com o computador local, e o servidor também não sabe que a requisição veio do mesmo computador em que está rodando. É como se você enviasse uma carta pelo correio para o seu irmão no quarto ao lado, sem que nenhum de vocês soubesse onde o outro está. Para cada um dos lados envolvidos, o outro lado é uma entidade remota, não tendo a mínima importância a localização geográfica: o mesmo computador, um computador ali na esquina ou do outro lado do planeta. Para finalizar, um aviso importante: antes de acompanhar cada ca- pítulo deste livro, certifique-se sempre de que o UwAmp está aberto e de que o servidor Apache está em execução. Se o SO não encontrar o Apache em execução, o circuito será quebrado e a aplicação PHP não terá como ser executada, o que fará um erro aparecer no navegador. Nos próximos capítulos, as instruções de inicialização do servidor serão sempre omitidas. NA PRÁTICA Agora que sabemos de tudo isso, pense sobre a seguinte questão: por que o relógio na nossa página não é atualizado em tempo real (atuali- zando, por exemplo, os segundos conforme eles passam)? Seria possí- vel fazer algo desse tipo? Se sim, como? Considerações finais Neste capítulo, preparamos nosso computador para colocar a mão na massa! Instalamos e configuramos o UwAmp, que contém o servidor HTTP Apache, o interpretador do PHP e um banco de dados MySQL. Além disso, já fizemos nossa primeira aplicação, a “Olá mundo”, e inclusive conseguimos mostrar a data atual. Assim, pudemos ver como é simples o processo de escrever nossa aplicação em PHP: basta 31 O PHP como linguagem para aplicativos dinâmicos M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. escrever o HTML normalmente e colocar trechos de código apenas quando necessário. Nos próximos capítulos, aprenderemos mais sobre como funciona a linguagem PHP e como podemos usar seus coman- dos para criar aplicações cada vez mais complexas. Referências PHP. Date. [2020]. Disponível em: https://www.php.net/manual/pt_BR/function. date.php. Acesso em: 14 jun. 2020. UWAMP. Download. [2020]. Disponível em: https://www.uwamp.com/en/? page=download. Acesso em: 14 jun. 2020. VISUAL STUDIO CODE. Download. [s. d.].Disponível em: https://code. visualstudio.com/. Acesso em: 14 jun. 2020. https://visualstudio.com https://code https://www.uwamp.com/en https://www.php.net/manual/pt_BR/function 33 M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. Capítulo 3 Elementos básicos do PHP – parte 1 No último capítulo, aprendemos a criar nossa aplicação PHP. Entendemos na prática como podemos escrever um simples arquivo .php e que, automaticamente, o servidor saberá como se comportar na hora de gerar uma resposta em HTML. Neste capítulo, veremos como funcionam as principais estruturas para escrevermos algoritmos em PHP. Inclusive, temos uma boa notí- cia: se você está acostumado com programação imperativa, em espe- cial com o paradigma estruturado, se sentirá complemente em casa. Devemos isso principalmente ao fato de o PHP ser uma linguagem for- temente inspirada em linguagens como C, assim como praticamente todas as outras linguagens estruturadas. 34 Linguagens de servidor: uma abordagem prática com PHP Ma te ria l p ar a us o ex cl us ivo d e al un o m at ric ul ad o em c ur so d e Ed uc aç ão a D is tâ nc ia d a Re de S en ac E AD , d a di sc ip lin a co rre sp on de nt e. P ro ib id a a re pr od uç ão e o c om pa rti lh am en to d ig ita l, s ob a s pe na s da L ei . © E di to ra S en ac S ão P au lo . 1 Variáveis e tipos de dados Variáveis podem ser enxergadas como caixas que guardam valo- res. Elas têm esse nome pois, uma vez criadas, podemos trocar (va- riar) o valor que guardamos nessa “caixa” quantas vezes quisermos. Para criar uma variável em PHP, basta prefixar o seu nome com o sím- bolo de cifrão ($). Por exemplo: para armazenar uma idade, criaríamos a variável $idade. No entanto, uma caixa vazia é de pouca utilidade. O ato de preencher essa caixa com algum valor concreto é o que chamamos de atribuir um valor a uma variável. Para isso, fazemos uso do operador de atribuição: o sinal =. Assim, se quisermos guardar em uma variável a idade de alguém que tenha 20 anos, podemos escrever o seguinte trecho de código: <?php $idade = 20 ?> Em relação a nomes de variáveis, note que o PHP é uma linguagem case-sensitive, ou seja, que diferencia maiúsculas e minúsculas. IMPORTANTE As variáveis $idade, $Idade, $IDADE e $iDAdE serão todas tratadas como completamente diferentes. É recomendável, no entanto, que o progra- mador sempre utilize letras minúsculas e evite o uso de acentuações e caracteres especiais. Podemos perceber também que em nenhum momento contamos para o PHP que nossa variável $idade irá armazenar um número. Isso aconte- ce pois a PHP é uma linguagem dinamicamente tipada, isto é, nela uma variável pode guardar qualquer tipo de dado e, inclusive, guardar tipos de dados diferentes durante sua existência. Mas quais são os tipos de dados 35 Elementos básicos do PHP – parte 1 M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. que temos em PHP? Bem, no nosso caso temos o tipo numérico, que são números inteiros ou reais, positivos ou negativos, decimais, octais ou hexa- decimais. Veja, no quadro 1, alguns exemplos de dados numéricos: Quadro 1 – Exemplos de dados numéricos DADO DESCRIÇÃO 5 Valor inteiro na base decimal. 4.012 Valor real (ponto flutuante) com três casas decimais. .14 Valor real com 2 casas decimais. É equivalente a 0.14. Quando o número é iniciado com um ponto, assume-se que o 0 seria o algarismo inicial. 033 Valor inteiro na base octal. Todo número que inicia com 0 é tratado como de base 8. 0xBC Valor inteiro na base hexadecimal. Todo valor iniciado com 0x é tratado como um valor hexadecimal. 4.3E+7 Um número real grande. Equivale ao valor 43.000.000 (43 milhões) Fonte: adaptado de Niederauer (2017). NA PRÁTICA Ao longo deste livro, e provavelmente da sua carreira como desenvol- vedor PHP, você usará bem mais as notações dos dois primeiros exem- plos do quadro e ocasionalmente o terceiro exemplo. O restante das notações é usado com muita raridade e em circunstâncias pouco co- muns durante o desenvolvimento web, mas é sempre bom saber que elas existem. Os tipos numéricos permitem o uso de alguns operadores arit- méticos, como soma (+), subtração (-), multiplicação (*) e divisão (/). Também há o operador de resto da divisão inteira, ou módulo (%). A 36 Linguagens de servidor: uma abordagem prática com PHP Ma te ria l p ar a us o ex cl us ivo d e al un o m at ric ul ad o em c ur so d e Ed uc aç ão a D is tâ nc ia d a Re de S en ac E AD , d a di sc ip lin a co rre sp on de nt e. P ro ib id a a re pr od uç ão e o c om pa rti lh am en to d ig ita l, s ob a s pe na s da L ei . © E di to ra S en ac S ão P au lo . seguir, temos alguns exemplos desses operadores em uso, com os res- pectivos resultados comentados: <?php $idade = 20; $idade_daqui_cinco = $idade + 5; // 25 $ano_nascimento = 2020 - $idade; // 2000 $total_de_pedacos_de_bolo = $idade * 8; //160 = 8 pedaços por aniversário $decadas = $idade/10; // 2 décadas $anos_desde_multiplo_de_9 = $idade % 9 // 2, pois fez 18 (9*2) há 2 anos ?> IMPORTANTE Note que aqui colocamos o sinal “;” ao final de cada linha do código. Quando nosso código PHP tiver mais de um comando, sempre é neces- sário finalizar cada um deles com esse sinal. Se o nosso código tiver apenas um comando, o uso de ponto e vírgula se torna opcional. Dados numéricos são excelentes para representar valores que usa- remos para realizar cálculos. No entanto, nem todos os dados que preci- saremos manipular no nosso programa são números. Também é muito importante que possamos manipular texto. Assim, além dos tipos nu- méricos, temos também as variáveis alfanuméricas: as strings. 2 Strings Strings são cadeias de caracteres (ou sequências de caracteres, se preferir). Elas são sempre delimitadas por aspas (") ou apóstrofos ('), por vezes chamados erroneamente de “aspas duplas” e “aspas simples”. Veja os exemplos: 37 Elementos básicos do PHP – parte 1 M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. <?php $nome = "João da Silva"; $mensagem = 'Seja bem-vindo(a)'; ?> Conforme comentamos, diferentemente dos números, as strings não são adequadas para cálculos, sendo mais usadas para representar textos em geral, como nomes, títulos e mensagens. Que tipo de opera- ção poderíamos querer realizar com strings então? A resposta deve vir naturalmente para quem é mais experiente em programação: a concatenação de strings. Concatenação é o nome que damos à operação de juntar, grudar ou colar um texto em outro. No PHP, temos o operador de concatenação na forma do símbolo de ponto (.). Por exemplo: <?php $nome = "João da Silva"; $mensagem = 'Seja bem-vindo(a)'; $mensagem_final = $mensagem . ', ' . $nome; // 'Seja bem- vindo(a), João da Silva' ?> Note que, se concatenássemos apenas $mensagem . $nome, tería- mos a mensagem final incorreta: “Seja bem-vindo(a)João da Silva”, sem vírgula ou espaço entre a mensagem e o nome. Por isso, foi necessário usar uma string intermediária para que a concatenação resultasse em algo mais amigável para seres humanos. No entanto, o PHP nos fornece uma maneira mais prática de fazer esse tipo de operação: a interpola- ção. Veja o exemplo: 38 Linguagensde servidor: uma abordagem prática com PHP Ma te ria l p ar a us o ex cl us ivo d e al un o m at ric ul ad o em c ur so d e Ed uc aç ão a D is tâ nc ia d a Re de S en ac E AD , d a di sc ip lin a co rre sp on de nt e. P ro ib id a a re pr od uç ão e o c om pa rti lh am en to d ig ita l, s ob a s pe na s da L ei . © E di to ra S en ac S ão P au lo . <?php $nome = "João da Silva"; $mensagem = 'Seja bem-vindo(a)'; $mensagem_final = "$mensagem, $nome"; // 'Seja bem- vindo(a), João da Silva' ?> Repare bem: bastou colocarmos as variáveis $mensagem e $nome como parte do texto de $mensagem_final que o PHP já entendeu que devia encaixar os seus valores ali. Note, no entanto, que essa operação só é permitida pois usamos aspas, e não apóstrofos. Em outras pala- vras, sempre que o PHP encontrar uma string com aspas, ele irá procu- rar e realizar a substituição de variáveis (interpolação), enquanto que em uma string com apóstrofos isso não é realizado. Nesse caso, es- tritamente falando, o ideal seria a variável $nome usar apóstrofos, pois estamos informando ao PHP para procurar variáveis na string João da Silva, sendo que ele certamente não irá encontrar nenhuma, pois não era nossa intenção. PARA SABER MAIS É importante ressaltar que, devido à natureza fracamente tipada do PHP, podemos usar operações de strings em números e vice-versa. Em espe- cial, se fizermos “5” + “5”, teremos o valor 10, pois o PHP irá realizar a conversão automaticamente. Essa conversão, em versões mais antigas, pode falhar silenciosamente e gerar resultados questionáveis, como no exemplo “João 5” + “5 quilômetros”, que será interpretado como 0 + 5, ou seja, 5. A partir da versão 7.1 do PHP, esse problema foi corrigido. O inverso também é verdade, embora seja, em geral, menos problemáti- co. Podemos fazer, por exemplo, (10*4.2) . ‘km’ e o resultado será 42 km. Podemos, é claro, usar o comando echo para mostrar na tela o con- teúdo de variáveis, tanto string quanto numéricas. Veja, por exemplo, o código a seguir: 39 Elementos básicos do PHP – parte 1 M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. <?php $idade = 2020 – 1985; $nome = 'João da Silva'; ?> <html> <head> <title> Página do <?php echo $nome?></title> </head> <body> <h1>Ele tem <?php echo $idade?> anos de idade!</h1> </body> </html> NA PRÁTICA Lembra-se da função date? Use-a para manter a idade de João atualiza- da na página. Além disso, tente criar outras variáveis para armazenar e mostrar na página, por exemplo, o sabor de sorvete preferido de João e seu número de matrícula na faculdade. Mostre na tela quanto João teria em uma conta bancária se tivesse depositado 5 centavos por dia desde o dia em que nasceu. Sinta-se livre para ignorar anos bissextos, assumir que o dia de aniversário de João é sempre o dia atual e ignorar absolutamente quaisquer tipos de juros, taxas, rendimentos, impostos ou correção monetária aplicáveis. 3 Include e require Naturalmente, concentrar todo o nosso código em um único arquivo tornaria o desenvolvimento algo bem desorganizado. Como você deve saber, a organização do código é fundamental para que o desenvolvi- mento tenha fluidez e agilidade. Por isso, são necessários mecanismos de separar o código em vários arquivos. Veja o exemplo anterior. Note que precisamos escrever toda a parte de head e abrir o body, e depois fechamos o body e o HTML. Pensando 40 Linguagens de servidor: uma abordagem prática com PHP Ma te ria l p ar a us o ex cl us ivo d e al un o m at ric ul ad o em c ur so d e Ed uc aç ão a D is tâ nc ia d a Re de S en ac E AD , d a di sc ip lin a co rre sp on de nt e. P ro ib id a a re pr od uç ão e o c om pa rti lh am en to d ig ita l, s ob a s pe na s da L ei . © E di to ra S en ac S ão P au lo . em um website real, ainda teríamos provavelmente um elemento de ca- beçalho, com links de navegação e possivelmente um rodapé com in- formações de contato. Isso se repetiria em toda página que tivéssemos que escrever. Podemos simplificar esse cenário, criando os arquivos “inicio.php” e “fim.php”. O conteúdo de “inicio.php” seria: <html> <head> <title>Página do João</title> </head> <body> E no “fim.php”, teríamos: </body> </html> Agora só falta alterar o “index.php”, adicionando instruções para pe- gar o conteúdo desses arquivos e encaixar no local correto. Para isso, o PHP nos traz duas opções: o comando include e o comando require. A princípio, os dois comandos fazem a mesma coisa: pegam o con- teúdo de um outro arquivo e “colam” na linha em que foram escritos. Nesse caso, nosso “index.php” se tornaria: <?php require 'inicio.php'; $idade = 2020 – 1985; ?> <h1>Ele tem <?php echo $idade?> anos de idade!</h1> <?php require 'fim.php'; ?> 41 Elementos básicos do PHP – parte 1 M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. No código apresentado, ambos os requires poderiam ser includes sem problema algum. A diferença entre ambos está no comportamen- to de cada um quando o arquivo não é encontrado. Em geral, é mais recomendado utilizar o comando require, pois se o arquivo não for en- contrado a execução será interrompida com um erro fatal. Por sua vez, o include apenas retornará um warning e permitirá que a execução con- tinue, o que pode levar o programador a crer erroneamente que seu pro- grama está válido. 4 Estruturas de condição e laços – parte 1 (switch case, for, if, else, while) Agora que sabemos criar variáveis e organizar nosso código, está na hora de botar a mão na massa! Vamos ver como escrever algoritmos utilizando estruturas de seleção e repetição. 4.1 Estruturas de condição A estrutura de condição mais simples que temos é o desvio con- dicional, o nosso famoso if. Um if em PHP é exatamente igual a um if em C, Java ou JavaScript, por exemplo. Considerando a variável $idade presente no nosso “index.php”, poderíamos escrever: if ($idade >= 18) { echo 'Você é maior de idade'; } O código apenas será executado se a condição $idade >= 18 for ava- liada como verdadeira. Opcionalmente, podemos fornecer um conjunto adicional de instruções para o caso de a condição ser falsa, usando o comando else. Veja: 42 Linguagens de servidor: uma abordagem prática com PHP Ma te ria l p ar a us o ex cl us ivo d e al un o m at ric ul ad o em c ur so d e Ed uc aç ão a D is tâ nc ia d a Re de S en ac E AD , d a di sc ip lin a co rre sp on de nt e. P ro ib id a a re pr od uç ão e o c om pa rti lh am en to d ig ita l, s ob a s pe na s da L ei . © E di to ra S en ac S ão P au lo . if ($idade >= 18) { echo 'Você é maior de idade'; } else { echo 'Você é menor de idade'; } Se a condição $idade >= 18 for avaliada como verdadeira, o primei- ro trecho de código será executado. Caso contrário (else), o segundo trecho será executado. Também podemos encadear vários ifs, gerando uma sequência de comandos conhecida como else if: if ($idade >= 18) { echo 'Você é maior de idade'; } else if ($idade >= 16) { echo 'Você é menor de idade, mas pode votar'; } else { echo 'Você é menor de idade e não pode votar'; } Nesse caso, a condição $idade >= 16 só será avaliada se $idade >= 18 for falsa. Se nenhuma das condições for verdadeira, o terceiro trecho de código será executado. Quando estamos lidando com dados reais, é muitocomum estru- turas de seleção mais complexas surgirem. Digamos que estamos li- dando com um site de delivery, em que um pedido pode ter diferentes estados: “0 – Aguardando confirmação”, “1 – Sendo preparado”, “2 – A caminho” e “3 – Entregue”. Se fôssemos reagir a cada um dos estados diferentes usando um if, teríamos um código mais ou menos assim: 43 Elementos básicos do PHP – parte 1 M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. <h1> O seu pedido está <?php if ($status == 0) { echo 'Aguardando confirmação'; } else if ($status == 1) { echo 'Sendo preparado'; } else if ($status == 2) { echo 'A caminho'; } else if ($status == 3) { echo 'Entregue'; } else { echo 'Desconhecido'; } ?> </h1> Como é possível notar, o código pode se tornar um pouco verboso. Por isso, temos a construção switch/case, que nos ajuda quando temos um número finito previamente conhecido de valores possíveis para uma variável. <h1> O seu pedido está <?php switch ($status) { case 0: echo 'Aguardando confirmação'; break; case 1: echo 'Sendo preparado'; break; case 2: echo 'A caminho'; break; case 3: echo 'Entregue'; break; default: // caso não se encaixe em nenhuma outra echo 'Desconhecido'; break; } ?> </h1> 44 Linguagens de servidor: uma abordagem prática com PHP Ma te ria l p ar a us o ex cl us ivo d e al un o m at ric ul ad o em c ur so d e Ed uc aç ão a D is tâ nc ia d a Re de S en ac E AD , d a di sc ip lin a co rre sp on de nt e. P ro ib id a a re pr od uç ão e o c om pa rti lh am en to d ig ita l, s ob a s pe na s da L ei . © E di to ra S en ac S ão P au lo . Embora, em questão de número de linhas, o nosso código tenha fica- do um pouco mais extenso, muitas vezes o código com switch se torna preferível em termos de legibilidade, pois a intenção do código fica, em geral, mais clara. 4.2 Estruturas de repetição A estrutura de repetição (laço) mais simples que temos é o while. O seu formato no PHP também deve ser bem familiar para programado- res de outras linguagens. O while é frequentemente combinado com variáveis de controle, como contadores e acumuladores. Por exemplo, se quiséssemos listar todos os aniversários do nosso exemplo: $ano = 1985; while ($ano <= 2020) { $idade = $ano – 1985; echo "<p>Sua idade era $idade em $ano</p>"; $ano++; } PARA SABER MAIS Repare que, no exemplo colocado, pela primeira vez pusemos uma tag HTML dentro de uma string do PHP. De forma geral, podemos programar de duas maneiras. A primeira seria escrever o HTML e colocar “enxer- tos” de PHP ao longo do documento. A segunda seria escrever o código PHP sempre colocando o HTML como parte das strings e chamando o comando echo para exibi-las. Ambas as formas são válidas, apresentam o mesmo resultado e podem ser misturadas sem problema algum, inclu- sive dentro do mesmo documento. O programador está totalmente livre para decidir quando é mais cômodo usar uma forma ou outra. 45 Elementos básicos do PHP – parte 1 M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. No exemplo, usamos a variável $ano como nosso contador e con- trolamos a quantidade de vezes que o loop executa, verificando se esse contador excedeu o valor de 2020. A linha “$ano++” é o mesmo que escrever “$ano = $ano + 1” e incrementa a variável $ano em 1 a cada execução do laço. Como você provavelmente sabe, existe uma forma mais curta de escrever o mesmo loop, usando o laço for. for ($ano = 1985; $ano <= 2020; $ano++) { $idade = $ano – 1985; echo "<p>Sua idade era $idade em $ano</p>"; } Esse laço concentra, na mesma linha, os trechos de inicialização, ve- rificação e atualização da variável de controle, melhorando a organiza- ção e legibilidade do nosso código. 5 Requisição GET/POST Para finalizar este capítulo, vamos falar um pouco sobre as formas de pedir para um usuário digitar um dado. Quando escrevemos um programa para o terminal, podemos interromper temporariamente sua execução para o usuário digitar determinada informação e depois reto- mamos a execução normalmente. No entanto, em um ambiente web, a solução é um pouco diferente, pois temos acesso a formulários. O processo funciona da seguinte forma: na primeira vez que o usuário requisita a página, não podemos mostrar o resultado, pois ele não enviou junto com a requisição os dados do formulário. Então, mandamos um HTML com o formulário em branco pedindo para ele digitar as informa- ções. Quando o usuário preencher o formulário e clicar em “Enviar”, uma nova requisição será feita, dessa vez com os dados do formulário. Do lado do servidor, identificaremos isso e, em vez de mandar o formulário, envia- remos o resultado que o usuário deseja. Seria algo mais ou menos assim: 46 Linguagens de servidor: uma abordagem prática com PHP Ma te ria l p ar a us o ex cl us ivo d e al un o m at ric ul ad o em c ur so d e Ed uc aç ão a D is tâ nc ia d a Re de S en ac E AD , d a di sc ip lin a co rre sp on de nt e. P ro ib id a a re pr od uç ão e o c om pa rti lh am en to d ig ita l, s ob a s pe na s da L ei . © E di to ra S en ac S ão P au lo . Figura 1 – Exemplo do fluxo de requisições de um formulário Cliente (navegador) Quero o index.php Servidor (web server) Você não mandou os dados do formulário. Aqui está o HTML com o formulário Quero o index.php. Aqui está o formulário preenchido Aqui está o HTML com o resultado Cliente (navegador) Servidor (web server) Vamos entender melhor tudo isso com um exemplo. Vamos modifi- car o nosso “index.php” para conter o seguinte: <?php require 'inicio.php'?> <h1> Meu Formulário </h1> <form> <label for="campo_de_nome">Digite seu nome</label> <input name=″nome_usuario″ id=″campo_de_nome″ type=″text″/> <button type=″submit″>Enviar</button> </form> <?php require 'fim.php'?> Se olharmos agora no nosso navegador, veremos o seguinte resultado: Figura 2 – Nosso formulário no navegador Meu Formulário Digite seu nome Enviar 47 Elementos básicos do PHP – parte 1 M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. Repare que colocamos um elemento <form> ao redor do nosso for- mulário. Esse elemento, por enquanto, não parece ter função alguma, mas logo ficará claro o motivo de ele existir. Então, temos três elementos: • O label informa o rótulo da nossa caixa de texto, e o atributo for indica a qual campo aquele rótulo se refere. O formulário funcio- naria perfeitamente sem esse campo, no entanto, em termos de usabilidade e acessibilidade do formulário, esse elemento é extre- mamente importante. • O input é efetivamente a caixa de texto. Indicamos que o tipo que ele recebe é um texto (type=”text”), que o identificador do elemen- to é campo_de_nome e que o nome do valor que vamos receber será nome_usuario. Note que o id do elemento deve corresponder ao valor do atributo for do elemento label. O atributo name poderia ser outro de sua preferência, e o usaremos em breve. • O button com type=”submit” indica que, ao clicar neste botão, que- remos submeter o formulário. NA PRÁTICA Sempre prefira usar o label com o atributo for em vez de usar um ele- mento genérico como um p, por exemplo. Visualmente,o resultado pode parecer o mesmo, mas há muito mais no HTML do que apenas o estilo visual. Tente, por exemplo, clicar no label e note que o campo correspon- dente será selecionado. Isso não aconteceria com o elemento p, ou se o atributo for estivesse incorreto. Além disso, usuários com deficiências visuais podem contar com o au- xílio de softwares leitores de tela, que se beneficiam em casos assim. Motores de busca também conseguem interpretar melhor o seu HTML se você usar os componentes da forma correta, fazendo o seu site obter uma pontuação mais alta e aparecer mais bem ranqueado nas buscas. 48 Linguagens de servidor: uma abordagem prática com PHP Ma te ria l p ar a us o ex cl us ivo d e al un o m at ric ul ad o em c ur so d e Ed uc aç ão a D is tâ nc ia d a Re de S en ac E AD , d a di sc ip lin a co rre sp on de nt e. P ro ib id a a re pr od uç ão e o c om pa rti lh am en to d ig ita l, s ob a s pe na s da L ei . © E di to ra S en ac S ão P au lo . Para receber os dados do lado do servidor, utilizaremos, a princípio, a variável $_GET. Como o nosso formulário definiu que o nome do campo é “nome_usuario”, basta acessarmos usando a notação $_GET[ ‘nome_ usuario’ ] (não se preocupe, veremos no próximo capítulo o que essa sintaxe significa). Podemos verificar se esse campo foi enviado através do comando isset($_GET[ ‘nome_usuario’ ]). Por exemplo, tente adicio- nar, após fechar o <h1>, o seguinte código: <?php if(isset($_GET['nome_usuario'])){ echo '<h2>Olá, ' . $_GET['nome_usuario'] . '<h2>'; } ?> Ao testar o programa, podemos ver que está funcionando. Repare, no entanto, que o endereço na barra do navegador mudou e agora mos- tra algo como ?nome_usuario=NomeDigitado. O leitor certamente já se deparou com endereços desse tipo. Esse trecho é chamado de query string, entendida automaticamente pelo PHP. URLs com query strings são muito úteis quando queremos que o usuário possa abrir novamente a página exatamente do jeito que está, com o formulário “pré-subme- tido”. Um exemplo clássico é o resultado de uma busca, que o usuário pode querer compartilhar com algum amigo ou salvar nos seus favori- tos. Note que você pode editar manualmente os valores da query string diretamente na barra de endereços e apertar o “Enter”, sem nem sequer precisar interagir com o formulário. No entanto, nem sempre queremos que os campos do formulário fiquem armazenados na URL. Para esses casos, temos também o mé- todo POST. Há muitas diferenças, principalmente semânticas, entre os métodos POST e GET, mas, para os fins deste capítulo, basta dizer que o POST envia as informações de uma forma “escondida” do usuário. Para usá-lo, basta adicionar method=”post” no seu elemento <form> e acessar usando a variável $_POST em vez de $_GET. Nosso código final ficaria assim: 49 Elementos básicos do PHP – parte 1 M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. <h1> Meu Formulário </h1> <?php if(isset($_POST['nome_usuario'])){ echo '<h2>Olá, ' . $_POST['nome_usuario'] . '<h2>'; } ?> <form method=″post″> <label for=″campo_de_nome″>Digite seu nome</label> <input name=″nome_usuario″ id=″campo_de_nome″ type=″text″/> <button type=″submit″>Enviar</button> </form> Considerações finais Neste capítulo, aprendemos conceitos que, embora básicos, são es- senciais para o desenvolvimento de qualquer aplicação PHP, indepen- dentemente de sua escala. Aprendemos os principais componentes estruturais de um algoritmo em PHP: os comandos if, switch, while e for. Esses componentes, por si só, já tornariam nossa linguagem capaz de escrever qualquer algoritmo possível. No entanto, como veremos no próximo capítulo, temos algu- mas outras cartas na manga, como outros comandos e estruturas de dados, que deixarão nosso desenvolvimento mais versátil e ágil. Também aprendemos como organizar nosso código em vários ar- quivos, através dos comandos include e require, e como capturar e tratar a entrada de um usuário via formulário, através tanto do método GET quanto do método POST. 50 Linguagens de servidor: uma abordagem prática com PHP Ma te ria l p ar a us o ex cl us ivo d e al un o m at ric ul ad o em c ur so d e Ed uc aç ão a D is tâ nc ia d a Re de S en ac E AD , d a di sc ip lin a co rre sp on de nt e. P ro ib id a a re pr od uç ão e o c om pa rti lh am en to d ig ita l, s ob a s pe na s da L ei . © E di to ra S en ac S ão P au lo . Referências NIEDERAUER, Juliano. Desenvolvendo websites com PHP: aprenda a criar web- sites dinâmicos e interativos com PHP e bancos de dados. 3. ed. São Paulo: Novatec, 2017. 51 M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. Capítulo 4 Elementos básicos do PHP – parte 2 Neste capítulo, iremos dar continuidade aos nossos estudos de como expressar algoritmos na linguagem PHP. No último capítulo, aprende- mos sobre os tipos básicos de variáveis e algumas das estruturas de seleção e repetição mais comuns. Agora, vamos focar nossa atenção em um dos elementos mais comuns da programação: os arrays. Iremos mostrar como criar e entender os tipos de arrays no PHP, como acessar suas posições e como usá-los a nosso favor na hora de programar. Também veremos como manipular e iterá-los de uma forma concisa e bastante prática, usando o loop foreach. 52 Linguagens de servidor: uma abordagem prática com PHP Ma te ria l p ar a us o ex cl us ivo d e al un o m at ric ul ad o em c ur so d e Ed uc aç ão a D is tâ nc ia d a Re de S en ac E AD , d a di sc ip lin a co rre sp on de nt e. P ro ib id a a re pr od uç ão e o c om pa rti lh am en to d ig ita l, s ob a s pe na s da L ei . © E di to ra S en ac S ão P au lo . 1 Arrays Array, em tradução livre, significa arranjo. Em computação, no en- tanto, o termo se refere a uma estrutura de dados que normalmente é traduzida como vetor, embora também possa representar uma matriz ou um tensor (matriz multidimensional). Os arrays fazem parte de pra- ticamente toda linguagem de programação moderna, pois são muito úteis para expressar certos algoritmos que envolvem repetição de um número arbitrário de elementos. Em PHP, no entanto, um array pode re- presentar muito mais do que apenas vetores ou matrizes. Como mencionado, array é uma estrutura de dados. Isso significa que, dentro de uma mesma variável, podemos armazenar e estruturar múltiplos valores, inclusive de tipos diferentes, evitando assim de criar- mos uma variável para cada valor que queremos gravar. Vamos começar com um exemplo básico, utilizando um array para representar uma lista de elementos. Suponha que temos uma gara- gem com cinco vagas, em que cinco amigos estacionaram os carros. Gostaríamos de guardar, em variáveis, o nome da pessoa cujo carro está em cada vaga. Uma opção seria simplesmente fazer o seguinte: $nome1 = "André"; $nome2 = "Bruno"; $nome3 = "Carlos"; $nome4 = "Diego"; $nome5 = "Eduardo"; Note, no entanto, que ficaria difícil manter esse código se, de repente, tivéssemos que ter 50, 500 ou 5.000 vagas. Podemos armazenar cada um desses nomes utilizando um array: 53 Elementos básicos do PHP – parte 2 M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. $nomes = array("André",
Compartilhar