Você está na página 1de 37

Desenvolvimento de

Web Sites com PHP


Parte I
Introduo ao PHP
Fernando Lozano
http://www.lozano.eti.br
fernando@lozano.eti.br

Desenvolvimento de Web Sites Com PHP

2003 Fernando Lozano http://www.lozano.eti.br

Sobre Este Tutorial

No vamos exaurir a sintaxe, comandos e funes do PHP


vamos trabalhar por exemplos

Espero conhecimento prvio de HTML, a nvel de cdigo,


no apenas de editores visuais

Espero conhecimento prvio de programao,


preferencialmente C, Java, ou Perl

Espero conhecimento prvio de bancos de dados,


especialmente comandos SQL

O programador hoje tem que ser capaz de se virar com o


manual o importante conhecer lgica e conceitos, no
sintaxe e comandos

Desenvolvimento de Web Sites Com PHP

2003 Fernando Lozano http://www.lozano.eti.br

Roteiro

Parte I

Parte III

A Internet Dinmica

Ferramentas para PHP

O Que o PHP

Orientao a Objetos

Sintaxe do PHP

Recursos Avanados

Instalao em Windows

Parte II

Programao para a
Internet

Bancos de Dados

Instalao em Linux

Desenvolvimento de Web Sites Com PHP

Parte IV

Guia para os programasexemplo

2003 Fernando Lozano http://www.lozano.eti.br

A Internet Dinmica

Aplicaes Internet

CGI, SSI, SSS

Active X e Applets Java

APIs de servidor

CSS, DOM

XML, XSL, WAP

Desenvolvimento de Web Sites Com PHP

2003 Fernando Lozano http://www.lozano.eti.br

Arquitetura de uma
Aplicao Internet

Web Browser, Web Server e Aplicao

O navegador a interface com o usurio

A aplicao na verdade executa sob o servidor web

Arquitetura sem memria: a aplicao deve usar cookies e


gerenciar sesses

O HTTP no tem noo de incio e fim de seo, ou de login e


logout

JavaScript para responder a eventos no cliente

Trazer interatividade aplicao, sem os longos delays da


Interet

Desenvolvimento de Web Sites Com PHP

2003 Fernando Lozano http://www.lozano.eti.br

Arquitetura de Uma
Aplicao Internet
Servidor
regras de negcio
banco de dados

Requsio HTTP: URL

Clientes
exibio das
informaes

HTML
Javascript

Internet

Resposta HTTP: Documento

Desenvolvimento de Web Sites Com PHP

PHP
CGI
etc

2003 Fernando Lozano http://www.lozano.eti.br

CGI, Server-Side Includes


e Server-Side Scripts

Os primeiros Web Servers traziam dois mecanismos para


pginas dinmicas: o CGI e os SSI

CGI um gateway genrico - qualquer linguagem e qualquer


SO - mas tem problemas de performance

CGI utiliza a entrada e sada padro e variveis do ambiente

Os Server-Side Includes surgiram como opo para os noprogramadores e logo evoluram para os Server-Side Scripts

Desenvolvimento de Web Sites Com PHP

2003 Fernando Lozano http://www.lozano.eti.br

CGI versus SSS


Aplicao CGI
#!/bin/perl -w
require "cgi-lib.pl";
require "lib.pl";
$msg = processa();
echo ("<HTML>\n");
echo ("<HEAD>\n");
echo ("</HEAD>\n");
echo ("<BODY>\n");
echo ("$msg\n");
echo ("</BODY>\n");
echo ("</HTML>\n");

Desenvolvimento de Web Sites Com PHP

Aplicao SSS
<HTML>
<HEAD>
</HEAD>
<php
include "lib.inc";
$msg = processa();
?>
<BODY>
<?= $msg ?>
</BODY>
</HTML>

2003 Fernando Lozano http://www.lozano.eti.br

ActiveX e Java Applets

Ferramentas de cliente

Problemas de performance, compatibilidade, segurana e


escalabilidade

No permitem que se obtenha as vantagens do cliente


magro como reduo do TCO

No so recomendadas para aplicaes comerciais

Desenvolvimento de Web Sites Com PHP

2003 Fernando Lozano http://www.lozano.eti.br

CSS, DOM

A idia dos CSS definir estilos de maneira similar a


modelos em editores de texto

Facilidade em se definir (e modificar) centralmente o layout de


um site

Incompatibilidade entre navegadores

Ningum realmente implementa o padro

O DOM (Documento Object Model) visa padronizar e facilitar


a manipulao de elementos da pgina por scripts Javascript

Novamente, ningum implementa o padro

No chegam realmente a afetar o desenvolvedor de


aplicaes, mas sim o designer

Desenvolvimento de Web Sites Com PHP

2003 Fernando Lozano http://www.lozano.eti.br

XML, XSL, WAP

O XML uma volta s origens do HTML, onde o objetivo


era representar contedo e no layout

Formato genrico, universal e extensvel de importao /


exportao de dados

O XSL permite associar um layout a um arquivo XML ou


converter de um DTD para outro (o DTD define os tags XML
utilizados em um documento)

WAP um dialeto (DTD) do XML para PDAs e Celulares


basicamente um HTML capado

Qualquer ferramenta CGI ou SSS pode gerar XML e WAP; a


maioria capaz de ler e processar XML

Desenvolvimento de Web Sites Com PHP

2003 Fernando Lozano http://www.lozano.eti.br

Extenses do Web Server

NSAPI, ISAPI, Apache modules

Resolvem o problema de performance do CGI

So APIs de baixo nvel, adequadas para extender o


servidor (ex: criptografia) no para o programador de
aplicaes

O mercado adotou o melhor dos dois mundos:


Implementar server-side scripts como extenses do
servidor!

Desenvolvimento de Web Sites Com PHP

2003 Fernando Lozano http://www.lozano.eti.br

O Que o PHP

Ferramenta SSS multiplataforma

Verses do PHP

PHP x Concorrncia

Desenvolvimento de Web Sites Com PHP

2003 Fernando Lozano http://www.lozano.eti.br

O PHP:
HTML Pre-Processor

Originalmente chamado de Personal Home Page Toolkit

um processador de SSS, que pode ser instalado como um


programa CGI, como um Apache module, ou como uma
extenso ISAPI ou NSAPI

Portvel: verses para Unix, Windows e OS/2

Linguagem de programao prpria, semelhante a C, Java


ou Perl

Recursos de Programao Orientada a Objetos

PHP + mySQL eleita a melhor combinao para Web Sites

PHP s perde na Internet (por enquanto) para Perl e


mod_perl

Desenvolvimento de Web Sites Com PHP

2003 Fernando Lozano http://www.lozano.eti.br

Verses do PHP

PHP

PHP3

Apenas um SSI
incrementado

Linguagem de
programao completa

Contadores, guest books,


etc

Classes e objetos

Segurana

Incompatvel com o PHP/FI

PHP/FI

Recursos bsicos de
programao
Acesso ao mSQL

Mdulo para o Apache

Incompatvel com o PHP


original

Desenvolvimento de Web Sites Com PHP

PHP4

Zend Optimzer

Compatvel (nem sempre)


com o PHP 3

2003 Fernando Lozano http://www.lozano.eti.br

Em Breve, o PHP 5

Modelo de Objetos bem semelhante ao Java

Excesses estruturadas

Integrao mais fcil com objetos criados em outras


linguagens

Biblioteca PEAR expandida

Desenvolvimento de Web Sites Com PHP

2003 Fernando Lozano http://www.lozano.eti.br

Mdulos do PHP

O PHP extensvel por mdulos (extenses) escritos em C

O PHP j vem com uma grande quantidade deles, que


podem ser ativados gosto do usurio:

Recompilando o PHP em Unix

Editando o arquivo php.ini no Windows

PEAR o esforo de se reunir e padronizar bibliotecas


escritas em PHP (em geral como classes) de modo
semelhante ao CPAN para o Perl

Desenvolvimento de Web Sites Com PHP

2003 Fernando Lozano http://www.lozano.eti.br

Mdulos do PHP

Bancos de dados: Oracle,


Sybase, DB2, ODBC,
Solid, mSQL PostgreSQL,
Interbase, Informix,
mySQL, MS SQL Server,
ODBC e outros
SMTP, POP e IMAP
(e-mail)
LDAP
(diretrio)
SNMP
(gerenciamento de redes)

Desenvolvimento de Web Sites Com PHP

FTP e HTTP

Gerao de GIFs e PNG

Gerao de PDF e Flash

XML

Compactao

Criptografia

Objetos COM / DCOM

Classes Java, Beans, EJB

IPC do System V (memria


compartilhada, semforos,
etc)

2003 Fernando Lozano http://www.lozano.eti.br

PHP versus ASP

A facilidade de uso a mesma

Tudo o que pode ser feito em um tambm pode ser feito no


outro (desde que voc tenha um Objeto COM/OCX/ActiveX
adequado para o ASP)

O PHP no est preso ao mundo Windows, mas pode


utilizar COM, ADO e etc (perdendo a portabilidade)

O PHP no tem um depurador passo-a-passo (mas existem


produtos de terceiros)

O PHP pode ser auditado (no cdigo-fonte) quanto


segurana

Desenvolvimento de Web Sites Com PHP

2003 Fernando Lozano http://www.lozano.eti.br

PHP versus .NET

O .NET apenas um novo nome para a reunio de


tecnologias Microsoft reorientadas para XML e dependente
de servios do MSN (Microsoft Network) como o Hailstorm e
o Passport

ASP e XML

DCOM, ActiveX

MS Java, renomeado como C#

O PHP capaz de interagir com ele, da mesma forma como


ele capaz de interfacear com as verses anterioes do VB e
MSVC++

O PHP poder ser otimizado via o CLR do C# como opo


ao Zend Optimizer que j existe hoje ou aos aceleradores
livres disponveis atualmente

Desenvolvimento de Web Sites Com PHP

2003 Fernando Lozano http://www.lozano.eti.br

PHP versus ColdFusion

A sintaxe do PHP bem mais inteligvel do que os tags


estilo HTML do ColdFusion, que tornam difcil a manuteno
dos programas

No existe ainda um IDE livre sofisticado para o PHP, mas


h o PHPed, PHPide e Zend IDE, todos comerciais

H iniciativas interessantes dentro do Eclipse


(phpclipse, phpstudio) porm ainda imaturas

O PHP no est restrito s plataformas suportadas pela


Macromedia (Windows, Solaris e Linux)

O PHP no to caro, mesmo com os produtos Zend

Desenvolvimento de Web Sites Com PHP

2003 Fernando Lozano http://www.lozano.eti.br

PHP versus Java


(Servets e JSP)

O PHP mais fcil de instalar

O PHP mais fcil de aprender

O PHP mais lento


(sem o Zend Optimzer, que comercial)

O PHP no tem recursos para aplicaes distribudas

O PHP 100% livre mesmo que voc utilize JBoss ou


Tomcat, as APIs do Java, a linguagem Java e a Mquina
Virtual (JVM) no o so

O PHP pode utilizar objetos Java, inclusive EJBs

Desenvolvimento de Web Sites Com PHP

2003 Fernando Lozano http://www.lozano.eti.br

O PHP Foi Feito Para a


Internet!

O PHP j inclui mecanismos de segurana e integridade


essenciais para provedores internet, como:

Limite sobre o tempo de execuo de um script

Limite sobre a quantidade de memria alocada por um script

Limite sobre o tamanho dos arquivos enviados para um script

Restries sobre os diretrios que podem ser lidos ou escritos


por um script

Restrio de UID dos scritps e dos arquivos acessados,


mesmo se instalado como extenso do servidor

Modos taint para prevenir contra ataques cross-site scripting


e manipulao da requisio HTTP

Desenvolvimento de Web Sites Com PHP

2003 Fernando Lozano http://www.lozano.eti.br

Best Practices

Utilize o mnimo de formatao no HTML, utilize folhas de


estilo CSS em arquivos externos

Utilize o mnimo de JavaScript, e quando utilizar, que seja


para validao de dados e confirmao
(os antigos macetes de destacar links e imagens podem ser
feitos por CSS)

Evite utilizar DHTML ou DOM, pois limitar a


compatibilidade com navegadores

Programe a lgica da aplicao no servidor e no no


navegador

Investigue arquiteturas / frameworks MVC, mecanismos de


templates e ccahing para sites mais sofisticados

Desenvolvimento de Web Sites Com PHP

2003 Fernando Lozano http://www.lozano.eti.br

Sintaxe do PHP

O tag PHP

Variveis e expresses

Arrays

Estruturas de Controle

Funes

Bibliotecas

Sintaxes alternativas

Desenvolvimento de Web Sites Com PHP

2003 Fernando Lozano http://www.lozano.eti.br

Um programa PHP

O clssico Hello, world


<HTML>
<BODY>
<?php
echo Teste do PHP
?>
</BODY>
</HTML>

Desenvolvimento de Web Sites Com PHP

2003 Fernando Lozano http://www.lozano.eti.br

Que Opes esto no Seu


PHP ?

A funo pr-definida phpinfo() retorna todos os parmetros


de configurao do PHP importante para programas
hospedados em provedores
<HTML>
<BODY>
<?php
phpinfo ()
?>
</BODY>
</HTML>

Desenvolvimento de Web Sites Com PHP

2003 Fernando Lozano http://www.lozano.eti.br

Variveis

Estilo Perl: $nome

No so tipadas

No precisam ser declaradas

No PHP 4, precisam ser inicializadas

Usamos somente o $, no usamos @ ou %

So expandidas dentro de strings (exceto arrays, neste caso


utilize chaves {})
$nome = Fernando Lozano;
echo bom dia, $nome!;

Desenvolvimento de Web Sites Com PHP

2003 Fernando Lozano http://www.lozano.eti.br

Expresses

Operadores

Aritmtica decimal
+ - * / % ++ --

Aritmtica binria
&|^~

Condicional
&& || !
== != < > <= >=

Strings via funes


. (concatenao)

Atribuio
= += -= *= /=

Desenvolvimento de Web Sites Com PHP

Expresses Regulares

Precedncia, agrupamento
com parnteses e curtocurcuito

Comando eval
$v1 = 2; $v2 = 4;
$a = v1;$b = v2;
eval \$r = $a + $b;
// equivale
// $r = $v1 + $v2;

2003 Fernando Lozano http://www.lozano.eti.br

Arrays

Arrays normais
$dezena[2] = vinte;

Arrays associativos (hash)


$estado[RJ] = Rio de Janeiro;

Multidimensionais
$matriz[3][2] = 12;

Quantos elementos?
$n = count ($ddd)

Como percorrer arrays associativos?


$chaves = keys ($estado);

Desenvolvimento de Web Sites Com PHP

2003 Fernando Lozano http://www.lozano.eti.br

Estruturas de Controle

Bloco: { comandos }

if (condio)
bloco
else
bloco

for (expresso; condio;


expresso)
bloco

while (condio)
bloco

Desenvolvimento de Web Sites Com PHP

foreach ($arr as $val)


bloco

foreach ($arr as $key =>


$val)
bloco

switch (expresso) {
valor: bloco
default: bloco
}

Continue;

Break;

2003 Fernando Lozano http://www.lozano.eti.br

Funes

Funes pr-definidas fornecidas pelos mdulos

Funes definidas pelo usurio


function porcento ($arg1, $arg2)
{
$valor = ($arg1 * 100) / $arg2;
return $valor;
}

No necessrio retornar um valor

Os argumentos no no verificados

Desenvolvimento de Web Sites Com PHP

2003 Fernando Lozano http://www.lozano.eti.br

Sintaxes Alternativas

Estruturas de controle

If: else: endif;


while: endwhile;
for: endfor;
foreach: endfor;

Short tags
<? ?> e <?= ?>

(o ltimo somente no PHP 4)

ASP Tags
<% %> e <%= %>

(para editores como o FrontPage, que apagam qualquer coisa


que eles no reconheam)

Desenvolvimento de Web Sites Com PHP

2003 Fernando Lozano http://www.lozano.eti.br

Bibliotecas

Podem conter tanto comandos PHP quanto HTML

Devem incluir os tags PHP

Utilizamos pelo comando


include nome-da-biblioteca;

Ou ento o comando
require nome-da-biblioteca;

Os comandos so executados imediatamente

A biblioteca deve utilizar o tag PHP

Desenvolvimento de Web Sites Com PHP

2003 Fernando Lozano http://www.lozano.eti.br

PHP em Windows
O PHP4 fornecido em dois pacotes:

Autoinstalador

Apenas o EXE para CGI

Configurao automtica para Apache, IIS, PWS e outros


servidores

Somente extenses para MySQL e ODBC

Arquivo ZIP

DLLs para ISAPI e NSAPI

Configurao manual

Quase todas as extenses

Desenvolvimento de Web Sites Com PHP

2003 Fernando Lozano http://www.lozano.eti.br

PHP em Windows (2)

Se usar o PHP com o Apache, voc duplica o ambiente de


um provedor baseado em Unix

As configuraes do Apache so idnticas, mudando apenas


os paths

A configurao do PHP depende do arquivo


c:\windows\php.ini

Os diretrios que contenham pginas PHP devem receber


permisso de execuo (no apenas de script) no IIS ou
PWS

Desenvolvimento de Web Sites Com PHP

2003 Fernando Lozano http://www.lozano.eti.br

Fim da Parte I

Obrigado pela presena!

Estou disposio para responder perguntas no e-mail


fernando@lozano.eti.br

Prxima parte: Programao para a Internet e Bancos de


Dados

2000,2003 Fernando Lozano


http://www.lozano.eti.br

Este tutorial pode ser reproduzido sem modificaes, desde


que citada a sua origem e mantida a nota de copyright

Desenvolvimento de Web Sites Com PHP

2003 Fernando Lozano http://www.lozano.eti.br