Você está na página 1de 121

Diretor Geral

Gilmar de Oliveira

Diretor de Ensino e Pós-graduação


Daniel de Lima

Diretor Administrativo
Eduardo Santini

Coordenador NEAD - Núcleo


de Educação a Distância
Jorge Van Dal

Coordenador do Núcleo de Pesquisa UNIFATECIE Unidade 1


Victor Biazon Rua Getúlio Vargas, 333,
Centro, Paranavaí-PR
Secretário Acadêmico (44) 3045 9898
Tiago Pereira da Silva
UNIFATECIE Unidade 2
Rua Candido Berthier
Projeto Gráfico e Editoração Fortes, 2177, Centro
André Oliveira Vaz Paranavaí-PR
(44) 3045 9898
Revisão Textual
Kauê Berto UNIFATECIE Unidade 3
Rua Pernambuco, 1.169,
Web Designer Centro, Paranavaí-PR
Thiago Azenha (44) 3045 9898

UNIFATECIE Unidade 4
BR-376 , km 102,
FICHA CATALOGRÁFICA Saída para Nova Londrina
Paranavaí-PR
FACULDADE DE TECNOLOGIA E
(44) 3045 9898
CIÊNCIAS DO NORTE DO PARANÁ.
Núcleo de Educação a Distância;
VIEIRA, Ricardo Bortolo. www.fatecie.edu.br
Programação para Internet. Ricardo. Bortolo Vieira.
Paranavaí - PR.: Fatecie, 2020. 121 p.
As imagens utilizadas neste
Ficha catalográfica elaborada pela bibliotecária livro foram obtidas a partir
Zineide Pereira dos Santos. do site ShutterStock
AUTOR

Professor Me. Ricardo Bortolo Vieira

● Graduação em Ciência da Computação pela Universidade Estadual de Maringá


(2003).
● Especialização de Engenharia de Software pela Universidade Estadual de Lon-
drina (2007).
● MBA em Gestão em Saúde Suplementar pela São Marcos (2009).
● Especialização de Gerência de Projetos pela Fundação Getúlio Vargas (2011).
● Mestre em Desenvolvimento de Tecnologias pelo Instituto LACTEC.(2017)
● Doutorando em Informática para PUCPR .
● Gerente de Desenvolvimento de software e profissional do mercado de TI a
mais de 12 anos.
● Professor de nível superior da Faculdade Cidade Verde de Maringá (FCV),
Universidade Federal do Paraná (UFPR), Faculdade de Engenharia e Inovação
Tecnológica (FEITEP), Fundação Getúlio Vargas (FGV) e Pontifícia Universida-
de Católica (PUC).
● Experiência na área de Ciência da Computação, com ênfase em Sistemas de
Computação e Automação e Robótica, além de experiência em Administração
com ênfase em Gerenciamento de Projetos.
● Lattes: http://lattes.cnpq.br/5731213234468142
APRESENTAÇÃO DO MATERIAL

Seja muito bem-vindo(a)!


Olá prezado(a) aluno(a), este é o livro Programação para INTERNET, sou o
professor Ricardo Vieira, autor deste material, e o assunto que abordarei no decorrer do
nosso estudo poderá auxiliá-lo em sua carreira, ou abrir portas para o mundo dos negócios,
mostrando-lhe como é bom trabalhar com desenvolvimento para Internet. Com o passar do
tempo, as ferramentas para desenvolvimento foram tornando-se mais simples, rápidas e
robustas.
Meu objetivo, por meio deste livro, é ensiná-lo como funcionam os detalhes deste
ambiente de desenvolvimento, que é bem diferente de uma programação monolítica focada
somente no computador. Além disso, algumas técnicas que podem auxiliá-lo neste processo
também serão apresentadas.
Pretendo deixar claro que o uso desse ambiente de desenvolvimento poderá aju-
dá-lo a alcançar os objetivos estratégicos de sua empresa ou auxiliá-lo a colocar em prática
uma nova ideia.
Este livro está organizado em quatro unidades, além da introdução e conclusão.
Cada uma delas correspondendo a uma das partes importante na programação orientada
a objetos.
Na primeira unidade você irá estudar o histórico e conceitos da Internet e da Lin-
guagem PHP, que será utilizada neste livro.
Já na unidade II você poderá constatar que a Linguagem PHP pode trabalhar com
funções e todas as suas valorizações. Além disso, veremos a recepção de informações no
Formulário, grande padrão utilizado na internet para troca de informações, e as validações
neste formulário.
Depois, na unidade III, falaremos sobre o Banco de Dados, seus padrões, formatos
e linguagens específicas que permitem ao desenvolvedor terceirizar e garantir a segurança
dos dados que serão mantidos pelo sistema web que está sendo desenvolvido. No mais,
será tratado também a forma de comunicação entre o PHP e os bancos de dados existentes
no mercado. Nesta unidade III será usando o banco MySQL como base para a apresenta-
ção dos conceitos de banco de dados. Na unidade IV, vamos estudar a orientação a objetos
dentro da linguagem PHP e também falaremos sobre Web Services e a facilidade que a
linguagem PHP tem com padrões como REST, XML-RPC e SOAP.
Agora, vamos ao que interessa! Tenha um bom estudo e uma boa leitura!
SUMÁRIO

UNIDADE I....................................................................................................... 6
Programação para a Internet

UNIDADE II.................................................................................................... 35
Programação para a Internet

UNIDADE III................................................................................................... 61
Programação para a Internet

UNIDADE IV................................................................................................... 86
Programação para a Internet
UNIDADE I
Programação para a Internet
Professor Mestre Ricardo Vieira

Plano de Estudo:
1. PROGRAMAÇÃO PARA WEB
2. TIPOS DE ARRAYS
3. TIPOS DE OPERADORES
4. CONSIDERAÇÕES FINAIS

Objetivos de Aprendizagem:
• Conceituar e contextualizar a programação web em nosso dia a dia.
• Compreender os tipos de Array e suas utilizações.
• Estabelecer a importância dos Tipos de Operadores.

6
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 utiliza os conceitos da Orientação a Objetos e é uma das linguagens mais
utilizadas na programação para internet.

● Com uma linguagem simplificada e detalhada, apresentamos também os con-


ceitos de utilização de arrays, que será muito utilizado pelos programadores
para sites, sistemas online e aplicações web. E por fim, apresentaremos os
tipos de operadores utilizados dentro da linguagem de programação PHP.

● Este é só o começo. Teremos muita coisa boa chegando com o decorrer do


curso. Vai ser muito bom tê-lo aqui, estudando e se desenvolvendo profissional-
mente. Tenha um bom aprendizado e um excelente aproveitamento.

Então vamos lá!


Bons estudos!

UNIDADE I Programação para a Internet 7


1. PROGRAMAÇÃO PARA WEB

1.1. Introdução Programação Web

Para se programar para web, é preciso conhecer primeiro o que é web. A internet
teve seu início no final dos anos 1960. Com a iniciativa do governo americano, especifi-
camente do Departamento de Defesa, solicitando a pesquisadores de várias instituições
dos Estados Unidos para projetar um sistema de defesa, cuja grande diferença em relação
a outros sistemas já projetados era que esse seria descentralizado, capaz de resistir a
ataques do inimigo que fossem realizados com armas nucleares e em qualquer ponto do
Estados Unidos sem necessariamente dividir a comunicação do pais.

Surgiu então, como solução, um sistema em que os dados eram divididos em pa-
cotes e que estes seriam encaminhados, instantaneamente, por várias rotas que estivem
disponíveis, ou seja, o sistema era baseado em redes de computadores. Desta maneira,
esse sistema poderia continuar em operação mesmo quando um ou mais computadores
dessa rede fossem destruídos ou que não estivessem funcionando, ou seja, a comunicação
poderia fluir para outros computadores que ainda estivessem funcionando.

Na prática, os pesquisadores americanos inventaram uma tecnologia voltada para


a interligação de computadores que funcionavam em condições precárias de comunicação,

UNIDADE I Programação para a Internet 8


que de maneira simplória poderiam denominar esse conjunto de simples tecnologias, porém
extremamente confiável de internet.

O nome internet começou a ser usado em 1973, derivado do conceito de “inter-


networking” ou interligação de redes, que vinha sendo estudado pelos pesquisadores
americanos desde o ano anterior. 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 surgiu a internet, nada como acompanhar a sua
cronologia desde o nascimento das primeiras ideias relacionadas às redes de computado-
res 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) dentro do 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 foi montado o primeiro equipamento da rede na Uni-


versidade da Califórnia, de Los Angeles, (UCLA). Ficou, então, criado o primeiro
ponto de conexão da rede, que se chamava ARPANET. Ainda em 1969 foram
montados os três pontos restantes de conexão. O segundo ponto de conexão
foi o do Instituto de Pesquisas de Stanford e o terceiro ponto de conexão foi 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. Primei-


ro artigo da AFIPS sobre a ARPANET. A ALOHAnet, foi 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), primeiro
protocolo host-host.

● 1971 – Foi inventado o programa de e-mail para enviar mensagens através de


rede distribuída. O programa original foi derivado de dois outros: um programa

UNIDADE I Programação para a Internet 9


de e-mail intra máquina (SENDMSG) e um programa experimental de transfe-
rência de arquivo (CPYNET).

● 1978 – Os protocolos TCP-IP foram divididos em TCP e IP.

● 1979 – Inauguração da primeira rede dedicada a Grupos de Discussão – USE-


NET. Foi 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 eram os mentores e chefes da equipe que acaba
inventando o TCP/IP, a 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 se comunicarem entre elas 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 Atividades da Internet (In-
ternet Activities Board, IAB) foi estabelecido, substituindo o ICCB, ARPANET se
divide em ARPANET e MILNET; este último se integrou à Rede de Dados de
Defesa (Defense Data Network), criada no ano anterior. Foram para a MILNET
68 dos 113 nós existentes.

● 1984 – Foi 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 e 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, Norue-
ga, Dinamarca e Suécia ligam-se à internet.

UNIDADE I Programação para a Internet 10


● 1990 – Surgiu 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
software World 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 pro-
cura 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 Vir-
gens 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 Com-
munications Corp., que viria originar a Netscape Communications Corp. Surge
a primeira estação de rádio a transmitir via internet. Foi lançado o Netscape
Navigator e respectivo software de servidor. O número de servidores na Net
ultrapassava os três milhões. Algéria, Arménia, Bermuda, Burkina Faso, China,
Colômbia, Polinésia Francesa, Líbano, Lituânia, Macau, Marrocos, Nova Cale-
dônia, Nicarágua, Nigéria, Panamá, Filipinas, Senegal, Sri Lanka, Suazilândia,
Uruguai, Uzbequistão, Jamaica e Jordânia entram para a rede. ARPANET/

UNIDADE I Programação para a Internet 11


Internet celebra seu 25º aniversário. Aparecimento das primeiras páginas de
comércio eletrônico. Localidades começaram a conectar-se diretamente à in-
ternet. WWW supera a telnet para se tornar o segundo serviço mais popular
da rede (atrás da FTP) baseado em porcentagem da distribuição do tráfego de
pacotes e 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), fer-
ramentas 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 progra-
madores da SUN Microsystems lançam o Java – linguagem de programação
orientada à 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 JavaScripts. Três empresas de serviço de procura na rede
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údos “inadequados” 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
e 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.

UNIDADE I Programação para a Internet 12


● 1997 – Tecnologias emergentes: Push, Streaming Media. A America 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 dis-
tribui 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 Abi-


lene, a rede Internet 2, atravessa o Atlântico e conecta-se com 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, online 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 em constante expansão no planeta e número


de serviços aumenta também sem precedentes.

1.2. O que é PHP?

O PHP é a linguagem de desenvolvimento da Web escrita por e para desenvolve-


dores da Web. PHP significa: Hypertext Preprocessor ou Pré-processador de hipertexto. O
produto foi originalmente chamado de Personal Home Page Tools e muitas pessoas ainda
pensam que é isso que o acrônimo representa. Mas à medida que se expandiu em escopo,
um nome novo e mais apropriado, embora GNU-ishly recursivo foi 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 do lado do servidor, que pode ser incorporada
em HTML ou usada como um binário autônomo, embora o uso anterior seja muito mais
comum. Os produtos proprietários nesse “nicho” são as Active Server Pages da Microsoft,

UNIDADE I Programação para a Internet 13


o Macromedia ColdFusion e as Java Server Pages da Sun. Alguns jornalistas de tecnologia
costumavam chamar o PHP de “código aberto ASP” porque sua funcionalidade é seme-
lhante à do produto da Microsoft - embora essa formulação fosse enganosa, já que o PHP
foi desenvolvido antes do ASP. Nos últimos anos, no entanto, o PHP e o Java do lado do
servidor ganharam força, enquanto o ASP perdeu o mindshare, portanto essa comparação
não parece mais apropriada.

Mas, no momento, podemos pensar nele como uma coleção de tags super HTML
ou pequenos programas que são executados dentro de suas páginas da Web - exceto
no lado do servidor, antes de 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 falando,
o PHP tem pouco a ver com layout, eventos, manipulação de DOM on-the-fly, ou realmente
qualquer coisa sobre o que uma página da Web parece e soa como. Na verdade, a maior
parte do que o PHP faz é invisível para o usuário final. Alguém olhando para uma página
PHP não necessariamente será capaz de dizer que ela não foi escrita apenas em HTML,
porque geralmente o resultado do PHP é HTML.

O PHP é um módulo oficial do Apache HTTP Server, o servidor Web líder de mer-
cado 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 e chegando até no Mac OS (a partir da versão
X). Todos os projetos sob a égide da Apache Software Foundation - incluindo PHP - são
programas open source.

1.2.1. Uma Breve História do PHP

O PHP foi criado no outono de 1994 por Rasmus Lerdorf , engenheiro de software,
membro da equipe Apache. A primeira parte do PHP foi desenvolvida para uso pessoal
no final de 1994. Versões iniciais era um wrapper CGI que o ajudava a acompanhar as
pessoas que olhavam para o seu site pessoal.

UNIDADE I Programação para a Internet 14


A primeira versão usada por outros estava disponível no início de 1995 e era co-
nhecida como Ferramentas Pessoais de Página Inicial. Ele montou um pacote chamado
Personal Home Page Tools (também conhecido como PHP Construction Kit) em resposta
à demanda de usuários que haviam descoberto o seu trabalho por acaso ou de boca em
boca. Consistia de um mecanismo de análise muito simplista que compreendia apenas
alguns macros especiais e vários utilitários que eram de uso comum nas páginas iniciais da
época. Um livro de visitas, um contador e algumas outras coisas.

O analisador foi reescrito em meados de 1995 e denominado PHP / FI Versão 2. O


FI veio de outro pacote que Rasmus havia escrito, que interpretava os dados do formulário
html. Ele combinou os scripts das ferramentas Personal Home Page com o Form Interpreter
e adicionou suporte SQL e o PHP / FI nasceu. O PHP / FI cresceu a um ritmo incrível e as
pessoas começaram a contribuir com código para isso.

Em meados de 1997, o PHP estava sendo usado em aproximadamente 50.000


sites em todo o mundo. Estava claramente se tornando grande demais para qualquer pes-
soa sozinha, mesmo alguém tão concentrado e enérgico quanto Rasmus. Uma pequena
equipe de desenvolvimento principal agora executa o projeto no modelo “benevolent junta”
de código aberto, com contribuições de desenvolvedores e usuários em todo o mundo.
Zeev Suraski e Andi Gutmans, os dois programadores israelenses que desenvolveram
os analisadores PHP3 e PHP4, também generalizaram e estenderam seu trabalho sob a
rubrica de Zend.com (Zeev, Andi, Zend).

O quarto trimestre de 1998 iniciou um período de crescimento explosivo para PHP,


já que todas as tecnologias de código aberto desfrutaram de 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 quebrou a marca
de um milhão de domínios. Quando escrevemos a primeira edição deste livro no primeiro
semestre de 2000, o número aumentou para cerca de dois milhões de domínios. Enquanto
escrevemos isso, aproximadamente 15 milhões de servidores Web públicos (no sentido de
software, não o sentido de hardware) têm o PHP instalado neles.

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 Sourceforge.

UNIDADE I Programação para a Internet 15


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 e muito
mais.

Em sua versão PHP 5, ele se esforçou para oferecer algo que muitos usuários têm
clamado nos últimos anos: funcionalidade muito melhorada de programação orientada a
objetos (OOP). O PHP há muito tempo concordou com o modelo de programação de ob-
jetos com funções que permitem que os programadores de objetos obtenham resultados e
informações de maneira familiar a eles. Esses esforços ficaram aquém do ideal para muitos
programadores, no entanto, e os esforços para forçar o PHP a construir sistemas totalmen-
te orientados a objetos muitas vezes geraram resultados não intencionais e prejudicaram
o desempenho. O modelo de objeto reconstruído do PHP 5 aproximou o PHP de outras
linguagens orientadas a objetos, como Java e C ++, oferecendo suporte a recursos como
sobrecarga, interfaces, variáveis ​​e métodos de membros privados e outras construções OO
padrão.

Quanto a versão 6, não chegou e nem chegará a ser lançada como uma versão do
PHP, pois tinha como objetivo corrigir falhas apontadas na versão 5.2 e versões anteriores,
de não terem suporte nativo Unicode. Assim em 2005 chegou a ser construído um grande
um grupo de trabalho para desenvolver uma versão PHP 6 que tivesse suporte, mas em
2009 foi lançada a versão 5.3 com algumas funcionalidades previstas para o PHP 6, só que
mantendo-se sem o suporte Unicode.
Os recursos que supostamente seriam incorporados na versão PHP 6 foram sendo
integrados a partir das versões 5.3 e 5.4, razão pela qual o PHP 6 deixou de fazer sentido
como uma versão principal.Contudo , este assunto não foi pacífico e chegou a ser uma
matéria discutida entre os programadores, desde 2014, com vista a saber se a versão
posterior à 5.x deveria ser designada por PHP 7, acabando por ser adotada.

No que toca a versão PHP 7, ela foi lançada em definitivo no final de 2015. Apesar
da introdução desta versão, há uma expectativa que demore algum tempo até que a mes-
ma seja usada, na medida em que há um período de adaptação. Contudo, para facilitar o
aprendizado, será utilizado a versão PHP 5, com o conteúdo e os exemplos apresentados
neste livro.

UNIDADE I Programação para a Internet 16


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 facilmente referenciada que 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 co-
muns pelas quais os arrays são usados ​​no código PHP real. Muitas variáveis de
​​ ambiente
PHP embutidas estão na forma de matrizes, por exemplo, $ _SESSION, que contém todos
os nomes e valores de variáveis ​​sendo propagados de uma página para outra através do
mecanismo de sessão do PHP). Se você quiser acessá-los, você precisa entender, no
mínimo, como fazer referência a matrizes.

A maioria das funções de banco de dados transporta suas informações através de


matrizes, criando um pacote compacto de um bloco de dados arbitrário. É fácil transmitir
conjuntos inteiros de argumentos de formulário HTML de uma página para outra em uma
única matriz. Os arrays são um bom contêiner para fazer manipulações (classificação,
contagem e assim por diante) de todos os dados que você desenvolve ao executar o script
de uma única página. Quase toda situação que exige que um número de dados seja empa-
cotado e tratado como um é apropriado para um array PHP.

UNIDADE I Programação para a Internet 17


2.1. Mas 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 valores de elemento em associa-
ção com valores de chave em vez 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, tudo
que você precisa para recuperá-lo mais tarde desse Arrays será o valor da chave. Por
exemplo, o armazenamento é tão simples assim:

$ state_location [‘San Mateo’] = ‘California’;

que armazena o elemento ‘California’ na variável de array $ state_location, em associação


com a chave de pesquisa “San Mateo”. Após isso ter sido armazenado, você poderá procu-
rar o valor armazenado usando a chave, assim:

$ state = $ state_location [‘San Mateo’]; // equals ‘Califórnia’;

Simples, não? Se tudo o que você deseja no Arrays é armazenar pares de chave /
valor, às informações anteriores serão tudo o que você precisará saber. Da mesma forma,
se você quiser associar uma ordem numérica com um monte de valores, tudo o que você
precisará 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...

Todas as variáveis ​​no PHP são denotadas com um $ inicial, não apenas variáveis​​
escalares. Em segundo lugar, mesmo que a matriz seja associativa, os índices são agrupa-
dos por colchetes ([ ]) em vez 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, e o
próprio array mantém uma ordenação interna para propósitos de iteraçã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 tra-

UNIDADE I Programação para a Internet 18


tamos como outros tipos de estruturas de dados. Como veremos, os arrays podem ser
multidimensionais. Eles podem armazenar valores em associação com uma sequência de
valores-chave em vez de uma única chave. Além disso, as matrizes mantém automatica-
mente uma lista ordenada dos elementos que foram inseridos nelas, independentemente
de quais são os valores-chave. Isso possibilita tratar matrizes como listas vinculadas. Em
geral, revelaremos o funcionamento desse maquinário extra à medida que exploramos as
funções que o utilizam.

2.2. Criando Arrays Simples

Existem três maneiras principais de criar um array no script PHP: atribuindo um


valor em um (e, assim, criando-o implicitamente), usando a construção array() e chamando
uma função que retorna um array como seu valor.

2.3. Atribuição Direta

A maneira simples de criar uma Array é agir como se uma variável já fosse uma
matriz e atribuísse valor a ela, assim:

$ 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 desta instrução, ela será agora uma variável vinculada a uma matriz com um
elemento. Se este 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á
criada para mantê-lo; se o valor estiver associado a 1, o valor anterior será sobrescrito. Você
também pode atribuir em uma matriz omitindo o índice inteiramente como em $ meu_array[ ].

2.4. 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 separada por vírgula de
elementos a serem armazenados, sem qualquer especificação de chaves. O resultado é

UNIDADE I Programação para a Internet 19


que os elementos serão armazenados na matriz na ordem especificada e são 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ça’, ‘laranja’, ‘banana’, ‘pera’), com os índices 0, 1, 2 e 3, respectivamente. Além
disso, o array se lembrará da ordem em que os elementos foram armazenados.

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”;

supondo que a variável $ cesto_de_frutas estava des-associada na 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”;

Neste caso, o PHP novamente assume que você está adicionando elementos se-
quenciais que devem ter índices numéricos contando para cima a partir de zero.

2.5. Especificando Índices Usando Array()

O exemplo simples de array() na seção anterior atribui índices a nossos elementos,


mas esses índices serão inteiros, contando 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 elemento separados por vírgulas, você fornece pares de valor-chave
separados por vírgulas, onde a chave e o valor são separados pelo símbolo especial =>.

UNIDADE I Programação para a Internet 20


Considere a seguinte declaração:

$ cesto_de_frutas = array (0 =>’ maca ‘, 1 =>’ laranja ‘, 2 =>’ banana ‘,


3 =>’ pera ‘);

A avaliação terá exatamente o mesmo efeito que nossa versão anterior - cada
string será 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 indexados por nomes de cores em vez de números. 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 cha-
mando a função de array sem argumentos. Por exemplo:

$ meu_array_vazio = array ();

cria um array sem elementos. Isso pode ser útil para passar para uma função que espera
uma matriz como argumento.

2.6. Funções Retornando Arrays

A maneira final de criar um array em um script é chamar uma função que retorna
um array. Esta 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 que são úteis para ter funções
posteriores para manipulação de array. 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:

UNIDADE I Programação para a Internet 21


$ meu_array = range (1,5);

é equivalente a:

$ meu_array = array (1, 2, 3, 4, 5);

2.7. Recuperando Valores

Depois de armazenarmos alguns valores em uma matriz, como podemos obtê-los


novamente?

2.7.1. Recuperando por índice

A maneira mais direta de recuperar um valor é usar seu índice. Se tivermos ar-
mazenado um valor em $ meu_array no índice 5, $ meu_array [5] deverá avaliar o valor
armazenado. Se $ meu_array nunca foi atribuído, ou se nada foi armazenado nele com um
índice de 5, $ meu_array [5] se comporta como uma variável não ligada.

2.7.2. A construção list ()

Há várias outras maneiras de recuperar valores de arrays sem usar chaves, a maio-
ria das quais explora o fato de que os arrays estão registrando silenciosamente a ordem
na qual os elementos são armazenados. Mas um desses exemplos é list (), que é usado,
para atribuir vários elementos de matriz a variáveis ​​em sucessão. Suponha que as duas
instruções a seguir sejam executadas:

$ cesto_de_frutas = array (‘maca’, ‘laranja’, ‘banana’); lista ($ fru-


ta_vermelha, $ fruta_laranja) = $ cesto_de_frutas;

Isso atribui o String “maca” à 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 a elementos da matriz na ordem em que foram origi-
nalmente armazenadas na matriz. Observe o comportamento incomum aqui - a construção
list () está no lado esquerdo do operador de atribuição (=), onde normalmente encontramos
apenas variáveis. Em certo sentido, list () é o oposto ou inverso de array () porque array ()

UNIDADE I Programação para a Internet 22


empacota seus argumentos em um array, e list () desmonta o array novamente em atribui-
ções de variáveis ​​individuais. Se avaliarmos:

list ($ primeiro, $ segundo) = array ($ primeiro, segundo);

os valores originais de $ primeiro e $ segundo serão atribuídos a essas variáveis​​


novamente, depois de terem sido armazenados brevemente em uma matriz.

2.8. Arrays Multidimensionais

Até agora, os exemplos de array que vimos foram todos unidimensionais, 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. E 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”;

Essa é uma matriz de cinco dimensões com chaves sucessivas que acontecem
neste caso, para ser cinco inteiros sucessivos.

Na verdade, pensar em matrizes como multidimensionais torna as coisas mais con-


fusas do que precisam ser. Em vez disso, lembre-se de que os valores armazenados em
matrizes podem ser matrizes, tão legitimamente quanto podem ser cadeias ou números.
A sintaxe de índice múltiplo no exemplo anterior é simplesmente uma maneira concisa
de se referir a um array (quadridimensional) que é armazenado com uma chave de 1 in
$ multi_array, que por sua vez tem um array (tridimensional) armazenado nele, e assim
por diante. Note também que você pode ter diferentes profundidades de referência em
diferentes partes da matriz, assim:

$ 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, e 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”;

UNIDADE I Programação para a Internet 23


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 de que arrays multidimensionais são simplesmente arrays que têm outros
arrays, armazenadas nelas, é mais fácil ver como o construtor de criação de array () se
generaliza. De fato, mesmo essa tarefa aparentemente complicada não é tão complicada:

$ cornucopia = array (‘fruta’ =>


array (‘vermelho’ => ‘maçã’,
‘laranja’ => ‘laranja’,
‘amarelo’ => ‘banana ‘,
‘ verde ‘=>’ pêra ‘),
‘flor’=>
array (‘ vermelho ‘=> ‘ rosa ‘,
‘ amarelo ‘=>’ girassol ‘,
‘ púrpura ‘=>’ íris ‘));

É simplesmente um array com dois valores armazenados em associação com cha-


ves. 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 de-


claração impressa anterior, em vez de simplesmente incorporar a $ cornucopia [$ tipo_de-
sejado] [$ 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 - você estará seguro ao
inserir referências de array em um String contanto que você coloque a referência entre
chaves, assim:

print (“O que queremos é {$ cornucopia [$ tipo_desejado [ $ cor_desejada


]} ”);

UNIDADE I Programação para a Internet 24


Finalmente, observe que não há grande penalidade por indexação indevida em um
array multidimensional quando estamos tentando recuperar algo; se nenhuma chave for en-
contrada, a expressão será tratada como uma variável não vinculada. Então, se tentarmos
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 ]);

UNIDADE I Programação para a Internet 25


3 . TIPOS DE OPERADORES

3.1. Operadores Aritméticos

Só podem ser utilizados quando os operandos são números (integer ou float). Se


forem de outro tipo, terão seus valores convertidos antes da realização da operação.

Tabela 01 - Operadores Aritméticos.

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.

3.2. Operadores de Strings

Existe apenas um operador de cadeia de caracteres - o operador de concatenação


(“.”). Exemplo:

UNIDADE I Programação para a Internet 26


$ a = “Olá”;
$ b = $ a.”Mundo!”;
// agora
$ b = “Olá mundo”!

3.3. Operadores de Atribuição

O operador de atribuição básico é “=”. Sua primeira inclinação pode ser pensar
nisso como “igual a”. Não. Isso realmente significa que o operando à esquerda é definido
como o valor da expressão nos direitos (isto é, “é definido como”).

O valor de uma expressão de atribuição é o valor atribuído. Ou seja, o valor de

“$ a = 3” é 3.

Isso permite que você faça algumas coisas complicadas:

$ 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 de cadeia de caracteres binários que permitem usar um
valor em uma expressão e, em seguida, definir seu valor para o resultado dessa expressão.
Por exemplo:
$ a = 3;
$ a + = 5;

// 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.

UNIDADE I Programação para a Internet 27


Tabela 02 - Operadores bit a bit.

3.5 Operadores lógicos

Tabela 03 - Operadores lógicos.

A razão para as duas variações diferentes de “ And “ e “ Or “ operadores é que eles


operam em precedentes diferentes. (Ver abaixo.)

UNIDADE I Programação para a Internet 28


3.6 Operadores de Comparação

Os operadores de comparação, como o próprio nome sugere, permite comparar


dois valores.

Tabela 04 - Operadores de Comparação.

3.7. Operadores de Expressão Condicional

Outro operador condicional é o operador: “ ?: “ (Ou trinário), que opera como em C


e em muitas outras linguagens.

(expr1)? (expr2): (expr3);

Essa expressão retorna para expr2 se expr1 for avaliada como verdadeira e expr3
se expr1 for avaliada como false.

3.8. Operadores de Incremento e Decremento

Tabela 05 - Operadores de Incremento e Decremento.

Podem ser utilizados de duas formas: antes ou depois da variável. Quando utilizado
antes, retorna o valor da variável antes de incrementá-la ou decrementá-la. Quando utiliza-
do depois, retorna o valor da variável já incrementado ou decrementado.

UNIDADE I Programação para a Internet 29


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 especifica como “estreitamente” ele une duas ex-


pressões. Por exemplo, na expressão 1 + 5 * 3, a resposta é 16 e não 18, porque o operador
de multiplicação (“*”) tem uma precedência maior do que o operador de adição (“+”).
A tabela a seguir lista a precedência dos operadores com os operadores de prece-
dência mais baixa, listados primeiro.

Tabela 06 - Operadores de Ordem de Precedência dos Operadores

UNIDADE I Programação para a Internet 30


SAIBA MAIS
Como criar minha primeira classe em PHP

Caro(a) aluno(a), dando continuidade no aprimoramento profissional, deixo


a sugestão de leitura deste artigo que tenho certeza que te ajudará a sanar dúvidas
e te dará uma visão mais ampla da Programação para Internet.
Neste conteúdo você aprenderá a criar sua primeira classe (PHP Class) na
linguagem PHP. Aprenda também a usar herança e interfaces, bem como métodos,
atributos e propriedades.
https://www.devmedia.com.br/como-criar-minha-primeira-classe-em-
-php/38895

REFLITA
“O futuro não é definido em uma trilha. É algo que podemos decidir, e na
medida em que não violamos quaisquer leis conhecidas do universo, provavelmente
podemos fazê-lo funcionar da maneira que queremos”. (Alan Kay)
Caro(a) aluno(a), Dessa forma, fica a reflexão para todos nós, de como pen-
sar a programação, de criar e superar as expectativas, de maneira que sempre possa
buscar o seu melhor. Seja o melhor que você puder ser. O aprimoramento deve ser
constante.

Referência: https://citacoes.in/citacoes/1841701-alan-kay-the-future-is-not-
-laid-out-on-a-track-it-is-somet/

UNIDADE I Programação para a Internet 31


4. CONSIDERAÇÕES FINAIS

Caro(a) aluno(a), chegamos ao final desta unidade que foi preparada com muito
carinho para você. Nesta unidade foram apresentados alguns conceitos da Programação
para Internet como os tipos de Arrays, os tipos de Operadores e também uma introdução à
programação web com uma retrospectiva cronológica da internet.

O conteúdo que foi apresentado nesta unidade, foi somente a ponta do Iceberg, foi
superficial, mas nas próximas unidades você poderá se aprofundar nos conceitos e prática
da Programação para Internet.

Estaremos juntos na próxima unidade.

Até lá!

UNIDADE I Programação para a Internet 32


Material Complementar

LIVRO
Título: Desenvolvimento web com PHP e MySQL
Autor: Evaldo Junior Bento.
Editora: Casa do Código.
Sinopse: Imagine a internet na qual você pode apenas consumir
conteúdos, como se fosse um jornal, uma revista, ou ainda, um
programa na televisão. Chato, né? O segredo da famosa web 2.0
é a capacidade de interação entre as pessoas e os serviços online.
Aprenda com esse livro os primeiros passos para usar o PHP, uma
ferramenta que possibilita a criação de páginas web dinâmicas.
Veja também 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 até portais de
notícias e grandes redes sociais.

FILME/VÍDEO
Título: Por que aprender PHP
Ano: 2017.
Sinopse: Existem muitas razões para usar o PHP para a progra-
mação de aplicações web. Em primeiro lugar, é uma linguagem
livre, sem taxas de licenciamento, de modo que o custo de usá-la
é mínimo. Além disso, você tem a liberdade de escolha de sistema
operacional e de servidor web. Para lhe ajudar a planejar seus
estudos separamos aqui um DevCast em que demos algumas
dicas para quem está iniciando:

Link do vídeo: https://www.devmedia.com.br/guia/programador-


-php/38193

UNIDADE I Programação para a Internet 33


REFERÊNCIAS

BENTO, Evaldo Junior. Desenvolvimento web com PHP e MYSQL. São Paulo. Casa do
Código Editora. 2013.

MAZZA, Lucas. HTML5 e CSS3 - Domine a web do futuro. São Paulo. Casa do Código
Editora. 2012.

BAKKEN, Stig Saether et al. PHP manual. Zend Technologies, Ltd, 1999.

CONVERSE, Tim; PARK, Joyce; MORGAN, Clark. PHP5 and MySQL bible. John Wiley &
Sons, 2004.

UNIDADE I Programação para a Internet 34


UNIDADE II
Programação para a Internet
Professor Mestre Ricardo Vieira

Plano de Estudo:
1. TIPOS DE FUNÇÕES
2. RECEBENDO DADOS DE FORMULÁRIOS
3. VALIDANDO DADOS DE FORMULÁRIOS
4. CONSIDERAÇÕES FINAIS

Objetivos de Aprendizagem:
• Conceituar e contextualizar os tipos de funções da Linguagem PHP.
• Compreender como são recebidos os dados de formulários.
• Estabelecer a importância da validação de dados de formulários dentro da
programação PHP.

35
INTRODUÇÃO

Esta unidade inicia os estudos com uma breve introdução aos Tipos de funções.
Você verá nesta unidade, como é definida uma função, os argumentos e muito mais.
Com o estudo mais aprofundado e específico sobre o recebimento de formulários e
também a sua utilização dentro da Programação para Internet.
Você não pode parar, pois preparamos muitas coisas boas e trouxemos um conteú-
do que foi preparado pensando em te trazer mais conhecimentos e um direcionamento em
sua carreira profissional. Então vamos aos estudos!
Agora é mão na massa e bom estudo!

UNIDADE II Programação para a Internet 36


1. TIPOS DE FUNÇÕES

1.1. Introdução a Função

O que é uma função?


Uma função é uma forma de quebrar um pedaço de código e dar um nome a esse
pedaço, para que você possa usar esse pedaço mais tarde em apenas uma linha de código.
As funções são mais úteis quando você usar o código em mais de um lugar, mas elas
poderão ser úteis mesmo em situações de uso único, porque podem tornar seu código
muito mais legível. (Converse; Park; Morgan, 2004. p. 148).

1.1.1. Definição de Função

A Sintaxe básica para definições de função têm a seguinte forma:

Figura 26. Exemplo de definição de função. Elaborado pelo autor, 2019.

UNIDADE II Programação para a Internet 37


Ou seja, as definições de função têm quatro partes:

● A função de palavra especial


● O nome que você quer dar à sua função
● A lista de parâmetros da função - variáveis ​​de sinal de dólar separadas por
vírgulas
● O corpo da função - um conjunto de instruções em anexo

Assim como com nomes de variáveis, o nome da função deve ser composto de
letras, números e sublinhados, e 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, indepen-
dentemente da capitalização.

A versão curta do que acontece quando uma função definida pelo usuário é cha-
mada é:

1. O PHP procura a função pelo seu nome (você receberá um erro se a função
ainda não tiver sido definida).
2. 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).
3. As declarações no corpo da função são executadas. Se alguma das instruções
executadas for uma instrução de retorno, a função para e retorna o valor for-
necido. Caso contrário, a função será concluída após a última instrução ser
executada, sem retornar um valor.

1.2. Exemplo de definição de função

Como exemplo, imagine que temos o seguinte código que ajuda a decidir qual
tamanho de refrigerante engarrafado comprar. (Isso é em algum momento, quando os com-
pradores de supermercados rotineiramente usam seus navegadores da Web para acessar
nosso prático site de comparação de preços).

UNIDADE II Programação para a Internet 38


Figura 27. Exemplo de definição de função. Elaborado pelo autor, 2019

A figura 01 apresenta o código e como esse tipo de comparação acontece no nosso


site o tempo todo, uma boa prática de programação é torná-lo uma função reutilizável. Uma
maneira de fazer isso seria a seguinte reescrita:

Figura 28- Exemplo de definição de função reescrita. Elaborado pelo autor, 2019.

Nossa função melhor_negocio, apresentado na figura 02, abstrai as três linhas


no 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: Podemos
usar a função em vários lugares (salvando linhas no geral) e se decidirmos alterar o cálculo,
terá que fazer a alteração em apenas um lugar.

Alternativamente, se a única maneira de usarmos essas comparações de preço


é imprimir qual transação é preferida, podemos incluir a impressão na função, conforme
figura 29.

UNIDADE II Programação para a Internet 39


Figura 29 - Outro exemplo de definição de função. Elaborado pelo autor, 2019.

Nossa primeira função usou a declaração de retorno para enviar de volta um re-
sultado booleano, que foi 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 desta função é executada, o PHP simplesmente passa para
executar a 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 argumen-


tos, 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), passagem por


referência e 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.

Figura 30- Exemplo de Argumentos da Função.Elaborado pelo autor, 2019.

1.3.1. Passagem de Argumentos por Referência

Por padrão, os argumentos da função são passados por valor, para que se você
alterar o valor do argumento dentro da função, ele não seja alterado fora da função. Se

UNIDADE II Programação para a Internet 40


você deseja permitir que uma função modifique seus argumentos, você deverá passá-los
por referência.
Se você quiser que um argumento para uma função seja sempre passado por
referência, você pode preceder um & para o nome do argumento na definição da função,
conforme figura 31.

Figura 31- Exemplo de Passagem de Argumentos por Referência. Elaborado pelo autor, 2019.

Se você deseja passar uma variável por referência a 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 apresentado na figura 32.

Figura 32 - Exemplo de Passagem de Argumentos por Referência. Elaborado pelo autor, 2019.

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 33- Exemplo de Argumentos com Valores Padrão. Elaborado pelo autor, 2019.

UNIDADE II Programação para a Internet 41


A saída do fragmento acima é:

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 argumentos padrão, qualquer padrão deve estar no lado
direito de qualquer argumento não padrão; caso contrário, as coisas não funcionarão como
esperado. Considere o seguinte trecho de código:

Figura 34 - Exemplo de Argumentos com Valores Padrão. Elaborado pelo autor, 2019.

A saída do exemplo acima é:

Atenção: Falta o argumento 2 na chamada de makeyogurt () em /usr/local/etc/httpd/


htdocs/php3test/functest.html on line 41 Fazendo uma tigela de framboesa.

Agora, compare o acima com isto:

Figura 35- Exemplo de Argumentos com Valores Padrão. Elaborado pelo autor, 2019.

A saída deste exemplo é:

Fazendo uma tigela de framboesa acidophilus.

UNIDADE II Programação para a Internet 42


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. A combinação de


HTML para construir um formulário de entrada de dados, PHP para manipular os dados e
um servidor de banco de dados para armazenar os dados está no cerne de todos os tipos
de tarefas da Web extremamente úteis.

2.2. Formulários HTML

Você já sabe muito do que precisa para manipular formas no PHP. 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 e assim por diante. Esses atributos NAME se tornarão
nomes de variáveis ​​PHP - você não poderá acessar seus valores se não usar
um atributo NAME 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 geralmente é uma boa prática.
● Você poderá e geralmente deverá especificar um valor em vez de deixar HTML
enviar o valor padrão. Considere substituir um valor numérico por um valor de

UNIDADE II Programação para a Internet 43


texto, se possível, porque o banco de dados é muito mais lento em seqüências
de caracteres correspondentes do que 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 geralmente não é
pior do que armazenar os dados em um cookie.
● Lembre-se de que você pode passar múltiplas variáveis ​​em um array - mas você
precisará informar ao usuário que esta é uma possibilidade. (Converse; Park;
Morgan, 2004. p. 311).

Uma das dúvidas mais frequentes entre desenvolvedores iniciantes em PHP é


como manipular os dados de formulário enviados para os scripts PHP, principalmente dados
de “checkbox” e upload de arquivos.

Um formulário HTML é apenas uma tela bonita para onde os usuários poderão
inserir informações que serão interpretados de alguma maneira por algum script em um
determinado servidor. E no nosso caso, é um script PHP.

Primeiro: o formulário deverá conter um botão “submit”, através do comando apre-


sentado na figura 36.

Figura 36- Exemplo do comando de envio com o botão submit. Elaborado pelo autor, 2019.

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, confor-
me apresentado na figura 37.

Figura 37- Exemplo de script PHP com parâmetro name. Elaborado pelo autor, 2019.

UNIDADE II Programação para a Internet 44


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, dependerá de você.

Existem 2 métodos que poderão ser usados: GET e POST. O recomendável sempre
para todos os formulários é usar o método POST, onde os dados enviados não são visíveis
nas URLs, ocultando possíveis importantes informações e permitindo o envio de longas
informações. O GET é totalmente o contrário disso.

Você deve estar se perguntando “como as informações chegam para o script PHP?”

Figura 38 - Exemplo de formulário HTML. Elaborado pelo autor, 2019.

O formulário apresentado na figura 39 utiliza o método POST para envio das infor-
mações, em um “script.php”:

Figura 39 - Uso de método POST para envio de formulário. Elaborado pelo autor, 2019.

Na figura 13 vemos um exemplo de como utilizar o formulário criado na figura 12.


Se o formulário tivesse sido enviado usando o método GET, você simplesmente teria que
usar $_GET no lugar de $_POST.

Em vez de usar $_GET ou $_POST você poderá escrever a variável com o mesmo
nome do campo do formulário (no exemplo, $campo1 e $campo2). Mas, 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.

Uma solução para isso é usar a função import_request_variables no começo dos


seus scripts que interpretam formulários. Essa função aceita 3 letras como argumentos: P,

UNIDADE II Programação para a Internet 45


G e C, referentes a $_POST, $_GET e $_COOKIE respectivamente. Exemplo de uso:

Figura 40 - Exemplo da utilização da função import_request_variables.Elaborado pelo autor, 2019.

Exemplo: Você possui formulário com os campos “nome”, “endereço” e “idade”.


Assuma que a diretiva “register_globals” do seu PHP esteja desligada, mas, você já havia
programado o script usando as variáveis no escopo global, no lugar de $_POST.

Adicionando aquela função no começo do script, as variáveis do seu formulário


postado estarão conforme a figura 41.

Figura 41 - Exemplo de uma junção no começo do formulário.Elaborado pelo autor, 2019.

Serão extraídas cada campo para uma variável diferente: $nome, $endereco e
$idade.

2.3. Campos Hidden

Os campos hidden são usados para passar informações que não poderão ser
alteradas pelo usuário que estará inserindo informações no formulário. Por exemplo: você
tem um site com sistema de login e o usuário quer alterar as informações de login dele. O
script que irá manipular esse formulário, precisa saber o ID do usuário para poder alterar as
informações no banco de dados, então esse ID é um campo hidden. Exemplos de utilização
de campos hidden estão nas figuras 42 e 43.

Figura 42- Exemplo de hidden.html. Elaborado pelo autor, 2019.

UNIDADE II Programação para a Internet 46


Figura 43- Exemplo de hidden.php. Elaborado pelo autor, 2019.

2.4. Campos Text e Textarea

Os campos text e textarea são os tipos mais simples, onde há somente um possível
valor por campo. Dispensam maiores explicações e estão presentes nas Figuras 18 e 44.

Figura 44- Exemplo de texts.html. Elaborado pelo autor, 2019.

Figura 45 - Exemplo de texts.php. Elaborado pelo autor, 2019.

2.5. Campos Radio

Campos Radio permitem um relacionamento de um para muitos entre identificador


e valor, ou seja, eles têm múltiplos possíveis valores, mas somente um pode ser pré-exibido
ou selecionado. Eles são melhores para pequenos conjuntos de opções, geralmente entre
dois e dez, que precisam de mais do que uma palavra ou duas de texto para se identificarem.

Infelizmente, é um pouco mais difícil representar os dados armazenados em um


botão de opção do que em uma caixa de seleção ou campo de texto. Isso ocorre porque
existe apenas um valor possível para um texto ou uma área de texto e apenas dois valores
possíveis para uma caixa de seleção - mas os botões de opção podem ter mais de dois
valores possíveis. Portanto, você terá que produzir parte do formulário atual com o PHP.
Isso parece um pouco menos arrumado do que os estilos que empregamos anteriormente,
então você deve investir mais tempo e esforço para alcançar um script facilmente legível.

UNIDADE II Programação para a Internet 47


Mais uma vez, a experiência de interface de usuário permitida pelos botões de rádio vale
a pena o problema extra que isso dá ao desenvolvedor da Web. (Converse; Park; Morgan,
2004.p. 317).

Por exemplo: você tem um sistema de “quiz”.


Cada pergunta possui 5 possíveis respostas. Cada resposta é um radio, onde os 5
radios dessa pergunta possuem o mesmo identificador, mas cada um com valor diferente.
Este exemplo está presente nas figuras 46 e 47.

Figura 46 - Exemplo de radio.html. Elaborado pelo autor, 2019.

Figura 47 - Exemplo de radio.php. Elaborado pelo autor, 2019.

2.6. Campos Checkbox

O tipo Checkbox tem somente um possível valor por entrada: on value (marcado)
ou no value (desmarcado). No script você deve fazer a verificação para saber se o campo
foi marcado ou não.
É possível também utilizar grupos de checkbox com o mesmo nome. Para isso
você deve adicionar “[]” no final do nome, para o PHP interpretar como array, veja o código
exemplo nas figuras 48 e 49.

UNIDADE II Programação para a Internet 48


Figura 48- Exemplo de checkbox.html. Elaborado pelo autor, 2019.

Figura 49 - Exemplo de checkbox.php. Elaborado pelo autor, 2019.

2.7. Campos Select

Os campos select permitem tratar uma variedade de opções, onde o usuário pode
selecionar apenas uma opção ou múltiplas opções. Quando você permite múltiplas sele-
ções, deve adicionar “[]” no final do nome, para o PHP interpretar como array.
Nos exemplos das figuras 50 e 51, mostramos o funcionamento e tratamento de
ambas.

UNIDADE II Programação para a Internet 49


Figura 50 - Exemplo de um select.html. Elaborado pelo autor, 2019.

Figura 51 - Exemplo de um select.php. Elaborado pelo autor, 2019.

A manipulação de dados de formulários é uma das coisas mais importantes que


todo desenvolvedor deve saber, pois normalmente é por meio dela que existe a comunica-
ção de aplicação x banco de dados.

UNIDADE II Programação para a Internet 50


3. VALIDANDO DADOS DE FORMULÁRIOS

Vamos falar sobre uma funcionalidade do HTML5 que é muito útil na criação de
validações de formulários, é o HTML5 Validator.

Há muito tempo a validação de um campo de formulário é uma coisa que vem


dando muito trabalho aos desenvolvedores, muitos programadores desenvolveram formas
de validação em javascript, depois com o surgimento do jQuery logo apareceu um plugin
de validação, mas agora com o novo HTML5 as coisas ficaram muito mais fáceis, pois a
validação tornou-se algo nativo da linguagem.

Será apresentado algumas opções de como realizar a validação de um campo, seja


ela por javascript ou no HTML5.

3.1. Validação com Javascript

Começaremos pela validação em javascript. Na figura 52 vamos usar um código


simples de um formulário, onde iremos validar se a informação foi preenchida, caso contrá-
rio a informação não será enviada.

UNIDADE II Programação para a Internet 51


Figura 52 - Exemplo validação de um código html. Elaborado pelo autor, 2019.

Esse é o nosso formulário, que deverá ser exibido como mostra a figura 53.

Figura 53 - Aparência do formulário. Elaborado pelo autor, 2019.

Agora precisamos usar o Javascript para validar esses campos. O que queremos
que aconteça é que seja impossível enviar os dados do formulário com o campo vazio, para
isso iremos utilizar um código javascript conforme apresentado na figura 53.

UNIDADE II Programação para a Internet 52


Figura 54 - Código javascript de validação. Elaborado pelo autor, 2019.

Após colocarmos esse código nosso formulário deverá validar, se por exemplo
deixarmos o campo nome em branco, ele mostrará a mensagem conforme figura 55.

Figura 55 - Resultado da validação. Elaborado pelo autor, 2019.

Dessa forma nosso formulário será validado, de forma simples e fácil, mas com um
código extenso, como podemos ver.

UNIDADE II Programação para a Internet 53


3.2. Validando com HTML5

Com a chegada da nova versão do HTML, além de muitas outras melhorias, agora
podemos validar um campo sem precisar escrever muito código, tornando o trabalho dos
desenvolvedores muito mais prático e fácil.
Na figura 30 veremos que é possível fazer o mesmo do exemplo anterior de uma
maneira muito mais fácil e prática e escrevendo menos código.

Figura 56 - Validando formulário com HTML5. Elaborado pelo autor, 2019.

Você não pode esquecer que para usar recursos HTML5 precisará colocar o doc-
type referente à linguagem.
Como você pode ver, foi escrito muito menos código do que anteriormente e na
figura 57 poderá ver que o resultado é o mesmo da validação com javascript.

Figura 57 - Resultado da validação em HTML5. Elaborado pelo autor, 2019.

UNIDADE II Programação para a Internet 54


3.3. Personalizando a Mensagem de Validação

Caso você queira personalizar a mensagem de validação, é possível incluir uma


nova mensagem junto da mensagem padrão do browser utilizando o atributo title, mas
dessa forma ela não é personalizada por completo. Veja na figura 58 como isso ficaria.

Figura 58 - Inserindo mensagem junto com mensagem padrão. Elaborado pelo autor, 2019.

SAIBA MAIS
Para dar continuidade aos estudos proponho a você como sugestão para o seu
desenvolvimento dentro da Programação para Internet, este minicurso, Introdução
ao PHP, da Plataforma Devmedia, que grande que será de grande utilidade como
complemento do que foi estudado nesta unidade.

https://www.devmedia.com.br/curso/introducao-ao-php/2171

UNIDADE II Programação para a Internet 55


REFLITA
“Algumas pessoas acham que foco significa dizer sim para a coisa em que
você vai se focar. Mas não é nada disso. Significa dizer não às centenas de outras
boas ideias que existem. Você precisa selecionar cuidadosamente.” (Steve Jobs)

Inspirado em uma das maiores mentes da computação, Steve Jobs, hoje é o


dia certo para estudar, trabalhar, buscar algo novo.
Mas, não devemos fazer isso tentando abraçar o mundo, ou seja, tentando
fazer tudo ao mesmo tempo, mas sim, um de cada vez, porém de forma completa
e totalmente envolvida. Assim, priorizar é a competência que v. deve aprimorar, so-
mente assim será capaz de ir além e fazer coisas que outros não podem.
Hoje é o dia!
Faça o hoje valer a pena, fazendo boas escolhas!

Referência:
https://www.tecmundo.com.br/internet/3145-frases-impactantes-sobre-tec-
nologia-e-informatica.htm

UNIDADE II Programação para a Internet 56


CONSIDERAÇÕES FINAIS

Caro(a) Aluno(a)!

Chegamos ao final desta unidade II da Programação para Internet com satisfação


de tê-lo aqui conosco, com o sentimento de grande satisfação de saber você querido(a)
aluno(a) conseguiu chegar até o fim. Parabéns!!!

Nesta unidade, você recebeu uma introdução aos tipos de funções e recebimento
e validação de formulários.

Caro (a) Aluno (a), mais uma vez gostaria de parabenizá-lo pelo esforço e a dedi-
cação para chegar até aqui. Desejo todo o sucesso que você puder conquistar em sua vida
pessoal e profissional.

Sucesso!!!

Um grande abraço!

UNIDADE II Programação para a Internet 57


Leitura Complementar

Caro(a) aluno(a), na área da tecnologia da informação, é comum haver sempre


uma reciclagem dos profissionais. Tudo muda o tempo todo. Tecnologias novas surgem,
a forma de fazer a mesma coisa muda, se tornando mais eficiente. E porque não com as
linguagens de programação? Ainda mais relacionadas à web, que é o setor em grande
crescimento atualmente.

Neste artigo são apresentadas algumas novidades que foram incorporadas ao PHP
5.4. Nesta versão, houve muitas mudanças e incrementos, mas, esse artigo trata de 3
assuntos importantes dentro do PHP, que são os Servidor HTTP embutido, Estrutura de
arrays e NameSpaces.

Espero que você aproveite bem este artigo e que ele possa te orientar dentro da
Programação para Internet.

Link: https://www.devmedia.com.br/novidades-do-php-5-4/27850

UNIDADE II Programação para a Internet 58


Material Complementar

LIVRO
Título: PHP e Laravel: Crie aplicações web como um verdadeiro
artesão
Autor: Rodrigo Turini.
Editora. Casa do Código.
Sinopse: Está começando com frameworks PHP? Então, que tal
criar sites e aplicações web, de forma extremamente produtiva,
com código bem escrito, de fácil manutenção e organizado? Sim,
isso é possível com o Laravel 5.1.
Nesse livro, Rodrigo Turini mostra os principais recursos do Lara-
vel 5.1, um importante framework PHP para desenvolvimento web.
Aprenda como escrever código elegante, simples e crie aplicações
robustas e escaláveis em PHP.
Voltado para iniciantes e seguindo uma didática prática, em poucas
páginas você irá escrever suas primeiras funcionalidades e, em
pouco tempo, terá um código funcionando e se comunicando com
um banco de dados, e implementará funcionalidades reais.

FILME/VÍDEO
Título: Curso de PHP
Ano: 2014
Sinopse: Curso completo para quem quer aprender a criar sites
utilizando as tecnologias de HTML5 + CSS3 + JavaScript de uma
maneira simples e objetiva. O professor Gustavo Guanabara vai
mostrar passo a passo como criar um site completo utilizando as
três principais tecnologias do momento.

Link do vídeo: https://www.cursoemvideo.com/course/curso-php-


-iniciante/

UNIDADE II Programação para a Internet 59


REFERÊNCIAS

BAKKEN, Stig Saether et al. PHP3 manual. Zend Technologies, Ltd, 1999.

BENTO, Evaldo Junior. Desenvolvimento web com PHP e MYSQL. São Paulo. Casa do
Código Editora. 2013.

CONVERSE, Tim; PARK, Joyce, MORGAN, Clarck. PHP5 and MySQL Bible. Indianapolis.
Wiley publishing, inc. 2004.

GUTMANS, Andi; BAKKEN, Stig; RETHANS, Derick. PHP 5 Power Programming (Bruce
Perens’ Open Source Series). Prentice Hall PTR, 2004.

MAZZA, Lucas. HTML5 e CSS3 - Domine a web do futuro. São Paulo. Casa do Código
Editora. 2012.

UNIDADE II Programação para a Internet 60


UNIDADE III
Programação para a Internet
Professor Mestre Ricardo Vieira

Plano de Estudo:

1. INTRODUÇÃO À BANCO DE DADOS


2. ACESSO AO BANCO DE DADOS COM PHP
3. CONSIDERAÇÕES FINAIS
4. REFERÊNCIAS

Objetivos de Aprendizagem:
• Conceituar e contextualizar a utilização de Banco de Dados.
• Compreender os tipos de acessos ao Banco de Dados utilizando o PHP.
• Estabelecer a importância do Banco de Dados MySQL e o PHP.

61
INTRODUÇÃO

Caro (a) aluno (a), esta unidade inicia os estudos com uma breve introdução ao
conceito e a utilização de Banco de Dados dentro da programação para internet. Na pri-
meira parte você poderá encontrar os assuntos de grande importância como escolher um
banco de dados, os bancos de dados suportados pela linguagem PHP e uma introdução ao
banco de dados MYSQL.

Na segunda parte, será tratada os assuntos relacionados ao acesso ao banco de


dados pela linguagem PHP. Você poderá ver os tipos de conexões do MySQL e muito mais.
Então vamos em frente, bons estudos e tenha um excelente aproveitamento!!!

UNIDADE III Programação para a Internet 62


1. INTRODUÇÃO A BANCO DE DADOS

Poderá ser definido como um banco de dados, um conjunto de dados devidamente


relacionados. Podem-se compreender como dados os objetos conhecidos que poderão ser
armazenados e que possuem um significado implícito, mas o significado do termo banco
de dados é mais restrito. Um banco de dados deverá possuir as seguintes propriedades:

● Uma coleção lógica coerente de dados com um significado inerente;


● Uma disposição desordenada dos dados não pode ser referenciada como banco
de dados;
● Projetado, construído e preenchido com valores de dados para um propósito
específico;
● Um banco de dados deverá possuir um conjunto predefinido de usuários e de
aplicações;
● Ele pode representar algum aspecto do mundo real, o qual é chamado de “mini
mundo”; qualquer alteração efetuada no “mini mundo” será automaticamente
refletida no banco de dados.

1.1. Escolhendo um Banco de Dados para PHP


Uma das maiores vantagens do PHP em relação a outras linguagens é a facilidade
de conectividade do banco de dados que ele oferece. O PHP suporta conexões nativas para
vários dos bancos de dados mais populares, de código aberto e comercial. Você poderá

UNIDADE III Programação para a Internet 63


fazer o downloads das ferramentas de desenvolvimento nos seguintes sites:

Neste site você poderá encontrar informações sobre o MySQL, documentação, downloads,
tutorial de instalação e muito mais:
https://netbeans.org/kb/docs/ide/install-and-configure-mysql-server_pt_BR.html

Este é o link direto para fazer o download do MySQL:


https://dev.mysql.com/downloads/installer/

Neste site você poderá encontrar o IDE para realizar a programação:


https://www.eclipse.org/oxygen/
https://www.eclipse.org/downloads/

Outra opção de IDE para realizar a programação:


http://brackets.io/

Observação:

Todos os links são de comunidades voltadas para o desenvolvimento, todos os


downloads são gratuitos e todas as ferramentas são open source. As duas IDEs são edi-
tores de textos, não somente de PHP, nela você terá suporte para outras linguagens de
programação como Java, C, C++, C#, Python, etc...

1.2. Mas, o que é um Banco de Dados?


Um banco de dados é um aplicativo separado, que armazena uma coleção de
dados. Cada banco de dados tem uma ou mais APIs distintas para criar, acessar, gerenciar,
pesquisar e replicar os dados que ele contém. Outros tipos de armazenamento de dados
podem ser usados, como arquivos no sistema de arquivos ou grandes tabelas de hash na
memória, mas quando profissionais falam sobre bancos de dados, eles se referem a um
aplicativo independente, como Oracle ou SQL Server, etc. (Converse; Park ;Morgan, 2004.
p.233).

1.3. Por que um Banco de Dados?


Se você se der ao trabalho de usar o PHP, precisará de um banco de dados.
Mesmo para algo pequeno, como um blog pessoal, você deve pensar bastante sobre as
vantagens de usar um banco de dados em vez de páginas estáticas ou arquivos de texto
incluídos que não possuem procedimentos de backup ou controle de transação.

UNIDADE III Programação para a Internet 64


1.4. Manutenção e Escalabilidade
Ter o PHP montando suas páginas rapidamente a partir de um modelo e um banco
de dados é uma experiência muito boa. Depois disso, você nunca mais voltará a gerenciar
um site HTML estático de qualquer tamanho. Para o esforço de programar uma página,
você pode produzir um número infinito de páginas uniformes. Mude um, e você mudou
todos eles. Agora há sites com centenas de milhares de páginas separadas - você pode ter
certeza de que ninguém as mantém a mão. Se você tem um conceito da Web que pode,
eventualmente, crescer para mais de algumas dúzias de páginas, pense em mudar para um
banco de dados o quanto antes.

1.5. Portabilidade
Como um banco de dados é um aplicativo e não uma parte do sistema operacional,
você pode transferir facilmente sua estrutura e conteúdo de uma máquina para outra ou
em certos casos, até mesmo de uma plataforma para outra. Isso é especialmente valioso
para os desenvolvedores web, que podem desenvolver um projeto sem poder controlar o
ambiente no qual ele será implementado. Existem até mesmo programas PHP conhecidos,
como o vBulletin, que mantêm a maior parte do código em um banco de dados para facilitar
a distribuição.

1.6. Segurança
Um banco de dados pode adicionar outra camada de segurança se for usado com
sua própria senha ou senhas. Por exemplo, digamos que você use o PHP para manter os
arquivos de clientes de uma empresa, preenchidos com informações sobre os preços que
cada cliente pagou pelo produto e reclamações feitas pelos clientes. Essa informação seria
de ouro para seus concorrentes e embaraçosa se vazasse para alguém, mas você precisa
colocá-la na Internet para que ela possa ser acessada por seus vendedores.

Como estamos usando PHP gravando em um banco de dados, você pode manter
as permissões do diretório, somente leitura e também pedir uma segunda senha antes
que o banco de dados possa ser alterado. Por exemplo, o caso de um site de conteúdo
com um grande número de visitantes, um número menor de escritores e um punhado de
editores. Você pode definir facilmente os níveis de permissão de banco de dados para cada
grupo, para que os visitantes possam ver apenas o conteúdo do banco de dados, formatado
em páginas da Web, editores podem procurar e alterar apenas suas próprias entradas e
editores podem navegar / alterar / excluir qualquer coisa no site.

UNIDADE III Programação para a Internet 65


1.7. Bancos de Dados Transacionais
Este termo refere-se a um design de banco de dados que busca maximizar a inte-
gridade dos dados. O paradigma transacional depende de commits e rollbacks.

Commit é o ato de enviar, ou seja, fazer um upload dos códigos para um banco
de dados. Os rollbacks são operações que retornam o banco de dados para algum estado
anterior. São importantes para a integridade do banco de dados, porque eles significam que
o banco de dados pode ser restaurado para uma cópia limpa mesmo depois que operações
erradas forem executadas. Eles são cruciais para a recuperação de falhas no servidor de
banco de dados; retrocedendo qualquer transação que estava ativa no momento da falha,
o banco de dados é restaurado para um estado consistente.

As transações concluídas com êxito serão confirmadas no banco de dados. Aqueles


que não forem concluídos com êxito não serão salvos ou o banco de dados será revertido
para sua condição anterior.

Geralmente, as transações se tornam mais úteis em situações em que você deseja


uma confirmação de tudo ou nada em um grupo de inserções. Um sistema de comércio
eletrônico pode usar reversões em situações em que o cartão de crédito de um cliente é
recusado, optando por não registrar as informações do cliente, o pedido de compra, a alte-
ração de inventário e assim por diante. Reversões também são úteis no caso de corrupção
de dados, como quando um servidor de banco de dados experimenta um incidente de falha
de hardware.

Um design de integridade de dados alternativo é chamado de atômico. Os propo-


nentes do paradigma atômico afirmam que ele é muito mais rápido e igualmente seguro,
mas as transações podem ser mais fáceis para um grande número de programadores
trabalharem, porque ele coloca mais da lógica na camada de banco de dados. (Converse;
Park; Morgan, 2004. p.239).

1.8. Bancos de Dados Relacionais e SQL


SQL é a linguagem dos bancos de dados relacionais. É uma linguagem comum
que possibilita que todos se entendem através de uma ampla gama de diferenças. Uma
consulta simples como SELECT de uma tabela será mais ou menos a mesma, independen-
temente de você estar usando um banco de dados pequeno, como o mSQL (miniSQL), ou

UNIDADE III Programação para a Internet 66


um sistema robusto como o Oracle 12i Enterprise.

A grande vantagem para você, no desenvolvimento Web, é que, depois de aprender


SQL, você poderá interagir com vários bancos de dados em todas as plataformas sem uma
curva de recapitulação.

1.9. Bancos de Dados Suportados por PHP


Se você nunca escolheu um banco de dados antes, a grande variedade de produ-
tos compatíveis com PHP pode ser vertiginosa no começo. A Tabela abaixo fornece uma
introdução aos vários bancos de dados disponíveis para os usuários PHP.

Figura 59 - Extensões de Banco de Dados suportados por PHP. (Fonte: EXTENSÕES DE BANCO DE DADOS)

UNIDADE III Programação para a Internet 67


1.10. Mas, o Que é o MySQL?

O MySQL é um código aberto e um RDBMS (SQL Relational Database Manage-


ment System) que é gratuito para muitos usos.

No início de sua história, o MySQL ocasionalmente enfrentava oposição devido à


falta de suporte para algumas construções SQL básicas, como subseleção e chaves estran-
geiras. O MySQL encontrou uma ampla e entusiasmada base de usuários para seus termos
liberais de licenciamento, desempenho e facilidade de uso. Sua aceitação foi auxiliada em
parte pela ampla variedade de outras tecnologias, como PHP, Java, Perl, Python e outras
que incentivaram seu uso por meio de extensões e módulos estáveis e
​​ bem documentados.

As Bases de dados em geral são úteis, indiscutivelmente a mais útil e consistente


família de produtos de software. Como muitos produtos concorrentes, gratuitos e comer-
ciais, o MySQL não é um banco de dados até que você forneça alguma estrutura e forma.
Você pode pensar nisso como a diferença entre um banco de dados e um RDBMS, ou seja,
o RDBMS mais os requisitos do usuário são iguais a um banco de dados.

O MySQL com mais de 10 milhões de instalações, é um dos sistemas de geren-


ciamento de banco de dados mais popular para servidores web. Ele foi desenvolvido em
meados da década de 1990, agora é uma tecnologia madura que alimenta muitos dos
destinos de internet mais visitados da atualidade.

Uma razão para seu sucesso é que sua utilização é gratuita. Mas também é ex-
tremamente poderoso e excepcionalmente rápido - pode ser executado, até mesmo no
hardware mais básico e dificilmente afeta os recursos do sistema. O MySQL também é
altamente escalável, o que significa que ele pode crescer com o seu site.

1.11. Fundamentos do MySQL

Um banco de dados (como já foi comentado) é uma coleção estruturada de registros


ou dados armazenados em um sistema de computador e organizado de forma que possa
ser rapidamente pesquisado e as informações possam ser rapidamente recuperadas.

O SQL no MySQL significa Structured Query Language. Essa linguagem é baseada

UNIDADE III Programação para a Internet 68


no inglês e também usada em outros bancos de dados, como Oracle e Microsoft SQL
Server. Ele é projetado para permitir solicitações simples de um banco de dados por meio
de comandos como apresentado nas Figuras 34, 35 e 36.

Figura 60 - Exemplo de estrutura de um Select.

Figura 61 - Exemplo de uma consulta com Select em banco de dados.

Um banco de dados MySQL contém uma ou mais tabelas, cada uma contendo
registros ou linhas. Dentro dessas linhas há várias colunas ou campos que contêm os
dados em si.

Figura 62 - Visualização pelo Prompt de Comando da estrutura de um banco de dados MySQL.

UNIDADE III Programação para a Internet 69


2. ACESSO AO BANCO DE DADOS COM PHP

Depois de instalar e configurar seu banco de dados MySQL, você pode começar a
escrever scripts PHP que interajam com ele. Aqui, explicaremos todas as funções básicas
que permitem que você passe dados de um site para outro.

2.1. Conectando-se ao MySQL

O comando básico para iniciar uma conexão MySQL é mysql_connect($hostname,


$user, $password); se você estiver usando variáveis ​​ou mysql_connect (‘localhost’, ‘root’,
‘senha’); se você estiver usando strings literais.

O mysql_connect estabelece uma conexão com um servidor MySQL. Todos os ar-


gumentos são opcionais e, caso estejam ausentes, os padrões são assumidos (‘localhost’,
nome de usuário do usuário que possui o processo do servidor, senha vazia). A cadeia do
nome do host também poderá incluir um número de porta. Por exemplo: “hostname: port”.

No caso de uma segunda chamada ser feita para mysql_connect com os mesmos
argumentos, nenhum novo link será estabelecido, mas, em vez disso, o link identificador do
link já aberto será retornado.
O link para o servidor será fechado assim que a execução do script terminar, a

UNIDADE III Programação para a Internet 70


menos que seja fechado anteriormente, chamando explicitamente mysql_close.

A senha é opcional, dependendo das características desse usuário do banco de


dados, porém, essa exigência é considerada uma boa prática. Se não, apenas deixe essa
variável desativada. Você também poderá especificar uma porta e um soquete para o ser-
vidor ($hostname: port: socket).

A função mysqli correspondente é mysqli_connect, que adiciona um quarto parâ-


metro, permitindo que você selecione um banco de dados na mesma função utilizada para
a conexão.

A função mysqli_select_db() existe, mas você precisará dela apenas se quiser usar
vários bancos de dados na mesma conexão. Você não precisará estabelecer uma nova
conexão toda vez que quiser consultar o banco de dados no mesmo script. Você precisará
executar essa função novamente, no entanto, para cada script que interage com o banco
de dados de alguma forma.

Em seguida, você deseja escolher um banco de dados para trabalhar:

● mysql_select_db ($database); se você estiver usando variáveis.


● mysql_select_db (‘phpbook’); se você estiver usando uma String literal.

Um banco de dados deverá selecionar toda vez que você fizer uma conexão, o
que significa pelo menos uma vez por página ou sempre que mudar de banco de dados.
Caso contrário, você receberá um erro de banco de dados não selecionado. Mesmo se
você criou apenas um banco de dados por daemon, você deve fazer isso, porque o MySQL
também vem com bancos de dados padrão, chamados mysql e teste, que você pode não
estar levando em conta.

Você pode achar conveniente agrupar todas as informações de conexão em uma


função de conexão personalizada e colocá-las em algum lugar onde possa acessá-las de
todos os seus scripts, por exemplo, o diretório de inclusão do PHP, ou no caso de um
servidor virtual, um arquivo de inclusão específico do site. Essa função pode ser visualizada
na Figura 63.

UNIDADE III Programação para a Internet 71


Figura 63 - Exemplo de conexão com um único Banco de Dados.

Se desejar, você poderia estender essa função criando links (por exemplo, $link1,
$link2) para vários bancos de dados no mesmo servidor. Este código também registra uma
mensagem de erro do MySQL no log de erros do PHP. Agora que você estabeleceu uma
conexão com um banco de dados específico, está pronto para fazer uma consulta.

2.2. Fazendo Consultas no MySQL

Uma consulta ao banco de dados do PHP é basicamente um comando do MySQL


que está envolvido em uma pequena função PHP chamada mysql_query (). É aqui que
você usará os manuais básicos SQL de SELECT, INSERT, UPDATE e DELETE.

Os comandos MySQL para CREATE e DROP, que são usados para criar e descar-
tar respectivamente uma tabela, também podem ser usados com uma função PHP se você
não deseja fazer seus bancos de dados usando o cliente MySQL.

Você poderá escrever uma consulta da maneira mais simples possível, da seguinte
maneira: mysql_query (“SELECT Nome FROM info_pessoal WHERE ID <10”);

PHP iria obedientemente tentar executá-lo. No entanto, existem muitas boas


razões para dividir este e outros comandos semelhantes em duas linhas com variáveis
extras, como esta: $query = “SELECT Nome FROM info_pessoal WHERE ID <10”; $result
= mysql_query ($query);

UNIDADE III Programação para a Internet 72


A principal razão é que a variável extra fornecerá a você uma informação extrema-
mente valiosa. Toda consulta MySQL fornece um recibo informando se você foi bem-su-
cedido ou não com comando. Fazendo uma analogia com as funcionalidades de um caixa
eletrônico quando você tenta retirar dinheiro. Se as coisas correrem bem, você dificilmente
necessitará ou notará o recibo, você poderá jogá-lo fora sem receio. Mas se ocorrer um
problema, o recibo lhe dirá sobre o que pode ter dado errado, similar ao tipo de mensagem
“A máquina não está distribuindo ou é de sua conta retirada?” Que pode ser impressa no
recibo do caixa eletrônico.

Outra vantagem de atribuir a String de consulta a uma variável é que você pode
visualizar a consulta com mais facilidade se encontrar um erro. É claro, você faria isso
escrevendo a variável em um log de erros - nunca descarregando para o navegador em
produção!

A função mysql_query toma como argumentos a String de consulta (que não deve
ter um ponto-e-vírgula entre aspas) e, opcionalmente, um identificador de link. A menos que
você tenha várias conexões, não é necessário o identificador do link. Ele retorna um valor
inteiro TRUE (diferente de zero) se a consulta foi executada com sucesso, mesmo que
nenhuma linha tenha sido afetada. Ele retorna um inteiro FALSE se a consulta foi ilegal ou
não executada corretamente por algum outro motivo.

Para os fins deste capítulo, deixamos o identificador de links desativado; no entanto,


se você precisar usar vários bancos de dados no seu script, poderá usar um código como
o seguinte:

Figura 64. Exemplo de consulta no banco de dados. Elaborado pelo autor, 2019.

Como esperado, o MySQL Improved, semelhante para esta função é mysqli_query.


É muito semelhante à sua contraparte, no entanto, os parâmetros de link e consultas mudam
de lugar e um terceiro parâmetro permite que você especifique um sinalizador de resultado
indicando como o PHP deve manipular o resultado.

UNIDADE III Programação para a Internet 73


Se sua consulta foi um INSERT, UPDATE, DELETE, CREATE TABLE ou DROP
TABLE e retornou TRUE, você poderá usar mysql_affected_rows para ver quantas linhas
foram alteradas pela consulta. Essa função, opcionalmente, usa um identificador de link,
necessário apenas se você estiver usando várias conexões. Não leva o resultado como ar-
gumento! Você chama a função assim, sem um manipulador de resultado: $affected_rows
= mysql_affected_rows ();

Se sua consulta for uma instrução SELECT, você poderá usar mysql_num_rows($re-
sult) para descobrir quantas linhas foram retornadas por um SELECT bem-sucedido.

Os mysqli_affected_rows e mysqli_num_rows se comportam exatamente da mes-


ma forma que os seus correspondentes mysql_.

A função mysql_num_rows pode ser útil na paginação de grandes conjuntos de


dados retornados por consultas MySQL.

2.3. Buscando Conjuntos de Dados do PHP

Uma coisa que muitas vezes parece temporariamente inibir os novos usuários do
PHP é o conceito de buscar dados do PHP. Seria lógico supor que o resultado de uma
consulta será os dados desejados, mas isso não está correto. O resultado de uma consulta
PHP é um inteiro representando o sucesso ou a falha ou a identidade da consulta.

O que realmente acontece é que um comando mysql_query() puxa os dados para


fora do banco de dados e envia um recibo de volta para o relatório do PHP sobre o status
da operação. Neste ponto, os dados existentes estão em um “campo de batalha”, que
é imediatamente acessível a partir do MySQL e do PHP, você pode pensar nisso como
uma espécie de área de preparação. Os dados estão lá, mas estão aguardando que o
comandante dê a ordem de implantar. Ele requer uma das funções mysql_fetch para tornar
os dados totalmente disponíveis para o PHP. (Converse; Park ;Morgan, 2004. p.281).

As funções de busca são as seguintes:

● mysql_fetch_row: Retorna a linha como uma matriz enumerada.


● mysql_fetch_object: Retorna a linha como um objeto.

UNIDADE III Programação para a Internet 74


● mysql_fetch_array: Retorna a linha como uma matriz associativa.
● mysql_result: Retorna uma célula de dados.

A diferença entre as três principais funções de busca é pequena. O mais geral é o


mysql_fetch_row, que pode ser usado conforme apresenta a Figura 38.

Figura 65. Exemplo de consulta mysql_fetch_row. Elaborado pelo autor, 2019.

Esse código vai gerar as linhas especificadas do banco de dados, cada linha con-
tendo uma linha ou as informações associadas a um ID exclusivo (se houver).

Em um array enumerado, os inteiros entre colchetes são chamados de desloca-


mentos de campo. Lembre-se de que eles sempre começam com o zero inteiro. Se você
começar a contar com 1, perderá o valor da sua primeira coluna.

A função mysql_fetch_object executa praticamente a mesma tarefa, exceto que


a linha é retornada como um objeto ao invés de um array. Obviamente, isso é útil para
aqueles que utilizam a notação orientada a objetos. Essa função pode ser visualizada na
Figura 66.

Figura 66. Exemplo de consulta mysql_fetch_object. Elaborado pelo autor, 2019.

A função de busca mais útil, mysql_fetch_array, oferece a escolha de resultados


como uma matriz associativa ou enumerada, ou ambos, que é o padrão. Isso significa que
você pode se referir a saídas pelo nome do campo do banco de dados em vez do número.
Essa função é visível na Figura 67.

UNIDADE III Programação para a Internet 75


Figura 67 - Exemplo de consulta mysql_fetch_array. Elaborado pelo autor, 2019.

Lembre-se que mysql_fetch_array também pode ser usado exatamente da mesma


maneira que mysql_fetch_row - com identificadores numéricos ao invés de nomes de cam-
pos. Ao usar essa função, você deixa a opção. Se você quiser especificar o deslocamento
ou o nome do campo em vez de disponibilizar ambos, você pode fazer assim: $offset_row
= mysql_fetch_array($resultado, MYSQL_NUM); ou
$associative_row = mysql_fetch_array ($ resultado, MYSQL_ASSOC);

Também é possível usar MYSQL_BOTH como segundo valor, mas como esse é o
padrão, é redundante.

Nas primeiras versões do PHP, mysql_fetch_row era considerado significativa-


mente mais rápido que mysql_fetch_object e mysql_fetch_array, mas isso não é mais um
problema, já que as diferenças de velocidade se tornaram imperceptíveis. A junta do PHP
agora recomenda o uso de mysql_fetch_array sobre mysql_fetch_row, pois oferece maior
funcionalidade e escolha a um custo menor em termos de dificuldade de programação,
perda de desempenho ou capacidade de manutenção.

A última e a menor das funções de busca é mysql_result(). Você só deve considerar


usar essa função em situações em que você tem certeza de que precisa apenas de um
dado para ser retornado do MySQL. Um exemplo de seu uso pode ser visualizado na Figura
41.

Figura 68. Exemplo de consulta mysql_result().Elaborado pelo autor, 2019.

UNIDADE III Programação para a Internet 76


A função mysql_result() usa três argumentos:

● Identificador de resultado;
● Identificador de linha;
● Field (opcionalmente).

Field pode obter o valor do deslocamento de campo como acima, ou seu nome
como em um array associativo (“Sobrenome”), ou seu nome de tabela de ponto de campo
MySQL (“info_pessoal.Sobrenome”).

Use o offset, se for possível, pois é substancialmente mais rápido que os outros
dois. Melhor ainda, não use essa função com qualquer frequência. Uma consulta bem
formada quase sempre retornará um resultado específico com mais eficiência.

Você nunca deverá usar mysql_result() para retornar informações que estão dispo-
níveis para você através de uma função PHP-MySQL pré-definida. O normal é inserir uma
linha e, em seguida, selecionar seu número de identificação (não é considerada um boa
prática se você selecionar MAX (ID)!). Use mysql_insert_id().

Todas as funções do PHP para buscar dados do MySQL possuem contrapartes


idênticas do mysql. Eles pegam os mesmos parâmetros e retornam resultados comparáveis.

Uma função especial do MySQL pode ser usada com qualquer uma das funções
de busca para designar mais especificamente o número da linha desejado. Isto é mys-
ql_data_seek(), que toma como argumentos o identificador de resultado e um número de
linha e move o ponteiro de linha interno para aquela linha do conjunto de dados. O uso
mais comum dessa função é reiterar um conjunto de resultados desde o início redefinindo
o número da linha para zero, semelhante a uma redefinição de matriz. Isso elimina outra
chamada de banco de dados onerosa para obter dados que você já tem no lado do PHP.
Veja um exemplo de como usar mysql_data_seek() na Figura 69.

UNIDADE III Programação para a Internet 77


Figura 69. Exemplo de consulta usando mysql_data_seek(). Elaborado pelo autor, 2019.

Sem usar mysql_data_seek(), o segundo uso do conjunto de resultados retornaria


nenhuma linha 0 porque ela já foi iterada até o final do conjunto de dados e o ponteiro per-
manece lá até que você a mova explicitamente. Esta função útil ajuda muito quando você
está formatando dados de uma maneira que não coloque campos em colunas e registros
em linhas.

2.4. Construindo a Verificação de Erros


A principal função de verificação de erros é chamada de die(). O die() não é uma
função específica do MySQL, o manual do PHP o relaciona em “Funções diversas”. Ele
simplesmente termina o script e retorna um String de sua escolha.

Figura 70. Exemplo de função de verificação de erros. Elaborado pelo autor, 2019.

Observe a sintaxe: a palavra ou (você poderia alternativamente usar ||, mas isso
não é tão divertido quanto dizer or die) e apenas um ponto-e-vírgula por par de alternativas.

Até muito recentemente, o MySQL via PHP retornava mensagens de erro muito
inseguras e sem iluminação (exceto para crackers) ao encontrar um problema com uma
consulta ao banco de dados. A função die() era frequentemente usada como uma forma
de exercer controle sobre o que o público veria no tratamento de erro. Agora que nenhuma
mensagem de erro é retornada, o die() pode ser ainda mais necessário, a não ser que você
queira que seus visitantes fiquem imaginando o que aconteceu.

UNIDADE III Programação para a Internet 78


Existem outros meios internos de error-checking que são mensagens de erro. Eles
são particularmente úteis durante a fase de desenvolvimento e depuração, e podem ser
facilmente comentados na edição final antes de serem exibidos em um servidor de produ-
ção. Como foi mencionado anteriormente, as mensagens de erro do MySQL não aparecem
mais por padrão. Se você quiser, você terá que perguntar por elas usando as funções
mysql_errno(), que retornará um número de código para cada tipo de erro ou mysql_error(),
que retorna a mensagem de texto. Em seguida, você pode enviá-los para um log de erros
personalizado usando a função error_log():

Figura 71. Exemplo de chamada de erros. Elaborado pelo autor, 2019.

No entanto, há mais no tratamento de erros do banco de dados do que no uso


criterioso de die(). Os servidores ficam indisponíveis, os conjuntos de dados poderão ser
corrompidos e assim por diante. O ideal é que toda interação com o banco de dados deverá
ser aninhada dentro de uma condicional que retorna o resultado desejado ao sucesso e
uma boa página de erros limpa em caso de falhas. É aqui que o die() “dropa”. A execução é
encerrada imediatamente para o script inteiro, deixando de lado, no mínimo, o fechamento de
tags para sua página HTML, caso se elas estiverem definidas no PHP. Além disso, poderá
haver muito mais scripts perfeitos ou html para ir na página, código que não será afetado por
uma conexão de banco de dados perdida ou uma consulta com falha. Finalmente, o die()
não deixa você saber que algo deu errado. Você realmente acha que seus usuários vão te
dizer? Provavelmente não. Será muito mais provável que eles deixem seu site com desgosto
e nunca retornem. Um exemplo de boa verificação de erros é mostrado na Figura 72.

Figura 72. Exemplo de verificação de erros. Elaborado pelo autor, 2019.

UNIDADE III Programação para a Internet 79


2.5. Criando Bancos de Dados MySQL com PHP

Você poderá, se desejar, realmente criar seus bancos de dados com PHP ao in-
vés de usar a ferramenta cliente MySQL. Essa prática tem vantagens em potencial, você
poderá usar um front-end atraente que possa atrair aqueles que acham o cliente de linha
de comando do MySQL simples ou meticuloso de usar, contrabalançado por uma grande
desvantagem, que é a segurança.

Para criar um banco de dados a partir do PHP, o usuário de seus scripts precisará
ter privilégios de CREATE / DROP no MySQL. Isso significa que qualquer um poderá se
apossar de seus scripts poderá acabar com todos os seus bancos de dados e seus con-
teúdos com a maior facilidade. Esta não é uma ótima ideia do ponto de vista de segurança.
Além disso, a maioria dos hosts da Web externos, de maneira muito sensata, não permite
que você faça isso em seus servidores de qualquer maneira.

Se você estiver pensando em criar bancos de dados com PHP, faça um grande
favor a si mesmo e, pelo menos, não armazene o nome de usuário e a senha do banco de
dados em um arquivo de texto. Faça você mesmo digitar seu nome de usuário e senha do
banco de dados em um formulário e passar as variáveis ​​para o manipulador de inserção
toda vez que usar esse script. Este é um caso em que manter as variáveis em
​​ um arquivo
de inclusão fora da sua árvore da Web não é uma precaução suficiente.

Para aqueles que gostam de viver perigosamente, as funções relevantes são:

● mysql_create_db (): Cria um banco de dados no host designado, com o nome espe-
cificado nos argumentos;
● mysql_drop_db (): Apaga o banco de dados especificado;
● mysql_query (): passa definições de tabela e descarta essa função.

Um script básico de geração de banco de dados pode ser visualizada no Figura 73.

Figura 73. Exemplo de script básico de geração de banco de dados. Elaborado pelo autor, 2019.

UNIDADE III Programação para a Internet 80


Existem também ferramentas pré-fabricadas como o phpMyAdmin que fazem
muito disso para você de uma forma simples. Você simplesmente precisará preencher um
formulário da Web e o script PHP no back-end criará o banco de dados de acordo com
suas especificações. Em muitos casos, a ferramenta também permitirá que você execute
outras tarefas administrativas, como verificar os tamanhos dos bancos de dados ou fazer
backup deles. Isso é ainda menos seguro do que fazer você mesmo, mas aparentemente
as pessoas usam essas ferramentas sem incidentes.

Várias outras ferramentas GUI estão disponíveis e não são específicas do banco
de dados, mas provavelmente funcionarão com o MySQL. Como este banco de dados se
tornou cada vez mais popular, um número de aplicações para Windows e Linux entraram
em jogo que permitem que você administre bancos de dados MySQL na forma gráfica com
a qual você pode estar acostumado. Assim como suas contrapartes da Web, esses apli-
cativos oferecem controle administrativo completo, mas sem a dor de cabeça de se expor
ao risco de segurança de uma interface baseada na Web. A lista muda frequentemente à
medida que o software vai e vem, portanto, uma listagem aqui provavelmente sairia muito
desatualizada. No entanto, o site MySQL mantém uma lista bastante abrangente em www.
mysql.com/portal/software/index.html.

Se você insistir em usar uma ferramenta GUI da Web para projetar seus bancos de
dados, pelo menos, minimizar os riscos de segurança, apenas usando-o em uma máquina
de desenvolvimento dentro do firewall. Depois de manipular o design do banco de dados
de acordo com o conteúdo que desejar, você poderá iniciar um despejo de banco de dados
e mover toda a estrutura e o código para um servidor de banco de dados de produção.
Não use o PHPMyAdmin ou qualquer outro GUI da Web em produção, a menos que seja
absolutamente necessário.
Para saber mais sobre a ferramenta phpMyAdmin, como Manual de Referências do
MySQL, Segurança MySQL e muito mais, você poderá consultar no site da Oracle:

https://www.oracle.com/search/results?cat=mysql&Ntk=SI-ALL5&Ntt=phpMyAdmin

UNIDADE III Programação para a Internet 81


SAIBA MAIS
Caro (a) aluno (a) para dar continuidade aos estudos de uma maneira prática, trago
a sugestão de leitura deste artigo e também dos outros artigos interligados a ele, que
te proporcionará uma visão mais ampliada a respeito do MySQL e também sobre
a utilização do PhpMyAdmin. Garanto que terá uma leitura agradável e com muito
complemento aos estudos desta unidade.

https://www.devmedia.com.br/php-e-mysql-conectando-e-exibindo-dados-de-forma-
-rapida-dica/28526

REFLITA
“Estou fazendo um sistema operacional gratuito (apenas um hobby, não será grande
e profissional como GNU) para 386/486 AT.”
(Linus Torvalds).

Caro(a) aluno(a), deixo esta mensagem com o propósito de mostrar a todos v.s que
é possível realizar grandes feitos, começando pequeno, de baixo, e como Linus
Torvalds fez, sem pretensões, criou um dos maiores sistemas operacionais da atua-
lidade. Vai, você também é capaz, crie os projetos que fazem sentido para você e
para o mundo.

Referência: https://www.tecmundo.com.br/internet/3145-frases-impactantes-sobre-
-tecnologia-e-informatica.htm

UNIDADE III Programação para a Internet 82


4. CONSIDERAÇÕES FINAIS

Estamos muito felizes porque você chegou até aqui. Sabemos que não foi fácil,
pois, abriu mão do tempo livre para se dedicar aos estudos. Tempo esse que está sendo
recompensado devido a sua dedicação na busca de um aprimoramento para a sua carreira
profissional.

Caro(a) Aluno(a), Parabéns pelo seu esforço e dedicação! Continue com força e
garra que na próxima unidade você terá muita informações novas e interessantes, a respei-
to de Orientação a objetos em PHP e Web Service, e muito mais.

Estaremos juntos na próxima unidade. Até lá!

UNIDADE III Programação para a Internet 83


Material Complementar

LIVRO
Título: MySQL - Comece com o principal banco de dados open
source do mercado
Autor: Vinícius Carvalho
Editora: Casa do Código Editora.
Sinopse: O MySQL é praticamente onipresente nos projetos de
software atuais. Boa parte deles o utiliza como banco de dados
para armazenar as informações da sua aplicação, por conta da
sua facilidade de instalação e configuração.
Neste livro, Vinícius Carvalho introduz o leitor no mundo do banco
de dados MySQL, ensinando os principais comandos DML e DDL,
e ferramentas gráficas. Você vai aprender a trabalhar com proce-
dures, manipular triggers, criar backups e vários outros recursos
que fazem a diferença no dia a dia.

VÍDEO
Título: Curso de Banco de Dados com MySQL
Ano: 2016.
Sinopse: O MySQL é um dos Sistemas Gerenciadores de Banco
de Dados mais populares do mercado. Ele pertence à Oracle e é
utilizado na maioria dos sites atualmente. Este curso vai guiá-lo
pelos comandos mais famosos da Linguagem SQL e ensinar téc-
nicas modernas de modelagem de dados.
Link do vídeo:
https://www.cursoemvideo.com/course/curso-banco-dados-mysql/

UNIDADE III Programação para a Internet 84


4. REFERÊNCIAS

BAKKEN, Stig Saether et al. PHP3 manual. Zend Technologies, Ltd, 1999.

BENTO, Evaldo Junior. Desenvolvimento web com PHP e MYSQL. São Paulo. Casa do
Código Editora. 2013.

CARVALHO, Vinícius. MySQL - Comece com o principal banco de dados open source
do mercado. São Paulo. Casa do Código Editora. 2015.

EXTENSÕES DE BANCO DE DADOS. Documentação PHP - Referencia PHP 7.1.29


Relesead. <www.php.net/manual/pt_BR/refs.database.php> acessado em 02/05/2019

GUTMANS, Andi; BAKKEN, Stig; RETHANS, Derick. PHP 5 Power Programming (Bruce
Perens’ Open Source Series). Prentice Hall PTR, 2004.

MAZZA, Lucas. HTML5 e CSS3 - Domine a web do futuro. São Paulo. Casa do Código
Editora. 2012.

NIXON, Robin. Learning PHP, MySQL & JavaScript. Sebastopol. O’Reilly Media, Inc.
2009.

UNIDADE III Programação para a Internet 85


UNIDADE IV
Programação para a Internet
Professor Mestre Ricardo Vieira

Plano de Estudo:
1. ORIENTAÇÃO A OBJETOS COM PHP
2. WEB SERVICE
3. CONSIDERAÇÕES FINAIS
4. REFERÊNCIAS

Objetivos de Aprendizagem:
● Conceituar e contextualizar a respeito da Orientação a Objetos e PHP.
● Fornecer conceitos sobre o encapsulamento em PHP.
● Compreender os tipos de frameworks utilizados em Web Services.
● Estabelecer a importância dos frameworks REST, XML-RPC e SOAP na utilização
nos Web Services.

86
INTRODUÇÃO

Esta unidade inicia os estudos com uma introdução a Orientação a Objetos com
PHP, que é apresentado os conceitos de classe, criação de objetos, construtores, herança
e muito mais.
Na segunda parte dos nossos estudos trataremos dos conceitos dos principais
padrões de web service. Será apresentado uma introdução aos padrões REST, XML-RPC
e SOAP.
Agora, vamos em frente! E continuando os estudos. Só falta um pouquinho para
você concluir a disciplina! Vamos lá! Mas tenha em mente que o melhor, deixamos para o
final…
Divirta-se e bom Estudo!

UNIDADE IV Programação para a Internet 87


1. ORIENTAÇÃO A OBJETOS COM PHP

1.1. INTRODUÇÃO

Foi com a versão do PHP 3, que foi introduzido o suporte para programação
orientada a objetos (OO). Embora ainda utilizável, o suporte foi extremamente simplista e
não melhorou muito com o lançamento do PHP 4, na qual, a compatibilidade com versões
anteriores era a principal preocupação. Devido à demanda popular por suporte aprimorado
à OO, o modelo de objeto foi completamente redesenhado para o PHP 5, adicionando uma
grande quantidade de recursos e mudando o comportamento do próprio “objeto base”. Se
você é novo no PHP, esta unidade abordará o modelo orientado a objetos.

1.2. OBJETOS
 
A principal diferença na OO em oposição à Programação Funcional é que os dados
e o código são empacotados juntos em uma entidade, que é conhecida como um objeto. As
aplicações orientados a objetos são geralmente divididos em vários objetos que interagem
entre si. Cada objeto é geralmente uma entidade do problema, que é independente e possui
várias propriedades e métodos. As propriedades são os dados do objeto, que basicamente
significam as variáveis que pertencem ao objeto. Os métodos são as funções que o objeto
suporta. Indo um passo além, a funcionalidade destinada a outros objetos serem acessados

UNIDADE IV Programação para a Internet 88


e usados durante a interação é chamada de interface de um objeto.

Uma classe é um modelo para um objeto e descreve quais os métodos e proprieda-


des um objeto desse tipo terá. No exemplo a seguir, a classe representa uma pessoa. Para
cada pessoa em sua inscrição, você poderá criar uma instância separada dessa classe que
represente as informações da pessoa. Por exemplo, se duas pessoas em nosso aplicativo
forem chamadas de João e Maria, criaríamos duas instâncias separadas dessa classe e
chamamos o método setNome() de cada uma com seus nomes para inicializar a variável
que contém o nome da pessoa, $nome. Os métodos e membros que outros objetos que
interagem podem usar é um contrato de classe. No exemplo a seguir, os contratos da
pessoa para o mundo exterior são os dois métodos set e get, setName() e getName().
(GUTMANS; BAKKEN; RETHANS. 2005. P. 56).

O código PHP da Figura 74 define a classe, cria duas instâncias, define o nome de
cada instância apropriadamente e imprime os nomes.

Figura 74 - Definição da classe Pessoa. Elaborado pelo autor, 2019.

UNIDADE IV Programação para a Internet 89


1.3. Objetos como Tipos de Dados
Além de nos permitir armazenar funções em nossos dados, uma boa linguagem de
programação OO nos permitirá definir essas combinações como tipos de dados genuina-
mente novos que o idioma suporta como qualquer outro tipo.

Depois que esse tipo for definido, poderemos criar quantos objetos desejar, da
mesma forma que podemos criar quantos inteiros quiser, dado o tipo inteiro. Na termino-
logia orientada a objetos, o termo class é usado como uma referência à definição de tipo
geral, que especifica os membros de dados e as funções de membro que cada instância
dessa classe deverá ter.

O termo objeto ou instância refere-se a qualquer instância individual do tipo. Por


exemplo, depois de definirmos uma classe chamada Calendário, que especifica os dife-
rentes tipos de dados e funções que cada calendário que se respeita deverá ter, podemos
criar qualquer número de objetos deste Calendário, que podem estar associados a pessoas
individuais.

1.3.1. Herança
Depois que escrever um programa que usa a classe Agenda, talvez deseje fazer
uma versão mais específica do programa para uma finalidade específica. O que gostaríamos
realmente de fazer é copiar a maior parte do código da classe Calendário, mas alterá-lo em
apenas alguns locais, para que seja impresso de forma diferente ou tenha um conjunto de
feriados culturalmente apropriado ou nos permita agendar compromissos.

Este desejo comum é o suficiente para que o OO ofereça um mecanismo para


suportá-lo, chamado herança. A ideia básica é que você pode definir uma classe em termos
de outra classe e, em seguida, especificar apenas as coisas que você quer que sejam
diferentes em sua própria classe. Se você visualizar a classe original como “pai”, o padrão
é que ambas as definições de função e definições de dados sejam herdadas por sua classe
“filha”, a menos que você especifique o contrário. Isso acaba sendo uma técnica poderosa
para reutilizar definições de classes. (CONVERSE; PARK; MORGAN, 2004. p 373)

UNIDADE IV Programação para a Internet 90


1.3.2. Encapsulamento
Parte do objetivo de segregar dados e funções em objetos, é reduzir a complexi-
dade da programação, reduzindo as interações desnecessárias. Não há razão para que os
calendários saibam sobre os componentes internos das receitas culinárias ou vice-versa.
Assim, algumas linguagens OO realmente impõem barreiras de informações entre objetos -
depois que o programador define quais partes das receitas e calendários serão puramente
internas e privadas para essas classes, a linguagem proíbe que o código externo a um ob-
jeto interfira no funcionamento interno de um objeto. Esse tipo de ocultação de informações
é chamado de encapsulamento e, embora isso pareça restritivo, pode ser uma boa fonte
de clareza. Em particular, se o programador que projetou uma determinada classe sabe
que algumas partes de seu funcionamento foram projetadas para serem privadas nesse
sentido, o programador também sabe que essas partes poderão ser redesenhadas sem
verificação com todos que poderão estar usando o código dessa classe. O suporte para
encapsulamento surgiu pela primeira vez no PHP5.

1.3.3. Construtores e Destruidores


Depois que você definir uma classe, você poderá fazer quantas instâncias quiser.
Cada vez que você criar uma instância desse tipo, sua linguagem OO preferida aloca me-
mória para armazenar a instância e fornece uma maneira de se referir a essa instância
posteriormente no programa. Com frequência, há várias etapas de inicialização que você
deseja executar toda vez que criar um objeto dessa classe. As funções de construtor ofe-
recem uma maneira de criar esse conjunto de etapas na definição da classe. A maneira
padrão de criar uma nova instância é chamar uma função de construtor, que geralmente
tem o mesmo nome da classe e que você poderá personalizar para fazer toda a inicialização
necessária.

1.3.4. Destruidores
São o oposto de construtores e especificam todas as ações de limpeza que deverão
acontecer quando um objeto for dispensado.

1.4. Terminologias
Existem alguns termos padrão no jargão da OO para todos os conceitos de que
foi falado até agora. Vários desses termos têm nomes alternativos, que incluímos entre
parênteses.
 

UNIDADE IV Programação para a Internet 91


● Class: Este é um tipo de dados definido pelo programador, que inclui funções
locais, bem como dados locais. Você pode pensar em uma classe como um
modelo (ou molde ou formulário) para fazer muitas instâncias do mesmo tipo
(ou classe) de objeto.

● Objeto: Também conhecido como instância de objeto ou instância. Uma instân-


cia individual da estrutura de dados definida por uma classe. Você define uma
classe uma vez e depois cria muitos objetos que pertencem a ela.

● Variável de Membro: Também conhecida como propriedade, atributo ou variá-


vel de instância. Uma das partes de dados do componente em uma definição
de classe.
 
● Função de Membro: Também conhecido como método. Um membro que é
uma função.

● Herança: O processo de definir uma classe em termos de outra classe. A nova


classe (filha) tem todos os dados de membro e definições de função de membro
da classe antiga (pai) por padrão, mas ela poderá definir novos membros ou
“substituir” funções-pai e dar-lhes novas definições. Dizemos que a classe A
herda da classe B se a classe A é definida em termos de classe B dessa maneira.

● Classe “pai”: Ou superclasse ou classe base. Uma classe herdada de outra


classe.

● Classe “filha”: Ou subclasse ou classe derivada. Uma classe que herda de


outra classe.

1.5. Declarando uma Classe

Antes de poder usar um objeto, você deverá definir uma classe com a palavra-cha-
ve class, antes de poder usar um objeto. As definições de classe contém o nome da classe,
que diferencia maiúsculas de minúsculas, suas propriedades e seus métodos.
O Exemplo abaixo define a classe Usuario com duas propriedades, que são $nome
e $senha (indicadas pela palavra-chave public - consulte “Propriedade e escopo do méto-

UNIDADE IV Programação para a Internet 92


do”). Ele também cria uma nova instância chamada $object dessa classe.

Declarando uma classe e examinando um objeto conforme Figura 75.

Figura 75 - Declaração de uma classe. Elaborado pelo autor, 2019.

Aqui foi usada uma função muito importante chamada print_r. Ela pede ao PHP
para exibir informações sobre uma variável em formato legível. (O _r significa legível para
humanos.) No caso do novo objeto $object, ele exibirá a mensagem conforme código a
seguir:

Figura 76 - Mensagem exibida pelo $object. Elaborado pelo autor, 2019.

No entanto, um navegador compacta todo o espaço em branco, portanto, a saída


em um navegador é um pouco mais difícil de ler: Objeto de Usuário ([nome] => [senha] =>).

A saída informará que em qualquer caso, o $object será um objeto definido pelo
usuário que possui o nome e a senha das propriedades.

1.6. Criando um Objeto

Para criar um objeto com uma classe especificada, você deverá usar a palavra-cha-
ve new, assim: $object = new Class. Aqui estão algumas maneiras pelas quais poderíamos
fazer isso: $object = new Usuario; e $temp = new Usuario (‘nome’, ‘senha’);

Na primeira linha, simplesmente atribuímos um objeto à classe Usuario.

UNIDADE IV Programação para a Internet 93


No segundo, passamos parâmetros para a chamada.

Uma classe poderá exigir ou proibir argumentos; poderá permitir também argumen-
tos, sem precisar explicitamente deles.

1.7. Acessando Objetos

Vamos adicionar algumas linhas ao exemplo anterior e verificar os resultados. O


Exemplo apresentado na Figura 77 estende o código anterior definindo as propriedades do
objeto e chamando um método:

Figura 77 - Criando e interagindo com um objeto. Elaborado pelo autor, 2019.

Como você pode ver a sintaxe para acessar a propriedade de um objeto é: $object->
propriedade. Da mesma forma, você chamará um método como este: $object-> método().

Pode observar-se que a propriedade e o método de exemplo, não possuem sinais


$ na frente deles. Se fosse introduzido o sinal $, o código não funcionaria, pois tentaria
referenciar o valor dentro de uma variável. Por exemplo, a expressão $ object ->
$propriedade, tentaria procurar o valor atribuído a uma variável denominada $propriedade
(digamos que o valor é a string brown) e, em seguida, tentar referenciar a propriedade
$object-> brown. Se $propriedade for indefinido, uma tentativa de referenciar $object->
NULL ocorreria e causaria um erro.
Quando analisamos, no uso do recurso Visualizar fonte do navegador (clicando com
o botão direito no browser que você estiver utilizando), a saída do exemplo é a seguinte:

UNIDADE IV Programação para a Internet 94


Figura 78 - Saída do recurso Visualizador fonte do navegador. Elaborado pelo autor, 2019.

1.8. Clonando Objetos

Depois de criar um objeto, ele será passado por referência, quando você o passa
como um parâmetro. Na metáfora da caixa de fósforos, é como manter vários segmentos
anexados a um objeto armazenado em uma caixa de fósforos, para que você possa seguir
qualquer thread anexado para acessá-lo.
Em outras palavras, fazer atribuições de objetos não copia objetos em sua totali-
dade. Você verá como isso funciona no exemplo da Figura 79, onde definimos uma classe
Usuario muito simples, sem métodos e apenas o nome da propriedade.

Figura 79 - Clonando objetos.Elaborado pelo autor, 2019.

Aqui, primeiro criamos o objeto $object1 e atribuímos o valor Maria à propriedade


nome. Então, criamos $object2, atribuindo a ela o valor de $object1, e atribuímos o valor
Ana apenas à propriedade nome de $object2, ou assim pensamos. Mas este código gera
o seguinte saída:

nome do objeto1 = Ana


nome do objeto2 = Ana

UNIDADE IV Programação para a Internet 95


Mas, o que aconteceu? Tanto $object1 quanto $object2 se referem ao mesmo ob-
jeto, então se você mudar a propriedade nome de $object2 para Ana, também definirá essa
propriedade para $object1.
Para evitar essa confusão, você poderá usar o operador clone, que criará uma
nova instância da classe e copiará os valores da propriedade da instância original para a
nova. O Exemplo da Figura 80 ilustra esse uso.

Figura 80 - Exemplo: clonando um objeto. Elaborado pelo autor, 2019.

A saída deste código é o que inicialmente desejávamos:

nome do objeto1 = Maria


nome do objeto2 = Ana

1.9. Construtores
Ao criar um novo objeto, você poderá passar uma lista de argumentos para a classe
que estiver sendo chamada. Estes argumentos serão passados ​​para um método especial
dentro da classe, chamado de construtor, que inicializa várias propriedades. Para fazer isso,
você usará o nome da função __construct, isto é, construção precedida por dois caracteres
sublinhado (underline). Exemplo na Figura 81.

Figura 81 - Criando um método construtor. Elaborados pelo autor, 2019.

UNIDADE IV Programação para a Internet 96


1.10. Destruidores

Você também poderá criar métodos destruidores. Essa habilidade é útil quando o
código faz a última referência a um objeto ou quando um script chega ao final. O exemplo
abaixo mostra como você poderá criar um método de destruição. O destruidor poderá fazer
a limpeza, como liberar uma conexão com um banco de dados ou algum outro recurso
que você reservou dentro da classe. Como você reservou o recurso dentro da classe, será
necessário liberá-lo aqui ou ele permanecerá indefinidamente. Muitos problemas em todo
o sistema são causados ​​por programas que reservam recursos e esquecem liberá-los. O
exemplo da Figura 82 apresenta um método destruidor.

Figura 82 - Criando um método destruidor. Elaborado pelo autor, 2019.

1.11. Propriedade e Escopo do Método


A linguagem de programação Orientada a Objetos PHP, fornece três palavras-cha-
ve para controlar o escopo de propriedades e métodos (membros):

1.11.1. public
Os membros públicos podem ser referenciados em qualquer lugar, inclusive por
outras classes e instâncias do objeto. Esse é o padrão quando as variáveis são
​​ declaradas
com as palavras-chave var ou public ou quando uma variável é explicitamente declarada
na primeira vez que for usada. As palavras-chave var e public são intercambiáveis ​​porque,
embora seja obsoleta, var será retida para compatibilidade com versões anteriores do PHP.
Os métodos são considerados públicos por padrão.

1.11.2. protected
Esses membros podem ser referenciados apenas pelos métodos de classe do
objeto e de qualquer subclasse.

UNIDADE IV Programação para a Internet 97


1.11.3. private
Esses membros poderão ser referenciados apenas por métodos dentro da mesma
classe, não por subclasses. Veja como decidir qual você precisa usar:

● Use public quando o código externo deverá acessar esse membro e as classes
de extensão também deverão herdá-lo.
● Use protected quando o código externo não deverá acessar esse membro,
mas as classes de extensão deverão herdá-lo.
● Use private quando o código externo não deverá acessar esse membro e as
classes de extensão também não deverão herdá-lo.

O exemplo da Figura 83 ilustra o uso dessas palavras-chave.

Figura 83 - Alterando o Escopo da Propriedade e do Método. Elaborado pelo autor, 2019.

1.12. Métodos Estáticos

Você poderá definir um método como estático, o que significa que ele será chama-
do em uma classe, não em um objeto. Um método estático não terá acesso a nenhuma
propriedade de objeto e será criado e acessado como no exemplo da Figura 53.

Figura 84 - Exemplo: Criando e acessando um método estático. Elaborado pelo autor, 2019.

UNIDADE IV Programação para a Internet 98


Observe como chamamos a própria classe, juntamente com o método estático,
usando dois pontos duplos (::), também conhecido como o operador de resolução de es-
copo, não ->.
As funções estáticas são úteis para executar ações relacionadas à classe em si,
mas não a instâncias específicas da classe. Você poderá ver outro exemplo de um método
estático na Figura 85.

Figura 85 - Método estático. Elaborado pelo autor, 2019.

1.13. Propriedades Estáticas

A maioria dos dados e métodos se aplicará a instâncias de uma classe. Por exem-
plo, em uma classe de usuário, você quer fazer coisas como definir a senha de um usuário
específico ou verificar quando o usuário foi registrado. Esses fatos e operações se aplicam
separadamente a cada usuário e, portanto, usam propriedades e métodos específicos da
instância.

Mas, ocasionalmente, você deseja manter dados sobre uma classe inteira. Por
exemplo, para informar quantos usuários estão registrados, você armazenará uma variável
que se aplica a toda a classe Usuario. O PHP fornece propriedades e métodos estáticos
para esses dados.

Como foi mostrado brevemente no exemplo: Criando e acessando um método es-


tático, declarar membros de uma classe estática torna-os acessíveis sem uma instanciação
da classe. Uma propriedade declarada estática não poderá ser acessada diretamente em
uma instância de uma classe, mas um método estático poderá.

UNIDADE IV Programação para a Internet 99


O exemplo a seguir define uma classe chamada Teste com uma propriedade está-
tica e um método público.

Figura 86 - Definindo uma classe com uma propriedade estática. Elaborado pelo autor, 2019.

Quando você executar esse código, ele retorna a seguinte saída:

Figura 87 - Saída com uma propriedade estática. Elaborada pelo autor, 2019.

Este exemplo mostra que a propriedade $static_property poderia ser diretamente


referenciada a partir da própria classe através do operador de dois pontos no Teste A. Além
disso, o Teste B poderia obter seu valor chamando o método get_sp do objeto $temp, criado
da classe Teste. Mas o Teste C falhou, porque a propriedade estática $static_property não
estava acessível para o objeto $temp.

Observe como o método get_sp acessa $static_property usando a palavra-chave


self. É assim que uma propriedade ou constante estática poderá ser acessada diretamente
dentro de uma classe.

1.14. Herança

Depois de escrever uma classe, você poderá derivar subclasses dela. Isso poderá
economizar muita reescrita de código: você poderá pegar uma classe semelhante àquela

UNIDADE IV Programação para a Internet 100


que você precisar escrever, estendê-la a uma subclasse e apenas modificar as partes que
são diferentes. Você consegue isso usando a palavra-chave extends.

No exemplo da Figura 88, a classe Assinante será declarada uma subclasse de


Usuário por meio da palavra-chave extends.

Figura 88 - Herdando e estendendo uma classe. Elaborado pelo autor, 2019.

A classe Usuario original possui duas propriedades, $nome e $senha e um método


para salvar o usuário atual no banco de dados. O Assinante estende essa classe adicio-
nando duas propriedades adicionais, $telefone e $email, e inclui um método de exibir as
propriedades do objeto atual usando a variável $this, que se refere aos valores atuais do
objeto que está sendo acessado. A saída deste código é a seguinte:

Nome: Paulo
Senha: 123
Telefone: 012 345 6700
Email: paulo@bloggs.com

1.15. A Palavra-chave Parent


Se você escrever um método em uma subclasse com o mesmo nome de uma em
sua classe parent, suas instruções substituirão as da classe parent. Às vezes, esse não é
o comportamento desejado e você precisar acessar o método do parent. Para fazer isso,

UNIDADE IV Programação para a Internet 101


você poderá usar o operador parent, como no exemplo da Figura 89.

Figura 89 - Substituindo um método e usando o operador parent. Elaborado pelo autor, 2019.

Esse código cria uma classe chamada Pai e uma subclasse chamada Filho que
herda suas propriedades e métodos e, em seguida, substitui o teste do método. Portanto,
quando a linha 3 chama o método test(), o novo método será executado. A única maneira
de executar o método de teste sobrescrito na classe Pai é usar o operador pai, conforme
mostrado na  function test2() da classe Filho. O código gera o seguinte resultado:
[Classe Filho] Eu sou Luke
[Class Pai] Eu sou seu pai

Se você desejar garantir que seu código chame um método da classe atual, você
poderá usar a palavra-chave self, assim: self::method ();

1.16. Construtores de Subclasse

Quando você estender uma classe e declarar seu próprio construtor, deverá estar
ciente de que o PHP não chamará automaticamente o método construtor da classe pai. Se
você quiser ter certeza de que todo o código de inicialização será executado, as subclasses
deverão sempre chamar os construtores pais, como na Figura 90.

UNIDADE IV Programação para a Internet 102


Figura 90 - Chamando o construtor da classe pai.Elaborado pelo autor, 2019.

Este exemplo aproveita a herança da maneira típica. A classe Felinos criou a


propriedade $pêlos, que gostaríamos de reutilizar, portanto, criamos a classe Tigre para
herdar $pêlos e, além disso, criamos outra propriedade, $listras. Para verificar se ambos os
construtores foram chamados, o programa gera o seguinte:

Tigres têm...
Pêlos: TRUE
Listras: TRUE

1.17. Métodos Finais


Quando você desejar impedir que uma subclasse substitua um método de super-
classe, você poderá usar a palavra-chave final. O exemplo da Figura 91 demonstra isto.

Figura 91 - Criando um método final.Elaborado pelo autor, 2019.

Depois de ter digerido o conteúdo deste capítulo, você deverá ter uma forte noção
do que o PHP pode fazer por você. Você deverá ser capaz de usar funções com facilidade
e, se desejar, escrever código orientado a objetos.

UNIDADE IV Programação para a Internet 103


2. WEB SERVICE

As Web Services poderão oferecer imediatas recompensas na transferência de


dados, especialmente para aplicativos da Web, e poderão desbloquear a promessa da
computação distribuída. Embora exista muita desinformação sobre as tecnologias, e
embora grande parte da ação esteja acontecendo dentro de intranets e transações semi
privadas, você pode começar a se familiarizar com o PHP para criar e consumir serviços da
Web. (MITCHELL. 2013. p. )

O REST, XML-RPC e SOAP são os três principais padrões de serviços da Web em


discussão.

● REST: É o mais leve e fácil de usar, mas oferece a menor funcionalidade.


● SOAP: É o mais complicado e como consequência, apresenta a maior parte dos
problemas de interoperabilidade, mas grandes fornecedores como a Microsoft e
a IBM têm apoiado o suporte.
● XML-RPC: Poderá oferecer uma boa combinação de poder e simplicidade, mas
não oferece suporte a grandes fornecedores.

O PHP poderá ser usado para criar servidores e clientes em REST, XML-RPC e
SOAP. No entanto, particularmente com o SOAP, a sintaxe é tão complexa que um pacote
de terceiros pode ser altamente útil para ajudar com as etapas de serialização, embaralha-

UNIDADE IV Programação para a Internet 104


mento de tipos e criação de solicitações exigidas pelos serviços da Web.

2.1. REST

O que é o REST?
REST é um acrônimo para REpresentational State Transfer (Transferência de
Estado Representacional) e representa um estilo de arquitetura de software que pode ser
seguido ao projetar sistemas de software. Ele é ideal para aplicativos de software baseados
em serviços da Web.
Os princípios relacionados ao REST foram descritos pela primeira vez por Roy
Fielding em sua dissertação de Ph.D. e seu ponto principal é que já temos tudo o que
precisamos para implementar serviços da Web - no próprio HTTP.
Todos os serviços REST, portanto, deverão ser alcançados por URLs (Uniform Re-
source Locator, e em português é conhecido por Localizador Padrão de Recursos) normais
usando o método HTTP GET e retornam XML sem nenhuma quebra automática codificada.
Para todas as intenções e propósitos, um serviço REST é apenas uma página XML na
Web, embora geralmente não seja destinado a ser lido por um ser humano usando um
navegador.

A grande parte do estilo REST é a capacidade de endereçamento universal, portan-


to, os serviços da Web que retornam dados em resposta a um HTTP POST não são tecni-
camente REST-ful. O REST é particularmente valioso para serviços focados no conteúdo.
Você poderá criar um documento XML em tempo real e seus usuários poderão acessá-lo de
maneira confiável como uma URL. Em teoria, o REST também deverá ser mais fácil de lidar
com usuários pouco técnicos. Por outro lado, o REST não possui suporte interno para tipos
complexos, pois não há um vocabulário compartilhado, não há uma maneira específica de
designar um array versus uma String.

O estilo arquitetural REST é chamado muitas vezes, de estilo arquitetônico da Web.


A grande maioria dos aplicativos da web demonstram as características do estilo arquitetu-
ral REST enquanto são criados os serviços na Web.

Ao se utilizar o REST, uma abordagem client/server será usada para separar a


interface do usuário, do armazenamento de dados. A interação client/server não possui um
estado e as interações usarão uma interface uniforme.

UNIDADE IV Programação para a Internet 105


Um dos elementos-chave da arquitetura REST é o conceito de um recurso. Os
servidores hospedarão os recursos e os clientes irão consumir estes recursos. Qualquer
informação que possa ser nomeada poderá ser um recurso. De acordo com essa definição,
um documento, uma imagem e o clima de hoje em uma determinada localidade, são exem-
plos de recursos.

Um recurso possuirá um identificador de recurso, um URL, associado a ele. Em


outras palavras, cada informação terá sua própria URL. Este será também um princípio
fundamental da Web Semântica, que é uma extensão em evolução da World Wide Web na
qual a semântica de informações e serviços na Web serão definidas.

Um recurso também poderá ter uma representação associada, um documento


poderá ser um documento HTML, uma imagem poderá ser dados binários JPEG e dados
climáticos poderão ser representados usando um documento XML.

Um determinado recurso também poderá ter um metadado associado a ele, como o


tipo de mídia, e o horário da modificação. Os metadados são úteis para consumir um recurso.
Por exemplo, poderemos verificar a hora da última modificação dos dados meteorológicos
para ver se há novas atualizações sobre o clima. Poderemos também buscar o recurso com
base em dados de controle que darão uma ideia sobre a novidade do recurso. Se os dados
meteorológicos não tiverem sido modificados desde a última vez que foram buscados, não
há sentido em buscar uma nova cópia dos mesmos dados antigos. (MITCHELL. 2013. p.13 )

2.2. Ferramentas REST e Frameworks em PHP

Existem muitos frameworks e ferramentas em PHP que podem ajudar os usuários


a construir aplicativos RESTful com facilidade. Para consumir serviços, ou seja, escrever
clientes para serviços existentes, você poderá começar com elementos simples da API do
PHP e implementar clientes.

2.2.1 XML Parsers

Como a maioria dos serviços usam XML, as ferramentas XML serão úteis tanto
para solicitações de criação quanto para análise de respostas no lado do cliente. No lado do
servidor também, ferramentas XML serão necessárias para fazer o inverso, para analisar o

UNIDADE IV Programação para a Internet 106


pedido e construir as respostas. Existem muitas APIs XML disponíveis em PHP, a API DOM
e a API SimpleXML são as mais populares.

A extensão DOM permite que você opere em documentos XML por meio da API do
DOM. A API é totalmente orientada a objetos e adere aos padrões DOM, portanto, a maioria
das classes é equivalente aos conceitos encontrados na especificação do DOM. Isso ajuda
a disponibilizar o documento padrão do DOM ao usar essa API.
Você poderá encontrar maiores informações sobre DOM em: http://www.php.net/
dom

A extensão SimpleXML fornece uma API muito simples e fácil de usar para traba-
lhar com documentos XML em PHP. O modelo de objeto PHP que poderia ser construído
a partir de um documento XML usando SimpleXML pode ser processado com seletores de
propriedade PHP normais e iteradores de array, facilitando muito a vida de desenvolvedo-
res PHP quando se trata de trabalhar com construções XML já conhecidas. (ABEYSINGHE.
2008. p 17).
Você poderá encontrar maiores informações sobre SimpleXML em: http://www.php.
net/simplexml

2.3. PHP REST Frameworks

2.3.1. Tonic

Tonic é uma biblioteca PHP de desenvolvimento de aplicações web RESTFul open


source. Ele é projetado para que o usuário possa criar aplicativos RESTFul da maneira cor-
reta. O conceito de recursos recebe o devido destaque e a biblioteca dá ao desenvolvedor
a liberdade de desenvolver o aplicativo.

2.3.2. Konstrukt

O Konstrukt é um framework RESTFul de controladores para PHP5. Os controla-


dores são recursos e o mapeamento de URI para controlador fornece ao aplicativo uma
estrutura lógica. A estrutura expõe os métodos HTTP ao desenvolvedor e permite que o
desenvolvedor personalize o aplicativo da maneira desejada.

UNIDADE IV Programação para a Internet 107


2.3.3. Zend Framework

● O Zend Framework fornece APIs de client/server para lidar com clientes e


serviços REST.
● Zend_Rest_Server é a classe que você poderá usar para fornecer serviços de
estilo REST.
● A classe Zend_Rest_Client poderá ser usada para consumir serviços de estilo
REST.
● A classe Server é capaz de expor funções e classes usando um formato XML
significativo e simples. Ao acessar esses serviços usando a classe Client, é
possível recuperar facilmente os dados de retorno da chamada remota.
● A classe Client também pode ser usada para consumir serviços que não usam
a classe Zend_Rest_Server para implementar os serviços.

2.3.4. WSO2 WSF / PHP

A estrutura de serviços da Web WSO2 para PHP possui suporte abrangente para
clientes e serviços no estilo REST. Você pode fornecer e consumir serviços usando os prin-
cípios do REST. As classes WSService e WSClient podem ser usadas no lado do servidor
e no lado do cliente, respectivamente. A vantagem dessa estrutura é que um determinado
serviço pode ser exposto tanto como um serviço REST quanto como um serviço SOAP
simultaneamente.

 2.3.5. Madeam

O Madeam é um Framework PHP de desenvolvimento rápido para aplicações ba-


seadas no princípio MVC (Model-View-Controller). Ele permite a criação de protótipos e a
implantação rápida de aplicativos da Web e inclui suporte para a criação de aplicativos no
estilo REST.

2.3.6. dbscript

O dbscript é uma estrutura de desenvolvimento da Web. Os principais recursos


dessa estrutura incluem o tratamento RESTful de URLs, controladores de estilo HTTP e
suporte para Atom por HTTP.

UNIDADE IV Programação para a Internet 108


A figura 92 lista algumas estruturas PHP que ajudam a criar aplicativos de estilo
REST.

Figura 92 - Tabela de Estruturas PHP para aplicativos REST

2.3.7. Qual Framework Usar?

Dado o número de estruturas disponíveis, será um desafio fazer uma escolha.


Como sempre, selecionar uma das muitas alternativas disponíveis deverá basear-se nos
requisitos da aplicação a ser desenvolvida.

O Tonic ajudará a aderir aos princípios REST corretos, mas poderá não ter matu-
ridade em comparação a um framework como o Zend Framework. O mesmo se aplica a
Konstrukt.
O Zend Framework é um framework muito maduro e, além do suporte a REST,
é equipado com um conjunto muito útil de APIs de bibliotecas PHP que seriam úteis ao
desenvolver de aplicativos PHP.

O WSO2 WSF / PHP será uma boa escolha caso haja a necessidade de fazer
uso de serviços da Web avançados, especialmente serviços da Web baseados em SOAP,
juntamente com serviços no estilo REST. O WSO2 WSF / PHP fornecerá um mapeamento
fácil do design do aplicativo para a implementação, quando se tratar de aplicativos estilo
REST.

O Madeam seria ideal para aplicações que seguem um princípio de projeto Model-

UNIDADE IV Programação para a Internet 109


-View-Controller (MVC). No entanto, observe que, ao desenvolver aplicativos estilo REST,
mais do que a apresentação, que é a Visualização, estamos mais interessados no design
de recursos.

Um dos atributos mais notáveis ​​do dbscript são seus recursos internos para lidar
com formatos de feed, como o Atom.

Para novatos completos, seria aconselhável começar com o Zend Framework e


depois passar para WSO2 WSF / PHP porque o framework Zend tem uma API fácil de
usar para serviços e clientes simples e uma vez que haja um bom entendimento sobre os
princípios, pode-se mover para o WSF WSO2 / PHP. (ABEYSINGHE. 2008. P 20).

2.4. PHP e XML

XML é uma das palavras-chave mais populares nos negócios de software atual-
mente; mas o que isso significa para o desenvolvedor PHP? Bem, poderia muito bem ser
a pré-condição necessária para uma Internet melhor - mais rápida para desenvolver, mais
interativa, menos viciada e mais acessível a um público maior. Com o PHP, você já está em
uma excelente posição para integrar o XML ao seu arsenal de desenvolvimento da Web à
medida que a tecnologia amadurece.

2.4.1. O que é XML?

XML significa eXtensible Markup Language. XML é uma forma de SGML, a Lin-
guagem de marcação generalizada padrão, mas você não precisa saber nada sobre o
SGML para usar o XML. Ele define a sintaxe para documentos estruturados que humanos
e máquinas podem ler.

Talvez a maneira mais fácil de entender o XML seja pensar em todas as coisas
que o HTML não pode fazer. O HTML também é uma linguagem de marcação, mas os
documentos HTML são tudo menos estruturados. Tags de HTML (tecnicamente conhe-
cidas como elementos) e atributos são apenas marcadores de identificação simples para
o navegador. Por exemplo, um par de tags <H1> e </H1> correspondentes designa um
cabeçalho de nível superior. Os navegadores interpretam isso como significando que você
deseja que o texto do cabeçalho seja exibido em uma fonte realmente grande, em negrito

UNIDADE IV Programação para a Internet 110


e possivelmente em itálico. No entanto, o HTML não indica se o texto entre essas tags é o
título da página, o nome do autor, um convite para entrar no site, uma cotação pertinente,
uma promessa de preços de venda especiais. É apenas um texto que é grande.

2.4.2. Trabalhando com XML

Provavelmente está se perguntando: “Mas o que eu posso realmente fazer com


isso?” Esta não é uma pergunta tão fácil de responder. Em teoria, você poderá fazer três
coisas principais com XML: manipular e armazenar dados; transmitir dados entre aplicati-
vos de software ou entre organizações; e exibir páginas XML em um navegador ou outro
aplicativo usando folhas de estilo para aplicar diretivas de exibição.

Na prática, quase ninguém usa XML como armazenamento de dados primário


quando o SQL é tão onipresente. É possível, embora ainda seja difícil, manipular dados
usando XML - por exemplo, para editar documentos criando e manipulando no XML em vez
de texto direto.

2.4.3. RPC

Serviços de RPC literalmente chamam procedimentos, isto é funções, remotamen-


te. Esses tipos de API geralmente terão um único ponto de extremidade, portanto, todas as
solicitações são feitas para o mesmo URL. Cada solicitação incluirá o nome da função a ser
chamada e poderá incluir alguns parâmetros para transmiti-la.

Para começar, considere o exemplo abaixo:

http://api.flickr.com/services/rest/?method=flickr.photos.search&tags= kitten & for-


mat = xmlrpc

Dentro da URL, o nome da função pode ser visto no parâmetro “método” (flickr.pho-
tos.search), as tags particulares para procurar são encontradas em tags =, e o parâmetro
format solicita a resposta em formato XML-RPC.

Há uma diferença distinta entre usar um serviço de estilo RPC, com nomes e parâ-
metros de função incluídos nos dados fornecidos e ter um serviço que seja verdadeiramente

UNIDADE IV Programação para a Internet 111


XML-RPC, que é um formato muito definido. A opção escolhida depende inteiramente da
situação em que você e seu aplicativo se encontram, mas, seja qual for não deixe de
rotulá-lo corretamente.

A criação de uma camada de serviço RPC para um aplicativo poderá ser obtida
de maneira muito simples, envolvendo uma classe e expondo-a por HTTP. O exemplo das
Figuras 93 e 94 mostra uma classe muito básica que oferece algumas funcionalidades.

Figura 93 - Classe Eventos (parte 1). Elaborada pelo autor, 2019.

Figura 94 - Classe Eventos (parte 2). Elaborada pelo autor, 2019.

Para disponibilizá-lo por meio de um serviço no estilo RPC, um wrapper simples


poderá ser escrito para ele, que examinará os parâmetros de entrada e chamará a função
relevante. Você poderia usar algo ao longo destas linhas apresentadas na Figura 95.

UNIDADE IV Programação para a Internet 112


Figura 95- Construção de RPC. Elaborada pelo autor, 2019.

2.4.4. XML-RPC

XML-RPC refere-se a uma especificação utilizada para fazer chamadas de proce-


dimento remoto sobre HTTP usando codificação XML. Um servidor XML-RPC usa uma en-
trada que consiste em uma codificação XML simples de uma chamada de método enviada
como um HTTP POST. Um exemplo é apresentado na Figura 96.

Figura 96 - Utilização do XML-RPC. Elaborada pelo autor, 2019.

Suponha que greeting() seja uma função que receba uma entrada de string e re-
torne uma saída de string consistindo na string “Hello”, prefixada na string de entrada. Ele
retornará uma resposta formatada de maneira semelhante a Figura 97.

UNIDADE IV Programação para a Internet 113


Figura 97 - Retorno de uma chamada XML-RPC. Elaborada pelo autor, 2019.

Observe que, diferentemente do REST, você não está simplesmente pedindo da-
dos de volta - você está chamando uma função específica em outra máquina usando tipos
especificados. Essa função específica simplesmente retorna dados, mas isso é totalmente
arbitrário. Além disso, ao contrário do REST, o XML-RPC suporta todos os tipos nativos do
PHP, exceto objetos e recursos, e também alguns que o PHP não possui (structs, data-time,
base-64 binary).

O XML-RPC poderá ser visto como um compromisso entre a complexidade do


SOAP e a simplicidade do REST. É tão semelhante ao SOAP, no entanto, que poderá
simplesmente ser absorvido por ter um conceito mais amigável ao fornecedor. Como você
poderá ver, o servidor PHP XML-RPC também poderá fornecer respostas SOAP.

Saiba mais sobre o XML-RPC em: http://xmlrpc.scripting.com/

2.5. SOAP

SOAP já foi um acrônimo como um Simple Object Access Protocol, no entanto, isso
foi descartado e agora é apenas “SOAP”. O SOAP é um serviço de estilo RPC que se co-
munica através de um formato muito específico de XML. Como o SOAP é bem especificado
quando segue as convenções do WSDL, pouco trabalho é necessário para implementá-lo
em um aplicativo ou para integrá-lo. O PHP tem um conjunto realmente excelente de biblio-
tecas SOAP para cliente e servidor.

Você poderá encontrar alguns provedores de implementações SOAP, e algumas

UNIDADE IV Programação para a Internet 114


ferramentas de código aberto, como SugarCRM e Magento, também oferecem pontos de
integração SOAP. Ao examinar um novo serviço SOAP, uma ferramenta chamada SoapUI
permite procurar um serviço quando um arquivo WSDL (Web Service Description Langua-
ge) é fornecido. De fato, o SoapUI é excelente e pode fazer centenas de outras coisas,
incluindo testes funcionais complicados, mas por enquanto vamos ver sua funcionalidade
SOAP. (MITCHELL. 2016. p.47).

Figura 98 - Exemplo de uma solicitação SOAP. Elaborada pelo autor, 2019.

A resposta pode ser algo como o seguinte:

Figura 99 - Saída da solicitação SAOP. Elaborada pelo autor, 2019.

O SOAP oferece ainda mais tipos de dados do que o XML-RPC. Você deve, no en-
tanto, especificar muito mais também. Fora isso, os dois protocolos são muito semelhantes.
Obviamente, o SOAP também desfruta de maior aceitação da Big Software.

UNIDADE IV Programação para a Internet 115


SAIBA MAIS
Para reforçar o estudo sobre os conceitos de Web Service, proponho a leitura deste
artigo com o título “Webservices em PHP 5 e Zend Framework”. Veja neste artigo
como criar e consumir webservices SOAP e REST utilizando o PHP 5, utilizando as
extensões da linguagem e também o Zend Framework.

Vá para a internet no link abaixo e aproveite mais esse conteúdo!


https://www.devmedia.com.br/criando-e-consumindo-webservices-em-php-5-e-zen-
d-framework/24937

REFLITA
“A melhor maneira de prever o futuro é inventá-lo.”  (Allan Kay)

A computação é uma ferramenta que possibilita a construção de soluções que podem


revolucionar o mundo, e conforme Allan Kay afirmou, temos o poder em nossas mãos
de inventar o nosso futuro. Use esse poder em prol de construir boas soluções para
o mundo...
Um grande abraço!
E muito sucesso!

Referência: https://www.tecmundo.com.br/internet/3145-frases-impactantes-sobre-
-tecnologia-e-informatica.htm

UNIDADE IV Programação para a Internet 116


3. CONSIDERAÇÕES FINAIS

Caro(a) Aluno(a)!

Chegamos ao final desta unidade IV com satisfação de tê-lo aqui conosco, com o
sentimento de grande satisfação de saber você querido(a) aluno(a) conseguiu chegar até
o fim. Parabéns!

Você recebeu nesta unidade, uma introdução aos conceitos de Orientação a Obje-
tos com PHP e uma introdução aos conceitos de Web Service.

Procuramos apresentar os conceitos sobre a utilização da Programação Orientada


a Objetos como criação de objetos, encapsulamento, construtores e destruidores junta-
mente com as aplicações dos exemplos de cada capítulo. Contextualizando de maneira
simples, para facilitar o entendimento do conceito de herança.

Caro(a) Aluno(a), mais uma vez gostaria de parabenizá-lo pelo esforço e a dedica-
ção para chegar até aqui. Desejo todo o sucesso que você puder conquistar em sua vida
pessoal e profissional.

Sucesso!

Um grande abraço!

UNIDADE IV Programação para a Internet 117


Material Complementar

LIVRO
Título: Laravel para ninjas
Autor: Ademir C. Gabardo
Editora: Novatec Editora Ltda.
Sinopse: As aplicações web modernas têm evoluído rapidamente. A
demanda por ferramentas capazes de entregar conteúdo dinâmico
como APIs REST e de frameworks para consumo de dados como
Angular.JS e similares é crescente. Nesse contexto, frameworks
modernos como o Laravel são ferramentas indispensáveis para
a produção de sistemas web em tempo hábil, com qualidade e
de fácil manutenção. No livro Laravel para Ninjas são abordados
temas como: Instalação do ambiente para desenvolvimento no
Windows, MAC OS X e Linux.
Instalação e uso do Composer, um gerenciador de dependências
para PHP.
Instalação do framework Laravel e execução dos primeiros testes
e muito mais.

FILME/VÍDEO
Título: Curso Web Services RESTful com PHP e Laravel
Ano: 2017
Sinopse: Neste curso você vai aprender a criar um Web Service
utilizando o framework Laravel. Neste curso você aprender todos
os conceitos, terminologias e ferramentas necessárias para de-
senvolver um web service de alto nível.
Link do vídeo: https://www.youtube.com/watch?v=Ffxt6VSaUNM

UNIDADE IV Programação para a Internet 118


4. REFERÊNCIAS

ABEYSINGHE, Samisa. RESTful PHP Web Services. Birmingham. Packt Publishing Ltd.
2008.

BAKKEN, Stig Saether et al. PHP3 manual. Zend Technologies, Ltd, 1999.

BENTO, Evaldo Junior. Desenvolvimento web com PHP e MYSQL. São Paulo. Casa do
Código Editora. 2013.

CARVALHO, Vinícius. MySQL - Comece com o principal banco de dados open source
do mercado. São Paulo. Casa do Código Editora. 2015.

EXTENSÕES DE BANCO DE DADOS. Documentação PHP - Referencia PHP 7.1.29


Relesead. <www.php.net/manual/pt_BR/refs.database.php> acessado em 02/05/2019

GUTMANS, Andi; BAKKEN, Stig; RETHANS, Derick. PHP 5 Power Programming (Bruce
Perens’ Open Source Series). Prentice Hall PTR, 2004.

MAZZA, Lucas. HTML5 e CSS3 - Domine a web do futuro. São Paulo. Casa do Código
Editora. 2012.

MITCHELL, Lorna Jane. PHP Web Services. Sebastopol. O’Reilly Media, Inc. 2016.

NIXON, Robin. Learning PHP, MySQL & JavaScript. Sebastopol. O’Reilly Media, Inc.
2009.

MARINHO, Antonio Lopes (Org.). Desenvolvimento de aplicações para Internet. São


Paulo: Pearson Education do Brasil, 2016. Disponível em: http: <//fcv.bv4.digitalpages.com.
br

KUROSE, James F.; ROSS, Keith W. Redes de computadores e a internet: uma aborda-
gem top-down. 6 ed. Pearson Education do Brasil, 2016. Disponível em: http: Disponível
em: http: <//fcv.bv4.digitalpages.com.br

SILVA, Edilson Alfredo da. Introdução a linguagens de programação para CLP. São
Paulo: Blucher, 2018. Pearson Education do Brasil, 2016. Disponível em: http: Disponível
em: http: <//fcv.bv4.digitalpages.com.br

BENJON, Davi. Interação humano-computador. São Paulo: Perason Prentice Hall, 2011.
Disponível em: http: <//fcv.bv4.digitalpages.com.br

TANENBAUM, Andrew S. Redes de computadores. São Paulo: Pearson Prentice Hall,


2011. Disponível em: http: <//fcv.bv4.digitalpages.com.br

CORREA, Ana Grasielle Dionísio (Org.). Organização e arquitetura de computadores.


São Paulo: Pearson Education do Brasil, 2016. Disponível em: http: <//fcv.bv4.digitalpages.
com.br

BIANCHINI, Clécio; FATSCHART, Fábio; CUSIN, Cesar. Open Web Platform. Rio de Janei-
ro, RJ: Brasport, 2014. Disponível em: http: <//fcv.bv4.digitalpages.com.br

BONATTI, Denilson. Desenvolvimento de sites dinâmicos com Dreamweaver CC. Rio


de Janeiro, RJ: Brasport, 2014. Disponível em: http: <//fcv.bv4.digitalpages.com.br

UNIDADE IV Programação para a Internet 119


CONCLUSÃO

Prezado (a) aluno (a),


Neste material, buscamos trazer para você os principais conceitos a respeito da
Programação para Internet. Para tanto abordamos as questões históricas, definições teóri-
cas e, neste aspecto acreditamos que tenha ajudado a assimilar os conceitos pilares dessa
linguagem de programação PHP.
Destacamos também a importância da criação de unidades de código mais próxi-
ma da forma como pensamos e agimos. Você também pode ver uma introdução a vários
conceitos e aplicações tais como Funções, Passagem de Argumentos, que todos foram
tratados de maneira especial, em capítulo específico no decorrer dos estudos.
Levantamos também aspectos sobre o recebimento de formulários HTML e PHP
utilizando Campos Hidden, Campos Text e Textarea, Campos Checkbox que determinam a
forma como os formulários serão construídos, de acordo com a necessidade. Além disso,
falamos também sobre a validação dos formulários fazendo comparativos dos métodos de
validação utilizados como o HTML5, Javascript e também falamos sobre a personalização
da mensagem de validação.
Ao pensarmos em uma organização de código estruturado segundo os preceitos
da Orientação à Objetos com PHP, não poderíamos deixar de falar sobre construtores,
destruidores, herança e encapsulamento. Um ponto muito importante abordado neste livro
foi uma introdução à banco de dados, em específico com MySQL e utilizando os métodos
de acesso a banco de dados utilizando a linguagem de programação PHP. Podemos ver
alguns dos padrões de servidores web e como transferir dados com o auxílio de ferramentas
Rest e Frameworks em PHP.
A partir de agora acreditamos que você já está preparado para seguir em frente
desenvolvendo ainda mais suas habilidades para criar e desenvolver produtos e marcas de
sucesso no mercado e realizar bons negócios. Mas não pare por aqui, continue estudando e
buscando conhecimento. Em nossa área de atuação, sempre estão sendo lançadas novas
ferramentas e técnicas para otimizar e desenvolver melhor nosso código fonte.

Até uma próxima oportunidade. Muito Obrigado!

UNIDADE IV Programação para a Internet 120

Você também pode gostar