Baixe o app para aproveitar ainda mais
Prévia do material em texto
PROGRAMAÇÃO PARA INTERNET (CSS, HTML, PHP) Prof. Me. Cleber Jose Semensate Santos UNIDADE I – AMBIENTE DE DESENVOLVIMENTO E INTRODUÇÃO AO HTML E CSS INTRODUÇÃO Olá, aluno(a), seja bem-vindo(a)! Começo a nossa primeira unidade com uma questão primordial: por que uma empresa deveria ter um site? Esse é um dos questionamentos mais importantes que deve ser feito nos dias atuais, já que há uma crescente evolução digital, que permite realizar ações em tempo real, como a estimulação e o compartilhamento de informações de uma marca. Dessa maneira, as empresas que buscam uma lucratividade final precisam adequar-se e atentar-se para esse novo tipo de tecnologia e comércio. Assim, o objetivo principal dessa unidade é preparar o ambiente de desenvolvimento que será utilizado em toda a disciplina, desde o Terminal CMD, que será o nosso terminal de comandos, até o XAMPP, o nosso Servidor Web Localhost. Por isso, nessa unidade, também mostraremos a estrutura por trás de uma página web, afinal, para que tenhamos Sistemas rodando nessa rede, o HTML e CSS estão presentes na estrutura, dando uma sustentação para que o PHP e o MySQL possam de fato utilizar todo o poder da programação PHP. Preparado? Vamos iniciar os nossos estudos! 1 FERRAMENTAS E PREPARAÇÃO DO AMBIENTE 1.1 Objetivos O objetivo principal deste tópico, “Ferramentas e preparação do ambiente”, é preparar o ambiente de desenvolvimento que será utilizado em toda a disciplina, desde o Terminal CMD, que será o nosso terminal de comandos até o XAMPP, o nosso Servidor Web Localhost. 1.2 Instalando o Terminal Cmder O Cmder é um pacote de software criado a partir de uma pura frustração devido à ausência de emuladores de consoles agradáveis no Windows. Ele é baseado em um software incrível e temperado com o esquema de cores Monokai, com um layout de “prompt” personalizado, parecendo atraente desde o início. A versão utilizada nesta apostila é a v1.3.11. Para instalar o Terminal Cmder, siga as orientações a seguir. Passo a passo para a instalação 1) Acesse a página: https://cmder.net Figura 1 – Instalação do Cmder. Fonte: O autor. 2) Clique em DownloadMini: Figura 2 – Instalação do Cmder Mini. Fonte: O autor. 3) Descompacte o arquivo “cmder_mini.zip” em alguma pasta de seu computador e, depois, execute o arquivo “Cmder.exe”. Figura 3 – Download Cmder. Fonte: O autor. 1.3 Instalando o Sublime Text 3 Para manter a produtividade em seu dia a dia, o desenvolvedor precisa de um editor de códigos eficiente e, entre tantos ambientes de desenvolvimento robustos e gratuitos, o Sublime Text destaca-se justamente pela simplicidade, facilidade de uso e por ser leve. Além disso, ele aceita diversas linguagens de programação e é personalizável. A versão utilizada nesta apostila é a Build 3200. Para instalar o Sublime Text 3, siga as orientações que seguem. Passo a passo para a instalação 1) Acesse a página https://www.sublimetext.com Figura 4 – Instalação do Sublime Text. Fonte: O autor. 2) Clique na opção Download. Escolha o seu sistema operacional e clique em baixar: Figura 5 – Instalação do Sublime Text. Fonte: O autor. 3) Execute o arquivo “Sublime Text Build 3176 x64 Setup.exe” e apenas dê “Next” até o final. Figura 6 – Instalação do Sublime Text. Fonte: O autor. 4) Ao concluir, um ícone será criado em sua área de trabalho. Caso isso não ocorra, procure pelo programa Sublime Text 3 e abra-o: Figura 7 – Área de Trabalho do Sublime Text. Fonte: O autor. 1.4 Instalando o XAMPP O XAMPP é completamente gratuito, a distribuição Apache é fácil de instalar e contém MySQL, PHP e Perl. O pacote de código aberto do XAMPP foi criado justamente com essas características. A versão utilizada nesta apostila é a 7.3.2. Para instalá-lo, siga as instruções. Passo a passo para a instalação 1) Acesse a página: https://www.apachefriends.org/pt_br/index.html, escolha o seu Sistema Operacional e clique para baixar: Figura 8 – Instalação do XAMPP. Fonte: O autor. 2) Após baixar o arquivo, clique para instalar. Dê “Next” para continuar a instalação: Figura 9 – Instalação do XAMPP. Fonte: O autor. 3) Escolha um local em seu computador, no qual o XAMPP será instalado: Figura 10 – Instalação do XAMPP. Fonte: O autor. 4) Após instalá-lo, clique no ícone para abrir ou procure por XAMPP Control Panel em seu computador. Clique no botão “Start” em Apache e MySQL: Figura 11 – Instalação do XAMPP. Fonte: O autor. 5) Após “startar” o Apache e o MySQL por algum navegador de sua máquina, acesse este endereço: http://localhost/dashboard. A seguir, uma página como esta deve abrir: Figura 12 – Instalação do XAMPP. Fonte: O autor. 6) Enquanto estiver trabalhando com o XAMPP, deixe-o minimizado em seu computador. Quando reiniciar a máquina, você deve abri-lo e “startar” o Apache e o MySQL, para que o Servidor local fique ativo: Figura 13 – Instalação do XAMPP. Fonte: O autor. 1.5 Instalando o Composer O Composer é um gerenciador de pacotes para a linguagem de programação PHP em nível de aplicativo, que fornece um formato padrão para gerenciar AS dependências de software PHP e as bibliotecas necessárias. Foi desenvolvido por Nils Adermann e Jordi Boggiano, que continuam a gerenciar o projeto. A versão utilizada nesta apostila é a v1.8.4. Siga as instruções a seguir para instalar o Composer. Passo a passo para a instalação 1) Acesse a página: https://getcomposer.org Figura 14 – Instalação do Composer. Fonte: O autor. 2) Clique em “Download”, escolha o seu Sistema Operacional e clique para baixar: Figura 15 – Instalação do Composer. Fonte: O autor. 3) Siga os passos da instalação, dando “Next” até o final: Figura 16 – Instalação do Composer. Fonte: O autor. 4) Escolha a pasta de instalação do PHP, que, neste caso, será a instalação que está dentro do XAMPP. Veja o caminho abaixo: Figura 17 – Instalação do Composer. Fonte: O autor. 5) Para confirmar a instalação, acesse o Terminal Cmder e digite a palavra “composer” e dê “Enter”. Uma tela como esta deve abrir: Figura 18 – Instalação do Composer. Fonte: O autor. 2 CONHECENDO O HTML E O CSS 2.1 Objetivos O objetivo deste tópico, “Conhecendo o HTML e o CSS”, é apresentar a estrutura que existe por trás de uma página web. Para que tenhamos os sistemas rodando nessa rede, o HTML e o CSS estão na estrutura, dando uma sustentação para que o PHP e o MySQL possam de fato utilizar todo o poder da programação. 2.2 Entendendo a Linguagem de Marcação HTML HTML não é realmente uma linguagem de programação, mas sim uma linguagem de marcação, usada para dizer ao navegador como exibir as páginas que são visitadas. Consiste em uma série de elementos, que você junta ao redor de diferentes partes do seu conteúdo para que ele apareça ou aja de um determinado jeito. Por exemplo, veja a seguinte linha de conteúdo: Meu gatinho é muito mal-humorado. Se quiséssemos oficialmente dizer que isso é um parágrafo, poderíamos envolver o elemento em um código (<p>): <p>Meu gatinho é muito mal-humorado.</p> 2.2.1 Anatomia de um elemento HTML Vamos explorar esse parágrafo mais profundamente. Figura 19 – Anatomia do elemento HTML. Fonte: O autor. As principais partes de um elemento são: – https://developer.mozilla.org/pt-BR/docs/Web/HTML/Element/p 1. A “tag” de abertura (opening tag): Consiste no nome do elemento (no caso, p), envolvido em “chaves” (chevron) de abertura e fechamento. Isso demonstra onde o elemento começa, ou onde o seu efeito se inicia — neste caso, onde é o começo do parágrafo. 2. A “tag” de fechamento (closing tag): É a mesma coisa que a “tag” de abertura, exceto que inclui uma barra antes do nome do elemento. Isso demonstra onde o elemento acaba — neste caso, onde fica o fim do parágrafo. Esquecer de incluir uma “tag” de fechamento é um dos erros mais comuns de iniciantes, o que pode ocasionar resultados estranhos. 3. O conteúdo (content): É o conteúdo do elemento, que, neste caso, é só texto. 4. O elemento (element): A “tag” deabertura, com a de fechamento e o conteúdo formam o elemento. Elementos também podem ter atributos parecidos com: Figura 20 – Anatomia do elemento “class” HTML. Fonte: O autor. Atributos contêm informação extra sobre o elemento, que você não quer que apareça no elemento de fato. Nesse caso, o atributo classe (“class”) permite que você dê ao elemento um nome de identificação (“editor-note”), que, depois, poderá ser usado para dar ao elemento informações de estilo ou outras coisas. Por isso, um atributo sempre deve ter: Um espaço entre o atributo e o nome do elemento (ou o atributo anterior, quando o elemento já tiver um). O nome do atributo, seguido por um sinal de igual. Aspas de abertura e fechamento, envolvendo todo o valor do atributo. 2.2.2 Aninhando elementos Você pode colocar elementos dentro de outros elementos também, o que é chamado aninhar (nesting). Se quiséssemos declarar que o gato é MUITO rabugento, poderíamos envolver a palavra "muito" em um <strong>, o que significaria que a palavra deve ser fortemente enfatizada: https://developer.mozilla.org/pt-BR/docs/Web/HTML/Element/strong <p>Meu gatinho é <strong>muito</strong> mal-humorado.</p> Contudo, você precisa ter certeza de que os seus elementos estão devidamente aninhados. No exemplo acima, abrimos o elemento <p> primeiro, depois o negrito, então temos que fechar o negrito primeiro, depois o p. Nesse sentido, a forma a seguir é incorreta: <p>Meu gatinho é <strong>muito mal-humorado.</p></strong> Assim, observamos que os elementos têm que abrir e fechar perfeitamente, para que eles estejam claramente dentro ou fora um do outro. Se eles se sobrepusessem, como no exemplo, o “browser” tentaria adivinhar o que você está querendo dizer, gerando resultados inesperados. Então, não faça isso! 2.2.3 Elementos vazios Alguns elementos não tem conteúdo. sendo chamados de elementos vazios. Considere o elemento <img> que temos na nossa HTML: <img src="imagens/firefox-icon.png" alt="Minha imagem de teste"> Ele contém dois atributos, mas não há “tag” </img> de fechamento, nem conteúdo interno. Isso acontece porque uma imagem não envolve conteúdo para ter efeito em si mesma, pois a sua proposta é incorporar uma imagem na página HTML, no lugar em que o código aparece. 2.2.4 Anatomia de um documento HTML Isto é o básico dos elementos HTML individuais, mas eles não são muito úteis por si só. Agora, vamos ver como elementos individuais podem formar uma página inteira de HTML. Vamos revisitar os códigos que colocamos no exemplo de index.html, presentes no artigo “Dealing with files” (MDN CONTRIBUTORS, 2019a). <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Minha página de teste</title> </head> https://developer.mozilla.org/pt-BR/docs/Web/HTML/Element/img <body> <img src="imagens/firefox-icon.png" alt="minha página de teste"> </body> </html> Aqui, nós temos: <!DOCTYPE html> — o “doctype”. Há muito tempo, quando o HTML era novo (por volta de 1991/2), “doctypes” eram criados para agir como links, sendo um conjunto de regras que a página HTML tinha que seguir para que o HTML fosse considerado bom, o que poderia significar uma checagem automática ou outras coisas úteis. No entanto, atualmente, ninguém se interessa mais por “doctypes”, haja vista que eles são apenas artifícios históricos que precisam ser incluídos para tudo funcionar bem. Por agora, é tudo o que você precisa saber sobre esse tema. <html></html>— o elemento <html>. Esse elemento envolve todo o conteúdo da página e, às vezes, é conhecido como um elemento raiz. <head></head> — o elemento <head>. Age como um recipiente de tudo o que você deseja incluir em uma página HTML, mas que não é o conteúdo que você quer mostrar para quem vê a sua página. Por exemplo, palavras-chave, a descrição que você quer que apareça nos resultados de busca, CSS para dar estilo ao conteúdo, declarações de conjuntos de caracteres, entre outros. <body></body>— o elemento <body>. Contém todo o conteúdo que você quer mostrar ao público que visita a sua página, como texto, imagens, vídeos, jogos, faixas de áudio tocáveis ou outros elementos que você escolher. <meta charset="utf-8">. Esse elemento aponta qual conjunto de caracteres o seu documento deve usar para o “utf-8”, o que inclui praticamente todos os caracteres conhecidos por todas as linguagens humanas. Ele pode lidar, basicamente, com todo o conteúdo que você colocar em texto. Não há razão para não o escrever, afinal, com esse código você poderá evitar problemas posteriores. <title></title>. Indica o título da sua página, que aparece quando a sua página carrega no topo de “browser”. Ele é usado também para descrever a página quando você a coloca nos favoritos. 2.3 Imagens Depois da descrição da anatomia de um documento, que tal voltarmos a nossa atenção para o elemento de imagem novamente? Vamos lá! Observe o que segue. <img src="imagens/firefox-icon.png" alt="Minha imagem de teste"> Como dissemos antes, a tag <img>, demonstrada acima, incorpora uma imagem em nossa página, na posição em que aparece. Isso é feito pelo atributo “src” (source), que contém um caminho para o nosso arquivo de imagem. Além disso, nós também incluímos um atributo “alt” (alternative), que contém alguma descrição da imagem, podendo ser acessado por usuários que não veem a imagem, talvez porque: Eles são cegos ou parcialmente cegos. Usuários com deficiência visual significativa geralmente usam ferramentas chamadas Leitores de Tela para lerem o texto “alt”. Algo deu errado no código, o que significa que a imagem não pode ser mostrada. Por exemplo, tente deliberadamente mudar o caminho, dentro do atributo “src”, para fazê- lo ficar incorreto. Quando você salvar e recarregar a página, você deverá ver algo assim no lugar da imagem: Figura 21 – Página recarregada. Fonte: O autor. A frase chave sobre o texto “alt” é: “texto que descreve a imagem”. O texto “alt” que você escreve deve dar ao leitor o suficiente para que ele tenha uma boa ideia do que a imagem mostra, a partir da leitura. O nosso texto “My test image”, isto é, “minha imagem teste”, não é um bom sinal. Uma opção de texto melhor seria: “A logo do Firefox: uma raposa em chamas envolvendo a Terra”. Assim, tente usar textos alt melhores para a sua imagem, lembrando sempre que deve ser o mais acessível possível, visto que a web é projetada para todas as pessoas, conforme o artigo “Accessibility” (MDN CONTRIBUTORS, 2019c). 2.4 Marcando um Texto Esta sessão 2.4 abordará alguns elementos de HTML que você usará para marcar um texto. 2.4.1 Cabeçalhos Elementos de cabeçalho permitem que você especifique certas partes de seu conteúdo como cabeçalhos ou subcabeçalhos. Da mesma maneira que um livro possui um título principal e um título para cada capítulo, os quais podem ser divididos em subtítulos, um documento HTML também pode. O HTML contém seis níveis de cabeçalho: <h1>–<h6>, mas os mais usuais são o 3-4: <h1>My main title</h1> <h2>My top level heading</h2> <h3>My subheading</h3> <h4>My sub-subheading</h4> Agora é sua vez! Tente adicionar um título que haja uma identificação com a sua página, acima do seu elemento <img>. 2.4.2 Parágrafo Como explicado anteriormente, os elementos <p> contêm parágrafos de texto. Você vai usá-los bastante para marcar o conteúdo de texto. <p>This is a single paragraph</p> Com isso, pense agora “Como será o meu site?”. Com isso em mente, tente imaginar o planejamento e design que a sua página teria, isto é, guie-se por perguntas como: “quais informações o meu site oferecerá?”, “quais fontes e cores eu quero?”, “o que meu site fará?”, conforme exposto no artigo: What will your website look like? (MDN CONTRIBUTORS, 2019b). Feito isso, adicione o seu texto em alguns parágrafos, diretamente abaixo de seu elemento <img>. 2.4.3 Listas Vários conteúdos da web estão organizados em listas, as quais devem ter pelo menos dois elementos. Então o HTML tem elementosespeciais para elas. Os tipos mais comuns de listas são as ordenadas e as não-ordenadas: Listas não-ordenadas são tipos de listas cuja ordem dos itens não importa, como uma lista de compras. Elas são envolvidas em um elemento <ul>. https://developer.mozilla.org/pt-BR/docs/Web/HTML/Element/h1 https://developer.mozilla.org/pt-BR/docs/Web/HTML/Element/h6 https://developer.mozilla.org/pt-BR/docs/Web/HTML/Element/img https://developer.mozilla.org/pt-BR/docs/Web/HTML/Element/p https://developer.mozilla.org/pt-BR/docs/Web/HTML/Element/ul Listas Ordenadas são tipos de listas cuja ordem dos itens importa, como uma receita. Elas são envolvidas em um elemento <ol>. Nesse sentido, cada item dentro das listas é posto dentro de um elemento <li> (item de lista). Então, por exemplo, se quiséssemos tornar uma lista parte de um parágrafo, faríamos: <p>At Mozilla, we’re a global community of technologists, thinkers, and builders working together... </p> Dessa maneira: <p>At Mozilla, we’re a global community of</p> <ul> <li>technologists</li> <li>thinkers</li> <li>builders</li> </ul> <p>working together ... </p> Agora que você aprendeu este conteúdo, tente adicionar uma lista ordenada ou não ordenada em sua página. 2.5 Links Links são muito importantes, pois são eles que fazem a web ser de fato uma rede. Para implementar um link, nós precisamos usar uma âncora — <a> — o a é uma abreviatura de “anchor” (“âncora”). Para fazer um texto dentro de seu parágrafo virar um link, siga esses passos: 1. Escreva algum texto. Nós escolhemos o texto "Mozilla Manifesto". 2. Envolva o texto em um elemento <a>, da seguinte maneira: <a>Mozilla Manifesto</a> https://developer.mozilla.org/pt-BR/docs/Web/HTML/Element/ol https://developer.mozilla.org/pt-BR/docs/Web/HTML/Element/li https://developer.mozilla.org/pt-BR/docs/Web/HTML/Element/a 3. Dê um atributo “href” ao elemento <a>, como: <a href="">Mozilla Manifesto</a> 4. Escreva o endereço que você quer “linkar” no valor do atributo: <a href="https://www.mozilla.org/en-US/about/manifesto/">Mozilla Manifesto</a> Você pode ter resultados inesperados ao omitir o https:// ou o http://, conhecidos como “protocolo” no começo do endereço web. Então, sempre que você criar um link, clique nele para ter certeza de que a conexão irá para onde você deseja. SAIBAMAIS Outro termo citado é o “href”, que pode parecer uma escolha obscura para um nome de atributo, em uma primeira impressão. Por isso, caso você tenha problemas para memorizar esse nome, lembre-se de seu significado: “hypertext reference”, isto é, referência em hipertexto. Agora, caso você ainda não tenha feito, adicione um link para a sua página. Figura 22 – Resultado final da estruturação do HTML. Fonte: O autor. As Cascading Style Sheets (CSS) permitem definir estilos, layouts e espaçamento de maneira separada do conteúdo que deve ser estilizado. As informações CSS geralmente estão contidas em um arquivo externo. Outro código, como uma página HTML, pode fazer referência ao arquivo CSS para obter informações de layout. Por exemplo, quando você define, em um arquivo externo, as fontes e as cores usadas para certos elementos. Além disso, o CSS é definido como um padrão. Atualmente, as versões CSS 2.1 e CSS 3 são amplamente utilizadas. 2.6 Seletores CSS e Regras de Estilo O padrão CSS define seletores e regras de estilo. A sintaxe é definida da seguinte maneira: selector { property:value; } Um seletor pode ser um de um identificador predefinido (por exemplo, H1), um nome de classe (por exemplo, minha classe) ou um identificador (por exemplo, #myuniqueid). Já no CSS, um identificador deve ser único em todos os elementos de uma página (ou janela no nosso caso), enquanto uma classe pode ser atribuída a vários elementos. Figura 23 – Anatomia de um comando CSS. Fonte: O autor. Por exemplo, o arquivo CSS abaixo define o tamanho e a cor da tag “h1”. h1 { color:red; font-size:48px; } Há muitos tipos diferentes de seletor. Embora possamos fazer seleções mais específicas, no Quadro 1, nós mostramos apenas os seletores de elementos que selecionam os elementos de determinado tipo nos documentos HTML. Veja, então, alguns dos mais comuns tipos de seletor: Nome do seletor O que ele seleciona Exemplo Seletor de elemento (às vezes, chamado “tag” ou seletor de tipo) Todos os elementos HTML de determinada página. 3 Seletor de ID O elemento na página com o ID específico (em uma página HTML, você só pode ter um elemento por ID). #my-id Seleciona <p id="my- id"> ou <a id="my-id"> Seletor de classe O(s) elemento(s) da página com uma classe específica (múltiplas classes podem aparecer em uma página). .my-class Seleciona <p class="my- class"> e <a class="my- class"> Seletor de atributo O(s) elemento(s) na página com o atributo especificado. img[src] Seleciona <img src="myimage.png"> mas não <img> Seletor de pseudoclasse O(s) elemento(s) especificado(s), mas somente em um determinado estado. Ex.: com o mouse sobre ele. a:hover Seleciona <a>, mas somente quando o mouse está em cima do link. Quadro 1 – Diferentes tipos de seletores. Fonte: O autor. 2.6.1 Pseudoclasses CSS As pseudoclasses CSS são usadas para qualificar os atributos dos seletores. Por exemplo, você pode selecionar um link visitado em HTML e o estilo é diferente. a:visited { color:red; } Exercício 1: Estilize uma página HTML com CSS A seguir, crie uma página CSS no Sublime Text e a estilize com o código CSS, como assinalado na Figura 24. Crie um novo diretório e um arquivo chamado styles.css. Figura 24 – Código CSS. Fonte: O autor. No mesmo diretório, defina o seguinte arquivo HTML. Esse arquivo definirá o uso do arquivo de folha de estilos styles.css do mesmo diretório. Figura 25 – Página HTML com CSS incorporado. Fonte: O autor. 2.6.2 Contêiner HTML via ID e classe O HTML permite definir seções através de contêineres “div”, que podem ser usados para estilizar partes do documento HTML de maneira diferente. Para esse fim, você pode identificar os contêineres “div” via atributos de ID ou classe. O ID e a classe geram a mesma saída, mas um ID deve ser exclusivo em um documento HTML, enquanto o atributo de classe pode ser definido para vários elementos HTML em uma página. O CSS permite estilizar esses elementos por meio de seletores especiais. Siga os passos indicados a seguir, para criar um exemplo de utilização do HTML, em parceria com o CSS. Passo 01: Crie um arquivo stylesdiv.css. Figura 26 – Trecho de código CSS. Fonte: O autor. Passo 02: Crie o seguinte arquivo HTML para usar a folha de estilos, conforme Figura 27: Figura 27 – Trecho de código HTML. Fonte: O autor. Pode ser usado também outros atributos, isto é, pode ser definido um certo estilo para os links visitados ou pode ser determinado quando um usuário posiciona o mouse sobre ele. Dessa maneira, será possível identificar se você já possui um ponto visitado ou se o mouse passou sobre algum link, o que possibilita a alteração de sua exibição de acordo com isso. Figura 28 – Trecho de código CSS utilizado em link. Fonte: O autor. 2.6.3. Margins e Padding 2.6.3.1 Margins Um elemento de bloco pode ser pensado como uma caixa que contém algo. Essa caixa possui uma borda para outros elementos, e você poderá influenciar a distância entre outros elementos através das configurações de “margins” e “paddings”. “Margin” é utilizado para definir a distância externa de outros elementos. Nessa configuração, os valores para superior, direita, inferior e esquerda serão definidos, como ilustra a Figura 29. Figura 29 – Definindo “Margins” em elementos CSS. Fonte: O autor. As margens de uma caixa individualmente também podem ser definidas ou combinadas em uma instrução, como vemos no código expresso na Figura 30: Figura 30 – Trecho de código CSS. Fonte: O autor. 2.6.3.2 “Padding” “Padding” define a distância interna dos elementos até o final da caixa. Veja uma aplicação prática no exemplo da Figura 31: Figura 31 – Trechode código CSS. Fonte: O autor O tamanho total da caixa HTML é estipulado pelo tamanho inicial da caixa, das margens, do preenchimento e de uma borda, se definida. SAIBAMAIS O XML-RPC poderá ser visto como um compromisso entre a complexidade do SOAP e a simplicidade do REST. Ele é muito semelhante ao SOAP, mas poderá ser mais absorvido por apresentar um conceito mais amigável para o fornecedor. Como você poderá ver, o servidor PHP XML-RPC também poderá fornecer respostas SOAP. REFLITA Alan Kay, cientista da computação, em 1971, afirma: “A melhor maneira de prever o futuro é inventá-lo”. Dito isso, consideramos que a computação é uma ferramenta que possibilita a construção de soluções que podem revolucionar o mundo. Assim, conforme a afirmação acima, o poder de inventar o futuro está em nossas mãos. Como poderemos usá-lo para construir boas soluções para o mundo? Um grande abraço! E que você tenha muito sucesso! Fonte: AMOROSO, D. Frases impactantes sobre tecnologia e informática. Tecmundo, 24 nov. 2009. Disponível em: https://www.tecmundo.com.br/internet/3145-frases-impactantes- sobre-tecnologia-e-informatica.htm. Acesso em: 20 nov. 2019. INDICAÇÃO DE LEITURA Você já se perguntou como a internet começou? Quais eventos e circunstâncias propiciaram a popularidade atual da web? Ou como o HTML cresceu desde a década de 90? Para ter as respostas para essas perguntas e ainda aumentar o seu conhecimento sobre HTML, acesse: LOGMAN, W. A. A history of HTML. 1998. Disponível em: http://www.w3.org/People/Raggett/book4/ch02.html. Acesso em: 23 out. 2019. INDICAÇÃO DE VÍDEO Para que você tenha acesso a uma revisão interessante sobre o conceito de HTML, veja o vídeo: Introdução à HTML - HTML e CSS na prática. 2013. Disponível em: https://www.youtube.com/watch?v=smC1laH04dI. Acesso em: 12 out. 2019. CONSIDERAÇÕES FINAIS Imagino que a resposta inicial desta Unidade “por que devo ter um site?”, tenha sido respondida. As empresas, com toda certeza, devem acompanhar a evolução tecnológica pela qual o mundo está passando. Por buscarem uma lucratividade final, elas precisam adequar-se às novas tecnologias e ao novo tipo de comércio, para que haja a estimulação e o compartilhamento de informações sobre a sua marca. Nesse sentido, ao iniciarmos a Unidade I, criamos um ambiente de desenvolvimento que será utilizado em toda a disciplina. Tivemos a oportunidade de instalar todos os programas primordiais para o nosso aprendizado e, ao final, rodamos o nosso Servidor Web Localhost para testar os nossos futuros sites. Vimos também uma estrutura que existe por trás de uma página web, necessária para que tenhamos os sistemas rodem na WEB, além de perpassarmos pelos conceitos de HTML e CSS, elementos que estão presentes nesta estrutura e dão sustentação para que o PHP e o MySQL possam de fato utilizar todo o poder da programação. Continue firme nos estudos e nos vemos na próxima Unidade! http://www.w3.org/People/Raggett/book4/ch02.html https://www.youtube.com/watch?v=smC1laH04dI UNIDADE II – PROGRAMAÇÃO PARAWEB COM PHP INTRODUÇÃO Esta unidade inicia os estudos sobre programação para Internet, tratando de temas como Histórico, conceitos iniciais da linguagem de programação PHP, que utilizam os conceitos de Orientação a Objetos, sendo uma das linguagens mais utilizadas em programação. Com uma linguagem simplificada e detalhada, apresentamos também os conceitos de utilização de “arrays”, que serão muito utilizados pelos programadores para sites, sistemas on-line e aplicações web. Por fim, apresentaremos os tipos de operadores usados dentro da linguagem de programação PHP. Teremos ainda muita coisa boa chegando com o decorrer do curso. Vai ser muito bom tê-lo aqui, para estudar e aprimorar-se profissionalmente. Espero que você tenha um bom aprendizado e um excelente aproveitamento! Então vamos lá! Bons estudos! 1. PROGRAMAÇÃO PARAWEB COM PHP 1.1. Introdução à Programação paraWeb Para fazer programação para a web, é preciso, primeiramente, saber o que ela é. A Internet teve o seu início no final dos anos 1960, mediante uma iniciativa do governo americano, especificamente do Departamento de Defesa, que solicitou, para os pesquisadores de várias instituições dos Estados Unidos, a projeção de um sistema de defesa, cuja grande diferença, em relação a outros sistemas já projetados, seria a descentralização e a capacidade de resistir a ataques inimigos, realizados com armas nucleares, em qualquer ponto dos Estados Unidos, sem necessariamente dividir a comunicação do país. A internet surge, então, como uma solução, um sistema em que os dados eram divididos em pacotes, que seriam encaminhados, instantaneamente, por várias rotas disponíveis, ou seja, por um sistema baseado em redes de computadores. Dessa maneira, mesmo se um ou mais computadores dessa rede fossem destruídos ou quando eles não funcionassem mais, esse sistema poderia continuar em operação, ou seja, a comunicação poderia fluir para outros computadores que ainda estivessem ativos. Na prática, os pesquisadores americanos inventaram uma tecnologia voltada para a interligação de computadores, os quais funcionavam em condições precárias de comunicação, e, de maneira simplória, esse conjunto de tecnologias simples, porém extremamente confiável, foi chamado de Internet. Depois disso, esse nome começa a ser usado em 1973, derivado do conceito de “inter-networking” ou interligação de redes, que era estudado pelos pesquisadores americanos desde o ano anterior, mas a rede que conhecemos hoje como Internet só surgiu na década de 1980. 1.1.1. A cronologia da Internet Para você entender melhor como surge a Internet, é interessante acompanhar a sua cronologia desde o nascimento das primeiras ideias relacionadas às redes de computadores até os dias atuais. ● 1957 – A União Soviética lança o Sputnik, primeiro satélite artificial da Terra. Em resposta, os Estados Unidos criam a Advanced Research Projects Agency (ARPA), no Departamento de Defesa (DoD), para estabelecer a liderança dos Estados Unidos na ciência e na tecnologia militar. ● 1969 – No dia 1º de maio, é montado o primeiro equipamento da rede na Universidade da Califórnia, em Los Angeles (UCLA). Fica, então, criado o primeiro ponto de conexão da rede, que se chamava “ARPANET”. Ainda em 1969, são montados os três pontos restantes de conexão. O segundo ponto de conexão é do Instituto de Pesquisas de Stanford, e o terceiro ponto de conexão é o Centro de Pesquisas da Universidade da Califórnia em Santa Bárbara (UCSB) e o da Universidade de Utah. ● 1970 – Primeira publicação do protocolo Host-Host original da ARPA. Há o primeiro artigo da AFIPS sobre a ARPANET. A ALOHAnet é a primeira rede de comutação de dados via rádio. Os servidores da ARPANET começam a usar o Protocolo de Controle de Rede (Network Control Protocol, NCP), com o primeiro protocolo “host-host”. ● 1971 – É inventado o programa de e-mail para enviar mensagens através de rede distribuída. O programa original é derivado de dois outros: um programa de e-mail intra máquina (SENDMSG) e um programa experimental de transferência de arquivo (CPYNET). ● 1978 – Os protocolos TCP-IP são divididos em TCP e IP. ● 1979 – Inauguração da primeira rede dedicada a Grupos de Discussão – USENET. É também lançado o primeiro chat – canal de conversa em tempo real, acrescido da possibilidade de Role Playing Game (RPG). ● 1982 – Bob Kahn e Vint Cerf são os mentores e chefes da equipe que acaba inventando o TCP/IP, uma linguagem comum a todos os computadores da Internet. Pela primeira vez, a coleção de redes espalhadas que constituíam a ARPANET é encarada como uma única rede interligada. As grandes empresas começaram a usar a Internet para comunicarem entre si e com os seus clientes. ● 1983 – Mudança do NCP para TCP/IP. Movement Information Net – MINET (Rede de Movimento de Informação) tem início no começo do ano na Europa, conectado à Internet em setembro. O Conselho das Atividadesda Internet (Internet Activities Board, IAB) é estabelecido, substituindo o ICCB. O ARPANET se divide em ARPANET e MILNET, sendo este último integrado a Rede de Dados de Defesa (Defense Data Network), criada no ano anterior. Os 113 nós existentes vão para MILNET 68. ● 1984 – É introduzido o Sistema de Nome de Domínio (Domain Name System, DNS). ● 1988 – A rede atinge os 60.000 servidores. É concluída a instalação do primeiro cabo de fibra óptica transatlântico, ligando a Europa a América do Norte. Esse cabo pode suportar até 40.000 chamadas telefônicas simultâneas. Surge o primeiro vírus na Internet que tomou a designação de Internet Worm e afeta 6.000 servidores. Para proteger a rede e aumentar a sua segurança, é criado o CERT (Computer Emergency Response Team). Novos termos como “cracker” e “hacker” entram para o vocabulário da Internet. Pelas mãos de Jarkko Oikarinen nasce o IRC – Internet Relay Chat. Canadá, Finlândia, França, Islândia,Noruega, Dinamarca e Suécia ligam-se à Internet. ● 1990 – Surge nos EUA a primeira Internet Service Provider Commercial. Após ter sido absorvida pela Internet, a ARPANET deixa, definitivamente, de existir. Peter Deutsh, Alan Emtage e Bill Heelan da McGill lançam o Archie. O primeiro softwareWorld Wide Web é criado por Tim Berners-Lee. Surgem os primeiros ISP (Internet Service Providers) comerciais. O número de servidores na internet excede os 300.000. Argentina, Áustria, Bélgica, Brasil, Chile, Grécia, Índia, Irlanda, Coreia do Sul, Espanha e Suíça entram na Internet. ● 1991 – Gopher foi lançado na Universidade de Minnesota. ● 1992 – Foi inventada a WWW (World Wide Web) por Tim Berners-Lee, no CERN (Laboratório Europeu de Física de Partículas), em Gênova. A ferramenta de procura no espaço Gopher, VERONICA, é lançada pela Universidade de Nevada. O número de servidores é agora de um milhão. Camarões, Chipre, Equador, Estônia, Kuwait, Luxemburgo, Eslováquia, Eslovénia, Venezuela, Antártida, Letônia, Malásia e Tailândia ligam-se à Internet. ● 1993 – O Mosaic, de Marc Andreessen foi lançado pelo Centro Nacional de Aplicações de Supercomputação dos Estados Unidos (NCSA) e torna-se a primeira implementação de um “browser” para a Internet correr em ambientes Windows, Unix e Macintosh. É criado o InterNIC pela Fundação Nacional de Ciência Americana. A Casa Branca e as Nações Unidas passam a estar on-line. Bulgária, Costa Rica, Egito, Fiji, Gana, Guam, Indonésia, Cazaquistão, Quénia, Liechtenstein, Peru, Romênia, Federação Russa, Turquia, Ucrânia, Ilhas Virgens e Emirados Árabes Unidos ligam-se à rede. ● 1994 – Começou a funcionar o First Virtual, o primeiro banco exclusivamente acessível pela Internet. Jim Clark e Marc Andreessen fundam a Mosaic Communications Corp., que origina a Netscape Communications Corp. Surge a primeira estação de rádio transmitida via Internet. São lançados o Netscape Navigator e o respectivo software de servidor. O número de servidores na net ultrapassava os três milhões. Argélia, Arménia, Bermuda, Burkina Faso, China, Colômbia, Polinésia Francesa, Líbano, Lituânia, Macau, Marrocos, Nova Caledônia, Nicarágua, Nigéria, Panamá, Filipinas, Senegal, Sri Lanka, Suazilândia, Uruguai, Uzbequistão, Jamaica e Jordânia passam a usar a rede. ARPANET/ Internet celebra seu 25º aniversário. Aparecimento das primeiras páginas de comércio eletrônico. Localidades começam a conectar-se diretamente à Internet. WWW supera a Telnet para se tornar o segundo serviço mais popular da rede (atrás da FTP), baseado em porcentagem de distribuição do tráfego de pacotes e em bytes, na NSFNET. Os dez principais domínios por servidor #: com, edu, uk, gov, de, ca, mil, au, org, net. ● 1995 – Os dez principais domínios por servidor #: com, edu, net, gov, mil, org, de, uk, ca, au. Tecnologias do Ano: WWW,mecanismos de procura. Tecnologias Emergentes: Código móvel (JAVA, JAVAscript), ambientes virtuais (VRML), ferramentas de colaboração (Collaborative tools). A NSFNET volta a assumir um caráter exclusivamente acadêmico depois do tráfego de “backbone” da Internet passar para as mãos dos ISP comerciais. Serviços on-line tradicionais começam a oferecer acesso à Internet. As ações do Netscape atingem valores recordes. A WWW ultrapassa o FTP em volume de tráfego na Internet. Lançamento do MS Internet Explorer 2.0 para Windows 95. James Gosling e uma equipe de programadores da SUN Microsystems lançam o Java – linguagem de programação orientada para a Internet. Entram na rede a Etiópia, Costa do Marfim, Cook Islands, Cayman Islands, Anguilla, Gibraltar, Vaticano, Kiribati, Kyrgyzstan, Madagáscar, Maurícias, Micronésia, Mônaco, Mongólia, Nepal, Nigéria, Samoa Oriental, San Marino, Tanzânia, Tonga, Uganda e Vanuatu. ● 1996 – É lançado o Netscape Navigator 2.0, que se torna o primeiro web browser a suportar o JavaScripts. Na rede, três empresas de serviço de procura lançam as suas ações no mercado – são elas a Yahoo, a Excite e Lycos. Bill Clinton aprova leis de telecomunicações no sentido de penalizar a distribuição de conteúdo “inadequado” na Internet. A Internet pela TV – web TV – é uma realidade. Os motores de pesquisa, a Internet Phone e a linguagem Java são as tecnologias do ano. A Internet fica com quase dez milhões de servidores on-line, além de aproximadamente quarenta milhões de utilizadores em 150 países. Qatar, República Centro-Africana, Omã, Norfolk Island, Tuvalu, Polinésia Francesa, Síria, Aruba, Camboja, Guiana Francesa, Eritreia, Cabo Verde, Burundi, Benin, Bósnia-Herzegovina, Andorra, Guadalupe, Guernsey, Isleof Man, Jersey, Laus, Maldivas, Ilhas Marshall, Mauritânia, Ilhas Marianas do Norte, Ruanda, Togo, Iémen e Zaire ligam-se à rede. ● 1997 – Tecnologias emergentes: Push, Streaming Media. AAmerica On-line Inc. adquire a Netscape Communications Corporation por um valor cifrado em 4,2 bilhões de dólares. Os selos postais eletrônicos tornam-se uma realidade com o US Postal Service, que permite a compra e download para impressão a partir da web. A Microsoft é processada pela justiça americana, com base na Lei Antitruste, sob a alegação de prejudicar a concorrência, pois o Windows 98 distribui gratuitamente o “browser” Internet Explorer. As tecnologias mais relevantes desse ano foram o e-Commerce, e-Auctions, Portais de Entrada e o XML. ● 1998 – Tecnologias do ano: Comércio Eletrônico, Leilões on-line, Portais. A Abilene, a rede Internet 2, atravessa o Atlântico e conecta-se a NORDUnet e a SURFnet. Surge a ISTF – Internet Societal Task Force, liderada por Vint Cerf, com o objetivo de promover questões sociais e preocupações relacionadas com a Internet. As tecnologias do ano foram o e-Trade, On-line Banking e o MP3. A Palestina entra na rede. ● 2000 – Avanços na Internet, aumento do número de usuários, Internet para dispositivos móveis. ● Dias atuais – A Internet continua a expandir constantemente no planeta. O número de serviços aumenta sem precedentes. 1.2. O que é PHP? O PHP é a linguagem de desenvolvimento da web escrita por e para desenvolvedores. PHP significa: Hypertext Preprocessor ou Pré-processador de hipertexto. O produto é originalmente chamado de Personal Home Page Tools, e muitas pessoas ainda pensam que é isso que o acrônimo representa, mas conforme ocorre a sua expansão em escopo, um nome novo e mais apropriado torna-se necessário, embora GNU-ishly recursivo tenha sido selecionado pelo voto da comunidade. O PHP está atualmente em sua sétima reescrita principal, chamada PHP 7 ou simplesmente PHP. O PHP é uma linguagem de “script” usada para o desenvolvimento de aplicações que existem e atuam ao lado do servidor. Embora essa utilização seja a mais comum, ela pode ser incorporada em HTML ou usada como um binário autônomo também. Os produtos proprietários nesse “nicho” são as Active Server Pages da Microsoft, o Macromedia ColdFusion e Java Server Pages da Sun. Alguns jornalistas de tecnologia costumavam chamar o PHP de “código aberto ASP”, porque a sua funcionalidadeé semelhante à do produto da Microsoft. Entretanto essa formulação é enganosa, já que o PHP foi desenvolvido antes do ASP. Nos últimos anos, o PHP e o Java, ao lado do servidor, ganham força, enquanto o ASP perde o “mindshare”, por isso, essa comparação não parece mais apropriada. No momento, podemos pensar o PHP como uma coleção de tags super HTML ou pequenos programas que são executados dentro de suas páginas da web – exceto ao lado do servidor, antes de ser enviado para o navegador. Por exemplo, você pode usar o PHP para adicionar cabeçalhos e rodapés comuns a todas as páginas de um site ou para armazenar dados enviados por formulários em um banco de dados. Estritamente, o PHP tem pouco a ver com layout, eventos, manipulação de DOM On-the-fly ou com qualquer coisa que uma página da web possa ter. Na verdade, a maior parte do que o PHP faz é invisível para o usuário final. Alguém que olhe para uma página com essa linguagem não será necessariamente capaz de dizer se ela não foi escrita apenas em HTML, porque, de modo geral, o resultado do PHP é HTML. O PHP é um módulo oficial do Apache HTTP Server, o servidor web líder de mercado que executa cerca de 67% da World Wide Web (de acordo com a amplamente citada pesquisa de servidor da web da Netcraft). Isso significa que o mecanismo de “script” PHP pode ser incorporado ao próprio servidor web, levando a um processamento mais rápido, alocação de memória mais eficiente e manutenção simplificada. Como o Apache Server, o PHP é totalmente multiplataforma, o que significa que é executado em vários servidores indo do Linux, passando pelo Windows e chegando até o Mac OS (a partir da versão X). Todos os projetos sob a égide da Apache Software Foundation – incluindo o PHP – são programas open source. 1.2.1. Uma breve história do PHP No outono de 1994, o PHP é criado por Rasmus Lerdorf, engenheiro de software, membro da equipe Apache. A primeira parte do PHP é desenvolvida para uso pessoal no final de 1994. As versões iniciais são um wrapper CGI que o ajuda a acompanhar as pessoas que visitam o seu site pessoal. Já a primeira versão é disponibilizada no início de 1995, conhecida como Ferramentas Pessoais de Página Inicial, cujo pacote, chamado Personal Home Page Tools (também conhecido como PHP Construction Kit), surge como resposta à demanda de usuários que haviam descoberto o seu trabalho por acaso ou por indicação. Consistia em um mecanismo de análise muito simples, pois compreendia apenas alguns macros especiais e vários utilitários comuns nas páginas iniciais da época, como um livro de visitas, um contador, entre outros. Depois disso, o analisador é reescrito em meados de 1995 e denominado PHP/FI Versão 2. O FI surge por intermédio de outro pacote que Rasmus havia escrito, que interpretava os dados do formulário HTML. Ele combina os “scripts” das ferramentas Personal Home Page com o Form Interpreter, adicionando o suporte SQL. Com isso, o PHP/FI nasce. Esse código cresce a um ritmo incrível, devido à contribuição das pessoas, até porque, em meados de 1997, o PHP é usado por aproximadamente 50.000 sites em todo o mundo, tornando-se, de maneira clara, grande demais para que qualquer pessoa o administre sozinha (mesmo que fosse alguém tão concentrado e enérgico quanto Rasmus). Por isso, uma pequena equipe de desenvolvimento principal começa a executar um projeto de modelo “benevolent junta” e de código aberto, com contribuições de desenvolvedores e usuários em todo o mundo, por exemplo, Zeev Suraski e Andi Gutmans, os dois programadores israelenses que desenvolveram os analisadores PHP3 e PHP4, também generalizam e estendem o seu trabalho sob a rubrica de Zend.com (Zeev, Andi, Zend). O quarto trimestre de 1998 inicia um período de crescimento explosivo para PHP, já que todas as tecnologias de código aberto desfrutam, nesse momento, de uma publicidade massiva. Em outubro de 1998, de acordo com o melhor palpite, pouco mais de 100.000 domínios únicos usavam o PHP de alguma forma. Pouco mais de um ano depois, o PHP quebra a marca de um milhão de domínios. No primeiro semestre de 2000, o número aumentou para cerca de dois milhões de domínios e, no decorrer do século, aproximadamente 15 milhões de servidores da web públicos (no sentido de software, não o sentido de hardware) têm o PHP instalado. As implementações de PHP público variam de sites de mercado de massa, como o Excite Webmail e o Indianapolis 500 – Indianapolis Motor Speedway, que oferecem milhões de visualizações de página por dia, por meio de sites “Nicho de massa”, como o Sourceforge.net e Epinions.com, que tendem a ter maiores necessidades de funcionalidade e centenas de milhares de usuários para sites de e-commerce e de livros como a Harvard.com emuito mais. Já em sua versão PHP 5, há o esforço de oferecer algo que muitos usuários têm clamado nos últimos anos: funcionalidade muito melhorada de programação orientada a objetos (OOP). O PHP, anteriormente, concordava com o modelo de programação de objetos com funções que permitiam que os seus programadores obtivessem resultados e informações de modo mais familiar. No entanto, esses esforços ficam aquém do ideal de muitos programadores, pois forçar o PHP a construir sistemas totalmente orientados a objetos pode ser problemático, gerando, muitas vezes, resultados não intencionais e prejudiciais para o desempenho. Por isso, o modelo de objeto reconstruído pela versão 5 aproxima o PHP de outras linguagens orientadas para objetos, como o Java e C ++, oferecendo suporte para recursos como a sobrecarga, interfaces, variáveis e métodos de membros privados e outras construções padrões. Quanto à versão 6, ela não chegou e nem chegará a ser lançada como uma versão do PHP, pois o seu objetivo é o de corrigir as falhas, apontadas na versão 5.2 e versões anteriores, que não tinham o suporte nativo Unicode. Em 2005, um grande grupo de trabalho é construído para desenvolver uma versão PHP 6 com suporte, mas, em 2009, é lançada a versão 5.3 com algumas funcionalidades, previstas para o PHP 6, só que sem o suporte Unicode. Então, os recursos que supostamente seriam incorporados, na versão PHP 6, são integrados a partir das versões 5.3 e 5.4, sendo a razão pela qual o PHP 6 deixou de fazer sentido como uma versão principal. Contudo, esse assunto não foi pacífico, nem chegou a ser uma matéria discutida entre os programadores. Assim, desde 2014, a versão posterior a 5.x, que deveria ser designada como PHP 7, acaba sendo adotada. Por sua vez, a versão PHP 7 é lançada, definitivamente, no final de 2015. Apesar da introdução dessa versão, espera-se que demore algum tempo até que ela seja usada, haja vista que há um período de adaptação. Contudo, para facilitar o aprendizado, a versão PHP 5 será utilizada para o conteúdo e os exemplos apresentados nesta Unidade. 2. TIPOS DE “ARRAYS” 2.1. Os Usos de “Arrays” Um “array” é uma coleção de variáveis indexadas e agrupadas em uma única super variável que é facilmente referenciada. Oferece uma maneira fácil de passar vários valores entre linhas de código, funções e até mesmo páginas. Vale a pena listar as maneiras comuns pelas quais os “arrays” são usados no código PHP real. Muitas variáveis de ambiente PHP estão embutidas na forma de matrizes, como $_SESSION, com todos os seus nomes e valores propagados de uma página para a outra, mediante o mecanismo de sessão do PHP. Por isso, se você quiser acessá-las, é preciso entender, no mínimo, como fazer referência às matrizes, pois a maioria das funções de banco de dados transporta as suas informações por intermédio de matrizes, criando um pacote compacto de bloco de dados arbitrário. É fácil transmitir conjuntos inteiros de argumentos de formulário HTML entre uma página e outra em uma única matriz, sendo os “arrays” um bom contêiner para fazer manipulações (classificação, contagem, assim por diante) de todos os dados que você desenvolve ao executar o “script” de uma única página. Quasetoda situação exige que um número de dados seja empacotado e tratado como é apropriado para um “array” PHP. 2.2. A propósito, o que são “Arrays” PHP? “Arrays” PHP são matrizes associativas com um pouco de maquinário extra inserido. A parte associativa significa que as matrizes armazenam os valores de elemento com valores de chave, ao invés de uma ordem de índice linearmente restrita. Se você viu “Arrays” em outras linguagens de programação, é provável que elas tenham sido matrizes vetoriais, em vez de matrizes associativas – a seguir faremos uma explicação sobre essa diferença. Se você armazenar um elemento em uma “Arrays” associativa com uma chave, será preciso o valor da chave para recuperá-lo mais tarde. Por exemplo, o armazenamento é assim: $state_location [‘San Mateo’] = ‘California’; Ele armazena o elemento “California” na variável de array $state_location, em associação à chave de pesquisa “San Mateo”. Após isso ter sido armazenado, você poderá procurar o valor armazenado, usando a chave, como: $state = $state_location [‘San Mateo’]; // equals ‘Califórnia’; Simples, não? Se tudo o que você deseja no “Arrays” é armazenar pares de chave/valor, as informações anteriores é tudo o que você precisa saber. Da mesma forma, se você associar uma ordem numérica a um monte de valores, tudo o que você precisa fazer é usar inteiros como valores chave, como no código a seguir: $meu_array [1] = “A primeira coisa”; $meu_array [2] = “A segunda coisa”; // e assim por diante... Em primeiro lugar, esclarecemos que não apenas variáveis escalares, mas todas as variáveis no PHP são denotadas com um $ inicial. Em segundo, mesmo que a matriz seja associativa, os índices são agrupados por colchetes ([ ]) ao invés de chaves ({ }). Por fim, não há tipo de matriz ou lista indexada apenas por números inteiros. A convenção é usar inteiros como índices associativos, até porque o próprio “array” mantém uma ordenação interna para umaiteração. Além do mecanismo que possibilita esse tipo de associação de chave/valor, os “arrays” rastreiam algumas outras coisas nos bastidores. Por causa disso, às vezes os tratamos como outros tipos de estruturas de dados. Como veremos, os “arrays” podem ser multidimensionais, pois podem armazenar valores em associação com uma sequência de valores-chave, não apenas em uma única chave. De maneira automática, as matrizes também mantêm uma lista ordenada dos elementos que foram inseridos nelas, independentemente de quais são os valores-chave, o que possibilita tratar matrizes como listas vinculadas. Em geral, revelaremos o funcionamento desse maquinário extra conforme exploramos as funções que o utilizam. 2.3. Criando “Arrays” Simples Existem três maneiras principais de criar um “array” no “script” PHP: atribuindo um valor em um (criando-o implicitamente), usando a construção array() e chamando uma função que retorna um “array” como o seu valor. 2.4. Atribuição Direta A maneira mais simples de criar um “Array” é agir como se uma variável já fosse uma matriz, atribuindo-lhe um valor, como segue: $meu_array [1] = “A primeira coisa em meu array que acabei de criar”; Se $meu_array for uma variável não vinculada (ou vinculada a uma variável “no- narray”), antes dessa instrução, ela será, depois, uma variável vinculada a uma matriz com um elemento. Se esse não for o caso, a matriz será armazenada em associação com a chave inteira. Se nenhum valor estiver associado a esse número, um novo “array” de matriz será criado para mantê-lo; e se o valor estiver associado a 1, o valor anterior será sobrescrito. Você também pode atribuí-lo a uma matriz, omitindo o índice inteiramente como em $meu_array[ ]. 2.5. A Construção “Array()” A outra maneira de criar um “array” é através da Construção Array(), que cria um novo “array” a partir da especificação de seus elementos e chaves associadas. Em sua versão mais simples, array() é chamado sem argumentos, o que cria um novo “array” vazio. Em sua próxima versão mais simples, array() pega uma lista de elementos a serem armazenados, separada por vírgula, sem qualquer especificação de chaves. O resultado é que os elementos são armazenados na matriz, em ordem especificada, e atribuídos a chaves inteiras, começando com zero. Por exemplo, a declaração: $cesto_de_frutas = array (‘maça’, ‘laranja’, ‘banana’, ‘pera’); faz com que a variável $cesto_de_frutas seja atribuída a um “array” com quatro elementos “String” (maçã, laranja, banana, pera), com os índices 0, 1, 2 e 3, respectivamente. Além disso, o “array” se lembrará da ordem de armazenamento do elementos. A atribuição para $cesto_de_frutas, então, tem exatamente o mesmo efeito que o seguinte: $cesto_de_frutas [0] = ‘maça’; $cesto_de_frutas [1] = “laranja”; $cesto_de_frutas [2] = “banana”; $cesto_de_frutas [3] = “pera”; Isso porque supomos que a variável $cesto_de_frutas estava desassociada da primeira atribuição. O mesmo efeito também poderia ter sido obtido pela omissão dos índices na tarefa, da seguinte forma: $cesto_de_frutas [] = ‘maça’; $cesto_de_frutas [] = “laranja”; $cesto_de_frutas [] = “banana”; $cesto_de_frutas [] = “pera”; Nesse caso, o PHP assume, novamente, que você está adicionando elementos sequenciais que devem ter índices numéricos, contados para cima, a partir de zero. 2.6. Especificando Índices Usando “Array()” O exemplo simples de array(), na seção anterior, atribui índices aos nossos elementos, que serão inteiros, contados para cima, a partir de zero. Acontece que o array() nos oferece uma sintaxe especial para especificar quais devem ser os índices. Em vez de valores de elementos separados por vírgulas, você fornece pares de valor-chave separados por vírgulas, em que a chave e o valor são separados pelo símbolo especial =>. Considere a seguinte declaração: $cesto_de_frutas = array (0 =>’ maca ‘, 1 =>’ laranja ‘, 2 =>’ banana ‘, 3 =>’ pera ‘); Essa avaliação tem exatamente o mesmo efeito que a nossa versão anterior – cada “string” é armazenada na matriz sucessivamente, com os índices 0, 1, 2, 3, em ordem. Em vez disso, no entanto, podemos usar exatamente a mesma sintaxe para armazenar esses elementos com diferentes índices: $cesto_de_frutas = array (‘vermelho’ => ‘maçã’, ‘laranja’ => ‘laranja’, ‘amarela’ => ‘banana’ ‘verde’ => ‘pera’); Isso nos dá os mesmos quatro elementos, adicionados ao nosso novo “array”, na mesma ordem, mas, ao invés de números, são indexados por nomes de cores. Para recuperar o nome do fruto amarelo, por exemplo, nós apenas avaliamos a expressão: $cesto_de_frutas [amarela] // será igual a ‘banana’. Finalmente, como dissemos anteriormente, você pode criar um “array” vazio, chamando a função de “array” sem argumentos, por exemplo: $meu_array_vazio = array ();. Essa construção cria um “array” sem elementos, a qual pode ser útil para passar para uma função que espera uma matriz como argumento. 2.7. Funções Retornando “Arrays” A maneira final de criar um “array” em um “script” é chamar uma função que retorna um “array”. Essa pode ser uma função definida pelo usuário, ou pode ser uma função interna que faz um “array” via métodos internos ao PHP. Muitas funções de interação com banco de dados, por exemplo, retornam seus resultados em “arrays” que as funções criam na hora. Outras funções existem simplesmente para criar “arrays” úteis para ter funções posteriores e para a sua manipulação. Uma delas é range(), que recebe dois inteiros como argumentos e retorna uma matriz preenchida com todos os inteiros, inclusive, entre os argumentos. Em outras palavras: $meu_array = range (1,5) é equivalente a: $meu_array = array (1, 2, 3, 4, 5). 2.8. Recuperando Valores Depois de armazenarmos alguns valores em uma matriz, como podemos obtê-los novamente? 2.8.1. Recuperando por índice A maneira mais direta de recuperar um valor é pelo uso de seu índice. Se um valor em $meu_array for armazenado no índice 5, $meu_array [5] deverá avaliar o valor armazenado. Se $meu_array não tenha sido atribuído,nem armazenado com um índice de 5, $meu_array [5] se comporta como uma variável não ligada. 2.8.2. A construção “list()” Há várias outras maneiras de recuperar valores de “arrays” sem usar chaves, sendo que a maioria explora o fato de que os “arrays” estão registrando, silenciosamente, a ordem na qual os elementos são armazenados. Um desses exemplos é “list()”, que é usado para atribuir vários elementos de matriz às variáveis em sucessão. Suponha que as duas instruções a seguir sejam executadas: $cesto_de_frutas = array (‘maca’, ‘laranja’, ‘banana’); lista ($fruta_vermelha, $fruta_laranja) = $cesto_de_frutas; Isso atribui o “String” “maçã” à variável $fruta_vermelha; e a “string” “laranja” à variável $fruta_laranja (sem atribuição de “banana”, porque não fornecemos variáveis suficientes). As variáveis em “list()” serão atribuídas aos elementos da matriz, na ordem em que elas foram, originalmente, armazenadas na matriz. Observe o comportamento incomum aqui – a construção “list()” está ao lado esquerdo do operador de atribuição (=), onde normalmente encontramos apenas variáveis. Em certo sentido, “list()” é o oposto ou o inverso de “array()” porque “array()” empacota seus argumentos em um “array”, enquanto “list()” desmonta o “array” novamente em atribuições de variáveis individuais. Avalie: list ($primeiro, $segundo) = array ($primeiro, segundo); Agora perceba que os valores originais de $primeiro e $segundo serão atribuídos a essas variáveis novamente, após terem sido armazenados brevemente em uma matriz. 2.9. “Arrays” Multidimensionais Até agora, os exemplos de “array” que vimos foram todos unidimensionais, isto é, com apenas um nível de chaves entre colchetes. No entanto, o PHP pode suportar facilmente “arrays” multidimensionais, com números arbitrários de chaves. Assim como nos “arrays” unidimensionais, não há necessidade de declarar nossas intenções com antecedência – a primeira referência a uma variável “array” pode ser uma atribuição como: $multi_array [1] [2] [3] [4] [5] = “Tesouro profundamente enterrado”; Ela correponde a uma matriz de cinco dimensões com chaves sucessivas que acontecem, nesse caso, para ser cinco inteiros sucessivos. Na verdade, pensar em matrizes como multidimensionais torna as coisas mais confusas do que precisam ser. Em vez disso, lembre-se de que os valores armazenados em matrizes podem ser matrizes tão legítimas quanto podem ser as cadeias ou os números. A sintaxe de índice múltiplo, no exemplo anterior, é simplesmente uma maneira concisa para referir-se a um “array” (quadridimensional) que é armazenado com uma chave de 1 in $multi_array, que, por sua vez, tem um “array” (tridimensional) armazenado nele, assim por diante. Note também que você pode ter diferentes profundidades de referência em diferentes partes da matriz, como em: $multi_level_array [0] = “uma string simples”; $multi_level_array [1] [‘contains’] = “um String armazenado mais profundamente”; A chave “integer” de 0 armazena um “String”, enquanto a chave de 1 armazena uma matriz que, por sua vez, tem um “String” nela. No entanto, você não pode continuar com esta atribuição: $multi_level_array [0] [‘contém‘] = ‘outra string profunda‘; Sem o resultado perdido, a primeira atribuição será “um String simples”. A chave de 0 pode ser usada para armazenar um “String” ou outra “array”, mas não ambas ao mesmo tempo. Se nos lembrarmos que “arrays” multidimensionais são simplesmente “arrays” que têm outros “arrays” armazenados, seria mais fácil ver como o construtor de criação de “array()” se generaliza. De fato, essa tarefa é apenas aparentemente complicada. Veja: $cornucopia = array (‘fruta’ => array (‘vermelho’ => ‘maçã’, ‘laranja’ => ‘laranja’, ‘amarelo’ => ‘banana ‘, ‘ verde ‘=>’ pêra ‘), ‘flor’=> array (‘ vermelho ‘=> ‘ rosa ‘, ‘ amarelo ‘=>’ girassol ‘, ‘ púrpura ‘=>’ íris ‘)); Esse arranjo é simplesmente um “array” que possui dois valores armazenados em associação a chaves. Cada um desses valores é um “array” em si. Depois de termos feito o array, podemos referenciá-lo assim: $tipo_desejado = ‘flor’; $cor_desejada = “roxo”; print (“O $cor_desejada $tipo_desejado é” $cornucopia [$tipo_desejado [$cor_desejada]); Veja a saída do navegador: A flor roxa é iris Há um motivo pelo qual usamos o operador de concatenação de “String ( . )” na declaração impressa anterior, em vez de simplesmente incorporar a $cornucopia [$tipo_desejado] [$cor_desejada ] em nossa sequência de impressão, como fazemos com outras variáveis. A análise de cadeia de caracteres PHP3 pode ser confundida por vários índices de matriz em uma cadeia de aspas, portanto, ela precisa ser concatenada separadamente. O PHP, desde a versão 4, lida com isso de uma maneira melhor, pois você estará seguro ao inserir referências de “array” em um “String”, desde que você coloque a referência entre chaves, assim: print (‘O que queremos é {$cornucopia [$tipo_desejado [ $cor_desejada]} ‘); Finalmente, observe que não há grande penalidade por indexação indevida em um “array” multidimensional, quando tentamos recuperar algo. Caso nenhuma chave seja encontrada, a expressão será tratada como uma variável não vinculada. Então, tentaremos o seguinte: $tipo_desejado = “fruta”; $cor_desejada = “roxo”; // uh-oh, nós não guardamos nenhuma ameixa print (“$cor_desejada $tipo_desejado é” $cornucopia [$tipo_desejado ] [$cor_desejada ]); 3 . TIPOS DE OPERADORES 3.1. Operadores Aritméticos Os operadores aritméticos, elencados no Quadro 01, só podem ser utilizados quando eles são números (“integer” ou “float”). Se for de outro tipo, os seus valores serão convertidos antes da realização da operação. Quadro 1 – Operadores Aritméticos. Fonte: O autor. 3.2. Operadores de “Strings” Existe apenas um operador de cadeia de caracteres – o operador de concatenação (“.”). Por exemplo: $a = “Olá”; $b = $a.”Mundo!”; // agora $b = “Olá mundo”! 3.3. Operadores deAtribuição O operador de atribuição básico é “=”. A sua primeira inclinação pode ser pensar nisso como “igual a”, mas não. Isso significa que o operando à esquerda é definido como um valor da expressão nos direitos (isto é, “é definido como”). Nesse sentido, o valor de uma expressão de atribuição é o valor atribuído. Ou seja, o valor de “$a = 3” é 3, permitindo que você faça algumas coisas complexas: $a = ($b = 4) + 5; // $a é igual a 9 agora e $b foi definido como 4. Além do operador de atribuição básico, existem “operadores combinados” para todos os operadores aritméticos e para os de cadeia de caracteres binários, que permitem o uso de um valor em uma expressão. Em seguida, o valor do resultado dessa expressão é definido. Por exemplo: $a = 3; $a + = 5; Exemplo Nome Resultado $a + $b Adição Soma de $a e $b. $a - $b Subtração Restante de $b subtraído de $a. $a * $b Multiplicação Produto de $a e $b. $a / $b Divisão Dividendo de $a e $b. $a% $b Modulus Restante de $a dividido por $b. // define $a para 8, como se tivéssemos dito: $a = $a + 5; $b = “ Hello”; $b. = “There!”; // define $b para “Hello There!”, assim como $b = $b. “ There! ”. 3.4. Operadores “bit a bit” Operadores “bit a bit” permitem que você ative ou desative “bits” específicos dentro de um inteiro. Confira os exemplos expostos no Quadro 2. Exemplo Nome Resultado $a & $b And Os “bits” definidos em $a e $b estão definidos. $a | $b Or Os “bits” definidos em $a ou $b estão definidos. ~ $a Not Os “bits” definidos em $a não estão definidos e vice- versa. $a << $b Shift left Mude os “bits” $a e $b passos para a esquerda (cada passo significa “multiplicar por dois”) $a >> $b Shift right Mude os “bits” $a e $b passos para a direita (cada passo significa “dividir por dois”) Quadro 2 – Operadores “bit a bit”. Fonte: O autor. 3.5. Operadores lógicos Sobre os operadores lógicos, observe o Quadro 3, com os seus respectivos exemplos. Exemplo Nome Resultado $a and $b And Verdade se ambos $a e $b são verdadeiros. $a or $b Or Verdade se $a ou $b for verdadeiro. $a xor $b OrVerdadeiro se $a ou $b for verdadeiro, mas não ambos. ! $a Not Verdade se $a não for verdadeiro. $a && $b And Verdade se ambos $a e $b são verdadeiros $a || $b Or Verdade se $a ou $b for verdadeiro. Quadro 3 – Operadores lógicos. Fonte: O autor. Você notou as duas variações diferentes entre os operadores And e Or ? Isso ocorre porque eles operam em precedentes diferentes. 3.6. Operadores de Comparação Os operadores de comparação, como o próprio nome sugere, permite comparar dois valores, como você pode ver no Quadro 4. Quadro 4 – Operadores de comparação. Fonte: O autor. 3.7. Operadores de Expressão Condicional Outro operador condicional é o operador: “ ?: ” (ou trinário). Ele opera como em C e em outras linguagens. A expressão: (expr1)? (expr2): (expr3); retorna para “expr2”, se “expr1” for avaliada como verdadeira, e “expr3”, se “expr1” for avaliada como falsa. 3.8. Operadores de Incremento e Decremento Os operadores de incremento e decremento podem ser utilizados de duas formas: antes ou depois da variável, como elencado no Quadro 5. Quadro 5 – Operadores de Incremento e Decremento. Fonte: O autor. Isso significa que, quando utilizado antes, o valor da variável retorna antes do incremento ou decremento, quando utilizado depois, o valor da variável retorna já incrementado ou decrementado, como pode ser observado nos seguintes exemplos: $a = $b = 10; // $a e $b recebem o valor 10. $c = $a++; // $c recebe 10 e $a passa a ter 11. $d = ++$b; // $d recebe 11, valor de $b já incrementado. 3.9. Operadores de Ordem de Precedência dos Operadores A precedência de um operador é especificada como “estreitamente” ao unir duas expressões. Por exemplo, na expressão 1 + 5 * 3, a resposta não é 18, mas sim 16, porque o operador de multiplicação (“*”) tem uma precedência maior do que o operador de adição (“+”). Dito isso, o Quadro 6 lista a precedência dos operadores, relacionando os operadores de precedência mais baixa, que são listados primeiro. Quadro 6 – Operadores de Ordem de Precedência dos Operadores. Fonte: O autor. SAIBAMAIS Caro(a) aluno(a), para sanar possíveis dúvidas e ter uma visão mais ampla sobre a programação para Internet, pensando em seu aprimoramento profissional, você poderá ler o artigo Como criar minha primeira classe em PHP, disponível na plataforma DevMedia. A partir desse conteúdo, você aprenderá a criar sua primeira classe na linguagem PHP (PHP Class), bem como a usar herança e interfaces, métodos, atributos e propriedades. Você encontrará esse texto disponível em: https://www.devmedia.com.br/como-criar-minha- primeira-classe-em-php/38895. Acesso em: 20 out. 2019. REFLITA O grande inventor Alan Kay, em 1984, afirmou que “O futuro não é definido em uma trilha. É algo que podemos decidir. Na medida em que não violamos quaisquer leis conhecidas do universo, provavelmente, podemos fazê-lo funcionar da maneira que queremos”. Dito isso, caro(a) aluno(a), devemos refletir de que maneira podemos pensar a programação, criar e superar expectativas, para que sempre façamos o nosso melhor? Lembre-se: seja o melhor que você puder ser! Para isso, o aprimoramento deve ser constante. Fonte: Citações e frases famosas. Disponível em: https://citacoes.in/citacoes/1841701-alan- kay-the-future-is-not-laid-out-on-a-track-it-is-somet/. Acesso em: 21 out. 2019. INDICAÇÃO DE LEITURA Veja como integrar o PHP ao MySQL, um dos bancos de dados mais usados no mundo. A dupla PHP e MySQL é usada por diversos tipos de aplicações e sites, de blogs e até portais de notícias e grandes redes sociais. Para tanto, você poderá fazer a leitura da obra: BENTO, E. J. Desenvolvimento web com PHP e MySQL. São Paulo: Casa do Código, 2013. INDICAÇÃO DE VÍDEO Existem muitas razões para usar o PHP para a programação de aplicações web. Em primeiro lugar, é uma linguagem livre, sem taxas de licenciamento, com um custo mínimo. Além disso, você tem a liberdade para escolher o sistema operacional e de servidor web. Para ajudá-lo a planejar os seus estudos, separamos aqui um DevCast em que há algumas dicas para quem está iniciando, disponível em: https://www.devmedia.com.br/guia/programador- php/38193. Acesso em: 15 out. 2019. https://www.devmedia.com.br/guia/programador-php/38193 https://www.devmedia.com.br/guia/programador-php/38193 CONSIDERAÇÕES FINAIS Caro(a) aluno(a), chegamos ao final desta Unidade! Ela foi preparada com muito carinho para você. Nela, alguns conceitos da programação para Internet foram apresentados, como os tipos de “Arrays”, de operadores, além de uma introdução à programação web, feita a partir de uma retrospectiva cronológica da Internet. O conteúdo que foi apresentado na Unidade II foi somente a ponta do iceberg. Por isso, nas próximas unidades, você poderá aprofundar-se mais ainda em conceitos e práticas da programação para Internet. Estaremos juntos na próxima unidade. Até lá! UNIDADE III – TIPOS DE FUNÇÕES E FORMULÁRIOS EM PHP INTRODUÇÃO Na Unidade III, iniciaremos os estudos com uma breve introdução aos tipos de funções. Para realizarmos esse percurso, você verá a definição de uma função e os seus argumentos. Além disso, haverá um estudo aprofundado e específico sobre o recebimento de formulários e a sua utilização na programação para Internet. Portanto, continue seus estudos, pois preparamos muita coisa boa, com um conteúdo preparado justamente para proporcioná- lo mais conhecimentos e um direcionamento para a sua carreira profissional. Então, vamos lá! Agora é mão na massa! 1. TIPOS DE FUNÇÕES 1.1. Introdução à Função O que é uma função? Uma função é uma maneira de quebrar um pedaço de código e nomeá-lo, para que, depois, você possa usá-lo em apenas uma linha de código. As funções são mais úteis quando você utiliza o código em mais de um lugar, mas elas são proveitosas também em situações de uso único, porque podem transformar o seu código em algo muito mais legível (CONVERSE; PARK; MORGAN, 2004). 1.1.1. Definição de função A sintaxe básica para definições de função tem a forma a seguir, expressa na Figura 1. Figura 1 – Exemplo de definição de função. Fonte: O autor. As definições de função têm quatro partes: 1) A função de palavra especial. 2) O nome que você quer dar para a sua função. 3) A lista de parâmetros da função – variáveis de sinal de dólar, separadas por vírgulas. 4) O corpo da função – um conjunto de instruções anexo. Além disso, assim como os nomes de variáveis, o nome da função deve ser composto de letras, números e sublinhados. Ele não deve começar com um número. Ao contrário dos nomes das variáveis, os nomes das funções são convertidos para letras minúsculas antes de serem armazenados internamente pelo PHP. Portanto, uma função é a mesma, independentemente da capitalização. Segue a versão curta do que acontece quando uma função é definida pelo usuário: O PHP procura uma função pelo seu nome (você receberá um erro caso a função ainda não tenha sido definida). O PHP substitui os valores dos argumentos de chamada (ou os parâmetros reais) pelas variáveis na lista de parâmetros da definição (ou nos parâmetros formais). As declarações são executadas no corpo da função. Quando alguma das instruções executadas for uma instrução de retorno, a função para e retorna o valor fornecido, senão a função será concluída após a execução da última instrução, sem retornar um valor. 1.2.Exemplo de Definição de Função Como exemplo de definição de função, imagine que temos um código que ajuda os compradores de supermercado a decidirem qual é o tamanho de refrigerante engarrafado que compensa ser comprado. Isso quando, em algum momento, esses consumidores rotineiramente usam os seus navegadores da web para acessar o nosso prático site de comparação de preços. Figura 2 – Exemplo de definição de função. Fonte: O autor. A Figura 2 apresenta o código do exemplo, esclarecendo como a comparação pode acontecer em nosso site o tempo todo. Ao observá-lo, perceba que uma boa prática de programaçãoé propiciar uma função reutilizável. Assim, uma maneira de fazer isso seria a seguinte reescrita: Figura 3 – Exemplo de definição de função reescrita. Fonte: O autor. Nossa função melhor_negocio, apresentada na Figura 3, abstrai as três linhas do código anterior que fizeram a aritmética e a comparação. Leva quatro números como argumentos e retorna o valor de uma expressão booleana. Como acontece com qualquer valor booleano, podemos incorporá-lo na parte de teste de uma instrução “if”. Embora essa função seja maior que o código original, há dois benefícios para essa reescrita: 1) a função é usada em vários lugares (salvando as linhas no geral); 2) a alteração é feita em apenas um lugar, caso o cálculo seja alterado. Alternativamente, se a única maneira de usarmos essas comparações de preço fosse imprimir a transação preferida, poderíamos incluir, então, a impressão na função, conforme Figura 4. Figura 4 – Outro exemplo de definição de função. Fonte: O autor. Nossa primeira função, a declaração de retorno, é usada para enviar de volta um resultado booleano, usado em um teste “if”. A segunda função não tem declaração de retorno, porque é usada para o efeito colateral de imprimir texto no navegador do usuário. Quando a última declaração dessa função é executada, o PHP simplesmente passa a executar uma próxima instrução após uma chamada de função. 1.2.1. Argumentos da função As informações podem ser passadas para as funções através da lista de argumentos, que é uma lista delimitada por vírgulas de variáveis e/ou constantes. O PHP suporta a passagem de argumentos por valor (o padrão), por referência e por valores de argumento padrão. Listas de argumentos de tamanho variável não são suportadas, mas um efeito similar pode ser obtido pela passagem de “arrays”. Um exemplo de argumento da função pode ser visto na Figura 5. Figura 5 – Exemplo de argumentos da função. Fonte: O autor. 1.3.1. Passagem de argumentos por referência Por padrão, os argumentos da função são passados por valor. Se você alterasse o valor do argumento dentro da função, ele não seria alterado fora da função, mas, se você desejasse que uma função possa modificar os seus argumentos, você deveria passá-los por referência. Além disso, se você quisesse que um argumento de uma função fosse sempre passado por referência, você poderia preceder um & para o nome do argumento na definição da função, como Figura 6. Figura 6 – Exemplo de passagem de argumentos por referência. Fonte: O autor. Por fim, quando você quiser passar uma variável por referência para uma função que não faz isso por padrão, você pode preceder um & ao nome do argumento na chamada de função, conforme a Figura 7. Figura 7 – Exemplo de passagem de argumentos por referência. Fonte: O autor. 1.3.2. Argumentos com valores pré-definidos (padrão) Uma função pode definir valores padrão no estilo C ++ para argumentos escalares da seguinte forma: Figura 8 – Exemplo de argumentos com valor padrão. Fonte: O autor. A saída do fragmento da Figura 8 é: Fazendo uma xícara de cappuccino. Fazendo uma xícara de café expresso. O valor padrão deve ser uma expressão constante, não, por exemplo, uma variável ou membro de classe. Observe que, ao usar um argumento padrão, qualquer padrão deve estar ao lado direito de qualquer argumento não padrão, caso contrário, as coisas não funcionarão como esperado. Dito isso, considere o seguinte trecho de código: Figura 9 – Exemplo de Argumentos com Valores Padrão. Fonte: O autor. A saída do exemplo expresso na Figura 9 é: Atenção: Falta o argumento 2 na chamada demakeyogurt () em /usr/local/etc/httpd/ htdocs/php3test/functest.html on line 41 Fazendo uma tigela de framboesa. Agora, compare o que foi exposto no trecho anterior com o que é apresentado na Figura 10: Figura 10 – Exemplo de Argumentos com Valores Padrão. Fonte: O autor. A saída desse exemplo é: Fazendo uma tigela de framboesa acidophilus. 2. RECEBENDO DADOS DE FORMULÁRIOS 2.1. Introdução ao Formulário PHP O manuseio de formulários é um dos melhores recursos do PHP. Uma combinaçãode HTML para construir um formulário de entrada de dados PHP e manipular os dados, bem como um servidor de banco de dados para armazenar os dados estão no cerne de todos os tipos de tarefas da web que são extremamente úteis. 2.2. Formulários HTML Você já sabe muito do que precisa para manipular formas no PHP, mas existem alguns pontos específicos a serem apresentados quando falamos de formulários: ● Sempre use um NOME para cada elemento de entrada de dados input, “select”, “textarea”, assim por diante. O atributo “NAME” se tornará os nomes de variáveis PHP. Você não poderá acessar os seus valores se não usar esse atributo para cada um deles. ● Um campo de formulário “NAME” não precisa ser igual ao nome do campo de banco de dados correspondente, mas, em geral, essa é uma boa prática. ● Você poderá e deverá especificar um valor ao invés de deixar o HTML enviar o valor padrão. Considere, se possível, substituir um valor numérico por um valor de texto, porque o banco de dados é muito mais lento em sequências de caracteres correspondentes do que de inteiros. ● O valor pode ser definido para os dados que você deseja exibir no formulário. ● Lembre-se de que você pode passar variáveis ocultas de um formulário para outro ou página, usando os elementos de entrada de dados HIDDEN. Essa prática poderá ter implicações de segurança negativas, mas, normalmente, ela não é pior do que armazenar os dados em um “cookie”. ● Você pode passar múltiplas variáveis para um “array”, mas precisará informar o usuário dessa possibilidade (CONVERSE; PARK; MORGAN, 2004). Ademais, uma das dúvidas mais frequentes entre os desenvolvedores iniciantes em PHP é como manipular os dados de formulário enviados para os “scripts” PHP, principalmente osdados de “checkbox” e upload de arquivos. Para esclarecermos essa dúvida, é preciso saber que um formulário HTML é apenas uma tela bonita, na qual os usuários poderão inserir informações que serão interpretadas, de alguma maneira, por um “script” em um determinado servidor. Em nosso caso, esse “script” seria um PHP. Então, em primeiro lugar, o formulário deverá conter o botão Submit, através do comando apresentado na Figura 11. Figura 11 – Exemplo do comando de envio com o botão Submit. Fonte: O autor. Segundo, todos os campos que serão tratados no “script” PHP deverão conter o parâmetro “NAME”, caso contrário, os dados não serão passados para o “script” PHP, conforme apresentado na Figura 12. Figura 12 – Exemplo de “script” PHP com parâmetro “NAME”. Fonte: O autor. Deperá de você a maneira como as informações do formulário serão passadas para esse “script” PHP e como as informações do formulário enviado serão tratadas. Por isso, é necessário que você conheça os dois métodos que poderão ser usados: GET e POST. O recomendável para todos os formulários é sempre utilizar o método POST, pois, dessa modo, os dados enviados não são visíveis em URL, ocultando importantes informações e permitindo o envio de longas informações. Já o GET é totalmente o contrário disso. Você deve estar se perguntando “como as informações chegam para o ‘script’ PHP?” Figura 13 – Exemplo de formulário HTML. Fonte: O autor. O formulário apresentado na Figura 13 utiliza o método POST para enviar as informações em um “script.php”: Figura 14 – Uso de método POST para envio de formulário. Fonte: O autor. Na Figura 14, vemos um exemplo de como utilizar o formulário criado na Figura 13. Quando o formulário for enviado usando o método GET, você simplesmente usará $_GET no lugar de $_POST. Em vez de usar $_GET ou $_POST, você poderia escrever a variável com o mesmo nome do campo de formulário (no exemplo, $campo1 e $campo2). Entretanto esse uso não é recomendado, pois, se a diretiva “register_globals”, na configuração do seu PHP, estiver desativada, as variáveis com nome dos campos dos formulários terão um valor vazio. Sendo assim, uma possível
Compartilhar