PHP: CONCEITOS ESSENCIAIS PARA
IMPLEMENTAÇÃO DE APLICAÇÕES WEB
Leonardo L. AlvesA, Fabricio R. BittencoutB
FUNCESI — Fundação Comunitária de Ensino Superior de Itabira
FATEC – Faculdade Itabirana de Desenvolvimento das Ciências e Tecnologias
Emails: [email protected], [email protected]
Resumo
Este trabalho objetiva proporcionar aos graduandos do curso de Sistemas de Informação o
conhecimento necessário para otimizar pesquisas e aprendizado sobre o desenvolvimento de
aplicações web, através da linguagem de programação PHP, a qual se caracteriza como a
alternativa open-source dentre as linguagens interpretadas.
São apresentados a estrutura de um programa PHP e os tipos de dados suportados pela
linguagem e discutidos os principais operadores e estruturas de controle. É explicado ainda o
funcionamento de um servidor www e como se pode programar suas respostas através do
desenvolvimento de aplicações remotas embutidas em arquivos HTML.
1.Introdução
Em conseqüência da expansão da Internet, interconexão entre diferentes ambientes de
redes e reaproveitamento de máquinas e sistemas operacionais antigos, a arquitetura web tem
adquirido grande relevância e criado demandas e desafios para o desenvolvimento de
programas em Internet e intranets das corporações. As intranets, por sua vez, possuem
conceitos idênticos aos da Internet, se utilizando de ferramentas e protocolos de comunicação
similares. O seu escopo, porém, diferentemente do que ocorre na Internet, é permitir a troca de
dados apenas entre computadores de uma mesma rede local, normalmente, mesmo que esteja
ligada a rede pública de computadores, a Internet [6].
A camada multimídia da Internet é a WWW – World Wide Web – ou simplesmente Web, a
qual é fornecida pelo protocolo HTTP – Hypertext Transfer Protocol ou Protocolo de
Transferência de Hipertexto – e permite a troca de documentos, imagens e outros recursos
web de forma transparente em relação ao computador-servidor [1].
Um recurso web é acessado por um programa-cliente, isto é, utilizado pelo usuário. O
programa-cliente, normalmente conhecido como navegador ou browser (folheador), acessa os
recursos através de um esquema de endereçamento uniforme conhecido como URL – Uniform
Resource Locator – no formato protocolo://endereço_ip:porta/diretorios/arquivo [11].
A
Bacharelando em Sistemas de Informação pela FATEC/Funcesi.
Mestrando pelo PPGEE - Programa de Pós Graduação em Engenharia Elétrica da PUC-MG, Professor da FATEC e
FACCI na FUNCESI.
B
O servidor é responsável por servir os recursos web e o faz simplesmente enviando os
arquivos disponíveis ao programa-cliente, logo que recebe uma requisição, assim como aponta
a figura 1.1.
Existem porém duas classes de aplicações web. A primeira delas chamada de client-side,
ou local, sendo executada no computador-cliente, responsável pela requisição de um recurso
web. Na figura 1.1 observa-se um processo client-side sendo executado sem qualquer conexão
com sistemas computacionais externos.
Figura 1.1: Programa client-side
A segunda classe de aplicações web são executadas pelo servidor para o qual foi realizada
uma requisição de recurso www. Nesse caso, o recurso é denominado recurso-dinâmico, e o
servidor é totalmente responsável pelo processamento de dados e o redirecionamento da saída
para o computador-cliente, o qual por sua vez, conforme demonstrado na figura 1.2, não tem
acesso aos processos e dados de origem.
Figura 1.2: Programa server-side
Inúmeros ambientes computacionais foram criados para possibilitar o desenvolvimento de
programas dessa segunda classe ou server-side, normalmente em linguagens de programação
existentes e interpretadas no momento da requisição. Dentre os mais populares foram
consideradas o VB-Script e ASP.NET, linguagens de programação restritas à arquitetura
Microsoft e normalmente implementadas em Visual Basic ou C# [9]; Java Servlets Pages
(JSP), criada pela Sun, baseada na linguagem Java e independente de sistema operacional; e
PHP, a qual é a única a contar com um interpretador open-source – gratuito e com códigofonte aberto – suportado por variados sistemas operacionais e servidores http.
O PHP, objeto deste trabalho, foi um conjunto de aplicações desenvolvidas em linguagem
Perl, por Rasmus Lerdof em 1995, com o simples propósito de criar interações entre usuários
de Internet e sites nos quais era instalado. Somente após 1997, através da contribuição de
outras pessoas ao projeto, PHP tornou-se uma linguagem de programação, chegando à versão
4 em 2000 com todos os atributos abordados nesse documento, e presente em mais de 20%
dos domínios públicos na Internet [8].
O conhecimento prévio da linguagem C++ é desejável, mas o presente artigo deve servir
como introdução à PHP mesmo àqueles que não saibam programar nessa linguagem.
Este tutorial está organizado sobre a seguinte estrutura: no ítem 2 é exposto o que pode
ser feito em PHP, os principais formatos de saída de dados e o suporte a protocolos de rede e
extensões. No ítem 3 é apresentada a estrutura de um script e os recursos essenciais para a
construção de aplicações web, como os tipos de dados usados, conversões de tipos, uso de
variáveis, principais operadores e estruturas de controle, criação de funções e entrada e saída
de dados.
2.O que pode ser feito em PHP
Por ser uma linguagem interpretada – de script – no servidor www, criada exclusivamente
para a Internet, PHP tem atributos que flexibilizam o desenvolvimento de páginas dinâmicas,
com saída de dados em formatos como página de marcação HTML, animação em Flash,
imagens, textos formatados em PDF e RTF, geradas dinamicamente através de informações
recebidas do computador-cliente, armazenados em disco ou existentes em um banco-de-dados.
Figura 2.1: Arquitetura PHP 4
Entre a aplicação e o programa-cliente, um navegador normalmente, além da tradicional
troca de informações por meio de formulários HTML, há também o envio e recebimento de
cookiesC e o recebimento de parâmetros na própria URL em tempo de requisição [11]. Na
figura 2.1 observamos a existência de cinco camadas em um servidor de scripts web PHP. A
primeira, web server, é a responsável por servir recursos web reais – diretamente do disco
rígido – ou virtuais – após processamento de um script. A camada SAPI fornece a interface
entre o interpretador e o servidor web. A terceira camada, denominada PHP Core, é o núcleo
onde são processados os scripts, a qual, ligada à Zend Core, quarta camada, abre processos de
extensões através de uma API, a quinta camada, de extensões externas ao PHP e até mesmo ao
computador onde está instalado.
A integração a sistemas gerenciadores de banco-de-dados (SGBD) é facilitada por rotinas
existentes nas bibliotecas padrões do interpretador, executadas na camada Zend Core via API,
com suporte a linguagem SQL e suporte especial aos SGBDs Oracle, MySQL, MiniSQL,
MSQL, SQL Server, Interbase, entre outros. Adicionalmente, pela organização distribuída e
multiplataforma da Internet, o suporte a outros protocolos também é oferecido através da
quinta camada, tornando um programa em PHP capaz de se conectar a servidores de envio e
recebimento de e-mails, de bate-papo, www, ftp e outros [8].
3.Estrutura de um programa PHP
Um script PHP é um conjunto de uma ou mais instruções seguidas por “;” em um ou mais
blocos delimitados por “<?”, indicando o início, e “?>”, o término do bloco.
3.1Um script PHP
No exemplo 3.1.1 é apresentado um código PHP inserido em um arquivo HTML. A
requisição deste arquivo, o qual obrigatoriamente deve possuir a extensão “.php”, faz com que
o mesmo seja processado pelo interpretador PHP e resulte o recurso HTML do exemplo 3.1.2,
enviado ao programa-cliente, como explicado no ítem 2.
Exemplo 3.1.1: Script PHP embutido em código HTML (exemplo.php)
<html>
<body>
<h1>Conteúdo em HTML</h1>
<p>1ª linha<br>
2ª linha<br>
</p>
<h1>Conteúdo em HTML gerado pelo PHP</h1>
<p>
<? // Início do PHP
// Comentário:
C
Pequeno arquivo texto armazenado no computador-cliente e acessado remotamente pela aplicação que o gravou.
// De 1 até 2 contados em $num faça o comando em seguida
for ($num = 1; $num <= 2; $num++)
echo $num . “ª linha<br>\n”;
/* Comentário:
Imprime o valor de $num, o texto “ª linha” e uma quebra de linha */
// Fim do PHP ?>
</p>
</body>
</html>
Os comentários presentes no script podem ter uma linha, quando iniciados por “//” ou
tamanho intedeterminado quando iniciados por “/*” e finalizados por “*/”. Ambos são úteis
para a documentação do código e não são exibidos no recurso web após o processamento.
Exemplo 3.1.2: Recurso HTML gerado após o arquivo exemplo.php ser processado
Conteúdo em HTML
1ª linha
2ª linha
Conteúdo em HTML gerado pelo PHP
1ª linha
2ª linha
O resultado presente no exemplo 3.1.2 seria exibido no programa-cliente sem diferença
entre o trecho integralmente escrito em HTML e o produto do script processado.
3.2Tipos de dados
A linguagem suporta oito tipos primitivos de dados, compostos por quatro tipos básicos:
boolean, para true (verdadeiro) ou false (falso);
integer ou int, números inteiros;
float, número com ponto-flutuante;
string, para um ou mais caracteres.
Dois tipos compostos:
array, vetor multidimensional abstrato, através do qual se pode construir listas, filas,
pilhas, dicionários e outras construções similares;
objeto, o qual sempre carrega a instância de um objeto.
Dois tipos especiais:
resource, existente a partir da versão 4 da linguagem, usada para referenciar recursos
externos;
null, o qual é atribuido a toda variável apagada, não carregada ou após uma atribuição
da constante null.
Um nono tipo mixed é usado em declarações de protótipos, determinando que mais de um
tipo de retorno é esperado ou mais de um tipo de parâmetro pode ser usado.
A tipagem de identificadores em PHP é realizada dinamicamente, sendo possível atribuir
qualquer valor a variáveis previamente alocadas, sendo o interpretador PHP responsável pelas
alterações, até mesmo em situações de overflow.
Apenas valores do tipo string são identificados de forma diferenciada, devendo ser
agrupados entre aspas (“) ou apóstrofos (‘).
Transformação de tipos
Conceitualmente, há pelo menos duas formas de conversão de variáveis para tipos
diferentes. A primeira delas, chamada coerção, é uma conversão de tipo implícita iniciada pelo
interpretador [12]. A segunda, chamada cast, consiste em conversões explícitas de tipo
solicitadas pelo programador.
A coerção livre presente na PHP também dificulta a identificação de erros, mas favorece o
trabalho de programação, sendo o programador dispensado de se preocupar com as
conversões, conforme demonstrado no exemplo 3.2.1.
Exemplo 3.2.1: Coerção livre
<? $a = 2 + “15 palavras”; /* a variável $a terá o valor 17 */
?>
O typecast, como demonstrado no exemplo 3.2.2 e igualmente ao da linguagem C++, é
aplicado através da escrita do tipo antes de uma atribuição, forçando a conversão do tipo do
valor atribuido.
Exemplo 3.2.2: Typecast
<?
$a = 45.3; /* variável $a recebe 45,3 */
$a = (int) $a; /* variável $a recebe 45 */ ?>
No exemplo 3.2.2, a variável $a é convertida para o tipo inteiro, mas para o mesmo
trabalho, adicionalmente, há uma função chamada settype, a qual poderia ser usada como no
exemplo 3.2.3.
Exemplo 3.2.3: Função settype
<? settype($a,integer); ?>
Identificadores
As variáveis, as quais não precisam ser declaradas, são alocadas simplesmente através da
atribuição de um valor ao identificador ainda não usado, sempre antecedido pelo símbolo “$”.
As constantes, todavia, possuem um comportamento diferenciado, devendo ser declaradas
pela função “define”, e sendo referenciadas sem o “$”, assim como no exemplo 3.2.4.
Exemplo 3.2.4: Atribuição e uso de constante
<?
define(“pi”,3.1415); /* pi deve estar entre aspas, mas seu valor numérico não */
$circunferencia = 2 * pi * $raio; /* já como constante, pi é usado sem aspas e $ */ ?>
3.3Operadores
Em PHP há inúmeros operadores não tradicionais em outras linguagens de programação,
como operadores de controle de erro, execução e de fusão de vetores. No presente tutorial
serão tratados apenas os operadores com funções mais comuns.
Aritméticos
As operações de adição, subtração, divisão, multiplicação e módulo são executadas
através dos símbolos +, -, /, * e %, respectivamente, como no exemplo 3.3.1.
Exemplo 3.3.1: Operadores em expressões aritméticas
<?
$c = $a + $b; /* soma */
$c = $a - $b; /* subtração */
$c = $a / $b; /* quociente real */
$c = $a * $b; /* produto */
$c = $a % $b; /* resto da divisão */
/* alteração de ordem de precedência através dos parênteses
A expressão irá somar, multiplicar e encontrar o resto da divisão,
nessa ordem.
*/
$c = ($a + $b) * $d % 4;
?>
Relacionais
As comparações entre operandos quaisquer são idênticas às possíveis em C++, realizadas
pelos operadores >, >=, ==, !=, <=, <; respectivamente maior que, maior ou igual a, igual a,
diferente de, menor ou igual a, menor que.
O retorno das expressões será sempre TRUE ou diferente de 0 quando verdadeiras, ou
FALSE ou 0, quando falsas.
Concatenação
A cisão de cadeias de caracteres se dá pelo operador . (ponto) ou .= (ponto e igual), como
no exemplo 3.3.2.
Exemplo 3.3.2: Concatenação de strings
<?
$c = “Linguagem “ . “PHP”; /* retorna Linguagem PHP */
$c = “Funcesi”; /* Atribui Funcesi à variável $c */
$c .= “/Itabira”; /* retorna Funcesi/Itabira e atribui à variável $c */
?>
Atribuição
A atribuição é realizada a identificadores com o operador =, podendo ocorrer em qualquer
ponto do programa ou mesmo dentro de outras estruturas.
Exemplo 3.3.3: Atribuição simples
<?
$c = 4; /* atribui o inteiro 4 */
$c = 2.5; /* atribui o real 2,5 */
$c = “texto”; /* atribui a string texto */
?>
Em função de as variáveis serem tipadas dinamicamente, todas as atribuições do exemplo
3.3.3 são possíveis, para o mesmo identificador.
Outros operadores de atribuição são +=, -=, *=, /=, %=, .=, para atribuir recursivamente,
ou seja, atribuir ao identificador esquerdo o seu conteúdo atual somando com o próximo,
subtraindo, multiplicando, dividindo por, obtendo o resto da divisão por, ou concatenando,
segundo o operador que anteceder o símbolo “=”. Algumas dessas operações são mostradas
no exemplo 3.3.4.
Exemplo 3.3.4: Atribuições combinadas
<?
$cont += 1; // Corresponde a $cont = $cont + 1
$multiplo *= 3; // Corresponde a $multiplo = $multiplo * 3
?>
Lógicos
Os operadores lógicos são and, &&, or, ||, xor e !, exibidos no exemplo 3.3.5.
Exemplo 3.3.5: Operadores lógicos
<?
$a and $b /* verdadeiro se ambos, $a e $b, são verdadeiros */
$a && $b /* idem */
$a or $b /* verdadeiro se $a ou $b é verdadeiro, ou se ambos são verdadeiros */
$a || $b /* idem */
$a xor $b /* verdadeiro se $a ou $b é verdadeiro, mas não os dois são verdadeiros */
!$a /* verdadeiro quando $a não for verdadeiro */
?>
Incremento e decremento
Os populares operadores de incremento e decremento da linguagem C, ++ e --, também
foram herdados pelo PHP, com a mesma sintaxe, resultando em um incremento de 1 ou
decremento de 1, com ordem de execução priorizada quando pré-fixados. O exemplo 3.3.6
apresenta demonstrações.
0
Exemplo 3.3.6: Incremento e decremento
<?
$a = $cont++; /* $a recebe o valor de $cont, e $cont é incrementada */
$a = ++$cont; /* $cont é incrementada e então $a recebe o novo valor de $cont */
$b = $tarefa--; /* $b recebe o valor de $tarefa, e $tarefa é decrementada */
$b = --$tarefa; /* $tarefa é decrementada e então $b recebe o novo valor de $tarefa */
?>
3.4Estruturas de controle
As estruturas de controle foram mantidas inalteradas em relação às do C/C++, as quais
respeitam todas as regras e exceções do padrão ANSI C.
Seleção
Duas estruturas de seleção são oferecidas. O tradicional if e a estrutura switch-case.
Exemplo 3.4.1: Estrutura condicional if
<?
if ($i == 0)
print 'Minha variável é igual a zero';
elseif ($i == 1)
print 'Minha variável é igual a um';
elseif ($i == 2)
print 'Minha variável é igual a dois';
else {
print 'Minha variável é diferente de '; /* bloco demarcado */
print '0, 1 e 2';
/* por chaves “{“ e “}” */
}
?>
Apresentada no exemplo 3.4.1, a estrutura if sempre avalia sua expressão ($i == 1, por
exemplo) como booleano. Em caso de verdadeiro, as instruções seguintes são executadas; caso
falso, instrução elseif ou else são procuradas. É interessante notar, entretanto, que falso em
PHP pode ser o booleano false, o inteiro 0, o real 0.0, uma string vazia ou “0”, um null, uma
variável indefinida ou um array ou objeto sem elementos. Qualquer valor diferente dos citados,
inclusive o booleano true, equivale ao estado verdadeiro [8].
A estrutura switch-case, com a mesma função, possui sintaxe como no exemplo 3.4.2.
Exemplo 3.4.2: Estrutura condicional switch
<?
1
switch ($i) {
case 0:
print 'Minha variável é igual a zero'; break;
case 1:
print 'Minha variável é igual a um'; break;
case 2:
print 'Minha variável é igual a dois'; break;
else:
print 'Minha variável é diferente de ';
print '0, 1 e 2'; break;
/* break força o término do bloco switch */
} ?>
Repetição
Há quatro estruturas de repetição mais populares em PHP: while, do-while, for e foreach.
O while é um laço de repetição lógico, o qual é executado enquanto sua condição é
verdadeira, como é demonstrado no exemplo 3.4.3.
Exemplo 3.4.3: Exemplo de uma repetição while
<?
$i = 1; /* $i é inicializado com valor 1 */
while ($i <=10) /* enquanto $i for menor ou igual a 10 faça */
{ print “Linha $i++\n”; /* imprima o valor de $i. Incremente em seguida. */
echo ‘<br>’; } /* imprime uma quebra de linha em HTML */
?>
O do-while, diferentemente da estrutura while, executa pelo menos uma iteração,
obrigatoriamente, realizando o teste pela primeira vez ao fim da mesma, e repetindo enquanto
a condição for verdadeira. O exemplo 3.4.4 demonstra sua construção.
Exemplo 3.4.4: Exemplo de uma repetição do ... while
<?
$i = 0; // $i recebe o valor zero
do { // inicia o bloco do { ... } while
print “Linha ++$i\n”; // incrementa $i e imprime o texto
echo ‘<br>’; // imprime uma quebra de linha em HTML
} while ($i < 10); // faz outra iteração enquanto for verdadeiro
?>
O for, por sua vez, possui três parâmetros opcionais: um de inicialização, outro para a
condição e o terceiro para execução antes de cada nova iteração. O código é ilustrado no
exemplo 3.4.5.
2
Exemplo 3.4.5: Exemplo de uma repetição for
<?
/* $i = 1 é executada no início; $i <= 10 é avaliada no início de cada iteração; $i++ é avaliada
ao fim de cada iteração */
for ($i = 1; $i <= 10; $i++) {
print “Linha $i\n”; /* imprime o texto Linha, a variável $i e quebra a linha */
echo ‘<br>’; /* imprime quebra de linha em HTML */
}
?>
A repetição foreach, finalmente, é usada exclusivamente para o trabalho com vetores,
objetivando copiar chaves e valores de uma posição do vetor, até o seu fim, para outra
variável. Este recurso é útil particularmente em PHP quando se tem um vetor de dimensão
variável, suportado apenas a partir de sua versão 4 e demonstrado no exemplo 3.4.6.
Exemplo 3.4.6: Exemplo de uma repetição foreach
<?
$vetor = array (1,7,18,44,99); /* cria e carrega $vetor */
/* copia o primeiro valor de $vetor para $parte */
foreach ($vetor as $parte) {
echo “Valor: $parte \n”; /* imprime $parte e retorna até o fim de $vetor*/
}
?>
3.5Funções e procedimentos
Por recursos na web serem arquivos isolados, muitas vezes é possível criar programas ou
páginas dinâmicas simples, isto é, sem o uso de funções ou procedimentos. Entretanto, o
suporte a funções é muito útil na formação de bibliotecas e para a passagem segura de
parâmetros dentro de um recurso. Funções são declaradas como no exemplo 3.5.1.
Exemplo 3.5.1: Declaração de função
<?
function nomedafunc($aluno, $disciplina = 'Compiladores') {
echo "O aluno " . $aluno . " estuda " . $disciplina;
return "valor de retorno"; }
?>
Com suporte a parâmetros padronizados, como é o caso do parâmetro $disciplina,
ilustrado em 3.5.1, sempre ao final, e dispensa de declaração do tipo do retorno, dada a
coerção livre presente na linguagem, seu funcionamento é idêntico ao de funções ou
3
procedimentos em outras linguagens e o retorno pode ocorrer dentro de estruturas, saídas,
parâmetros de outras funções e mesmo em expressões aritméticas, por exemplo.
Ainda, por sua ortogonalidade superior à de linguagens de programação tradicionais,
qualquer tipo de dado pode ser retornado de uma função, inclusive vetores e registros.
3.6Entrada e saída
A saída, possível através das funções echo e print, assim como no exemplo 3.1.1, é
redirecionada para o recurso virtual acessado pelo programa-cliente, podendo ser som,
imagem, animação, filme, texto ou outro formato.
A entrada, seja através de formulário, presente em URL ou até mesmo em um cookie, é
realizada de maneira transparente pelo interpretador PHP, que a converte em uma variável
global, a qual pode ser alterada sem qualquer prejuízo de tempo, nem a possibilidade de causar
danos ao programa responsável pela requisição ou envio de dados.
A independência entre os mecanismos de entrada e o programa criam condições
satisfatórias para um rápido desenvolvimento, causando entretanto possíveis problemas de
segurança e privacidade dos dados trocados, o que, aliado à ortogonalidade da linguagem e a
coerção livre, garante uma redução considerável no nível de segurança, possibilitando a
execução de instruções prejudiciais e causando erros na transferência de dados de tipo
incorreto a servidores de banco-de-dados e outras aplicações de mais baixo nível.
4.Conclusão
Pela extensão da linguagem de programação PHP, variantes de versão, diferenciais entre suas
estruturas e as de outras linguagens de programação populares, é tarefa complexa concluir um
estudo sobre suas características. É conclusivo, porém, que o sucesso do PHP se deve a
facilidade de escrita, simplificação da implementação do código, alto grau de ortogonalidade,
livre coerção – o que dispensa o programador dos constantes tratamentos de entradas e saídas
e conversão de tipos (texto para numérico, e vice-versa), muito comuns no ambiente web –,
integração com linguagens de programação e ou formatação, como o próprio HTML, e
especialmente o suporte às mídias e aos serviços mais populares na Internet.
Os aspectos custo, minimizado pela distribuição gratuita dos pacotes, código-livre e
portabilidade entre as principais arquiteturas de servidores web usadas no mundo, influenciam
diretamente em sua escolha por desenvolvedores e administradores de páginas. Todavia,
preocupante em toda aplicação onde se obtêm informações digitadas diretamente por usuários
on-line, o controle das entradas, quebras em programas e abertura a invasões é possível com
facilidade quando o desenvolvedor atribui baixa relevância aos testes e avaliações da
segurança.
4
Por ser uma linguagem de programação exclusivamente interpretada, perde em desempenho
para as aplicações CGI compiladas em C, as mais populares, porém garantindo maior
facilidade de atualização e reutilização de código entre os módulos ou arquivos do programa,
quando em processo de execução/interpretação.
Mesmo enfretando a concorrência de novas tecnologias, sua popularidade é garantida por
desenvolvedores de extensões, bibliotecas e aplicações open-source para o PHP. Além disso,
por sua inclusão em pacotes de distribuição do sistema operacional Linux e servidor web
Apache, ambos muito populares na Internet e nos quais o PHP possui melhor desempenho e
menor dependência de sistemas adicionais, há resistência em adotar outras ferramentas
similares e com menor alcance.
A participação do interpretador PHP no desenvolvimento de aplicações tem se mostrado
vantajosa em inúmeros aspectos, a tornando ferramenta essencial para qualquer servidor http e
eficaz para implementação de aplicações web.
5.Referências bibliográficas
[1]AMOR, Daniel. A revolução do e-business: vivendo e aprendendo em um mundo
interconectado. São Paulo: Makron Books, 2000. 606 p.
[2]BAKKEN, Stig Sæther. Introduction to PHP. Internet < www . zend . com / zend / art /
intro . php>. 17/Abr/2000.
[3]BARRETO, Maurício V.S.; et al. Aplicações web com PHP. Internet: <www . vivas . com .
br>, Jun/2000. 104 p.
[4]BRUFAU, Marc; CASALS, Xavier; MAS, David. Conceptes avançats de sistemes
operatius. Distribució d’aplicacions mitjançant web. (apunts de l’assignatura en format
transparència). Departament d’Arquitectura de Computadors. 2001.
[5]COX JÚNIOR, Fred. Programando para web com PHP/MySQL. Mar/2001. 2. ed. 72 p.
[6]GRALLA, Preston. Como funcionam as intranets. Editora Quark, São Paulo, 1996. 206 p.
[7]HALL, Marty. Core Servlets and JavaServer Pages. Sun Microsystems Press. Internet:
<javaboutique . internet . com / tutorials / JSP>.
[8]LERDOF, Rasmus et al. PHP Manual. Internet: <www . php . net / docs . php>,
08/Out/2002.
[9]PAULI, Guinther de Bitencourt. ASP.NET com Delphi: criação de web services no Delphi
for .NET Preview. Revista Clube Delphi. Ed. 37. Ano IV.
5
[10]REILLY, George V. ASP best practices. Microsoft Corporation. Internet: <support .
microsoft . com / support / activeserver / AspBestPractices . ppt>, 06/03/2003.
[11]ROSA, César Augusto Salabert. Internet: história, conceitos e serviços. São Paulo: Érica,
1998.
[12]SEBESTA, Robert W. Conceitos de Linguagens de Programação. 4. ed. Porto Alegre:
Bookman, 2000. 624 p.
Download

php: conceitos essenciais para implementação de aplicações web