Vous êtes sur la page 1sur 30

ano 2 | edio 4

novembro-dezembro/2011
PHPReview | 4 edio | novembro-dezembro/2011 | www.phpreview.net 2
Editorial
Mais uma edio da PHP Review
Salve, salve amigos! Depois de muita luta para manter a revista de p,
conseguimos chegar a mais uma edio da PHP Review. Foram oito meses
desde a ltima edio, quando o previsto era para ser apenas um. Infeliz-
mente, ainda temos que contar com o apoio e a colaborao de voluntrios.
No entanto, isso vai mudar a partir desta edio. Mas, vamos ao que inte-
ressa... .
Nesta edio, vamos falar da programao utilizando Frameworks
em PHP. Para voc que est cansado de programar na unha este o mo-
mento de mudar radicalmente a sua forma de trabalhar. Voc vai ver que a
utilizao de MVC facilita muito o desenvolvimento de sistemas e de sites,
tanto na questo de organizao de cdigo como no reaproveitamento do
que foi programado. Por isso, Elton Minetto faz um apanhado geral de
como utilizar um framework; as [muitas] vantagens e [algumas] desvantagens
de utilizar cada um deles. Tambm seremos mergulhados neste mundo de
vez com a apresentao de quatro grandes frameworks: CakePHP, Zend
Framework, CodeIgniter e Kohana. Voc no somente aprender a utilizar
um framework como tambm aprender a instalar alguns deles.
Alm disso, temos tambm as nossas colunas de testes, o #papo-
deprogramador e a volta da coluna Simples assim, alm das estrias dos
quadros Mo na massa e Vida de programador.
Esta edio marca ainda o incio das parcerias [que acreditamos
serem duradouras] com a Digital 3i e a Hypersites. A Digital 3i vai ser
a responsvel pela reforma grfica da revista e de nosso website, e a Hyper-
sites vai ficar responsvel pela programao do site. Alm disso, passamos
a contar com a colaborao do jornalista Leonardo Valente. A PHP Review
vai tambm intensificar sua estratgia de publicidade, com a criao de ban-
ners para a divulgao em sites e blogs.
Esperamos que gostem desta edio, aproveitem bastante seu con-
tedo e lembre-se: seu feedback muito importante para a nossa revista. At
a prxima!
Equipe PHP Review.
Expediente
Editor-chefe:
Andr Luiz Pinheiro
andre.pinheiro@phpreview.net
Editorao:
Digital 3i
contato@digital3i.com.br
Contedo:
Alexandre Taz Andrade
alexandre.andrade@phpreview.net
Editorial:
Andr Luiz Pinheiro
andre.pinheiro@phpreview.net
Jornalista:
Leonardo Valente
leonardo.lvalente@gmail.com
Capa:
Joo Corra
joaobfcorre@gmail.com
Colaboradores:
Ademir Cristano Gabardo
Alexandre Taz Andrade
Cauan Cabral
Elton Lus Mineto
Rafael Dohms
Roberto S. Lima
Anncios:
Equipe PHP Review
comercial@phpreview.net
Todas as informaes e dados
tcnicos que constam nos
artgos e demais contedos
editoriais tm exclusivo
objetvo informatvo. A
revista no se responsabiliza
por aplicaes ou usos incor-
retos de qualquer uma dessas
informaes.
PHPReview | 4 edio | novembro-dezembro/2011 | www.phpreview.net 3
Nesta Edio
CAPA
Frameworks
Fizemos um passeio pelos principais frameworks em
PHP para que voc conhea melhor cada um deles
10
CakePHP
Aprenda a instalar e confgurar de forma muito fcil
16
Web Enterprise com Zend Framework
possvel construir uma aplicao robusta usando ZF?
20
Kohana
Voc tambm deveria us-lo
23
COLUNAS
Mas porque quero escrever testes? 6
Muito alm do cdigo 8
No seja escravo do Framework 9
ACONTECE
Geral
PHP
ARTIGOS
Autenticao de usurio com Code Igniter 26
Frameworks
Enviando E-mail com PHP Mailer e Smarty 28
Agenda 5
Jquery 1.6.3 disponvel
PostgreSQL 9.1 RC1
4
4
Acordo garante periodicidade da revista 4
Verso 5.3.8 j est disponvel
CakePHP mais perto da verso 2.0
5
5
Core do PHP usar GIT 5
Lanamento do Symfony 2.0 5
MO NA MASSA
Acontece
Jquery 1.6.3 disponvel
Foi lanado no ltimo dia 01/09 a nova verso do
Jquery onde foram corrigidos muitos bugs, prin-
cipalmente relacionados a ataques XSS, que eram
executados quando uma chamada $() no conti-
nha nenhum parmetro. Tambm foram realizadas
melhorias no tratamento de atributos HTML 5.
Para a correo do bug, necessrio alterar o arqui-
vo no servidor, inclusive o nome do mesmo.
Baixe agora mesmo a nova verso do Jquery na
verso mnima (http://bit.ly/oN5evq) ou na verso
completa (http://bit.ly/riF2mg).
4 PostgreSQL 9.1 RC1
Foi disponibilizado no ltimo dia 22/08 a primeira
verso Pr-Release do PostgreSQL 9.1.
O Postgre um poderoso e completo Banco de dados
gratuito. Dentre as principais funcionalidades, esto
suporte a trigger, Stored Procedure, View. Os dados,
divididos em tablespaces, apresentam alto grau de
segurana e garantia de performance.
Para baixar a nova verso do SGDB PostegreSQL,
acesse (http://www.postgresql.org/download/).
4
Nova parceria garante periodicidade da PHP Review
Uma parceria frmada no ms de agosto vai garantir a nossa periodicidade. O acrodo foi frmado com
a Digital 3i, empresa do ramo de editorao on-line, que passa a administrar grafcamente a revista.
Com isso, ns da PHP Review continuamos a fazer toda a adminstrao do contedo tcnico da revista,
garantindo assim a manuteno de nossa qualidade.
Faz parte do acordo, a reestruturao da diagramao da revista, a reformulao do design do nosso
site, a retipagem da logomarca, mas este no o maior ganho que teremos. A Digital 3i atua forte-
mente na publicao online de revistas. Ns ganharemos, pois desta foram a PHP Review passa a ter
um leitor on-line de contedo, que pode ser acessvel por qualquer smartphone android, alm de
tablets, IPhone e IPad.
Algumas alteraes j podero ser vistas nesta 4 edio, outras, porm, s surgiro nas prximas
edies.
4
Enquete
Perguntamos aos nossos seguidores do Twitter: Qual
o editor PHP que voc usa?
Confra abaixo o resultado.
CodeLobster
PHP Editor
TextMate
Aptana 3.0
Outros
Dreamweaver
Zend Studio
Unicode
Eclipse PDT
Netbeans
Entre no nosso site e responda a nossa prxima en-
quete: Voc acha vlida a certifcao em PHP?
http://www.phpreview.net
Voc j pode enviar seu artigo para as prximas
edies. No nosso ste possvel ver a data prevista
de lanamento e o tema de cada revista que ser
lanada. Mais detalhes em:
http://www.phpreview.net/edicoes/envio
PHPReview | 4 edio | julho-agosto/2011 | www.phpreview.net 4
PHPReview | 4 edio | julho-agosto/2011 | www.phpreview.net 5
PHP 5.3.8 disponvel
Foi lanada no dia 23 de agosto a verso 5.3.8 do
PHP. Desta vez, foram feitas apenas duas correes
pontuais: a funo crypt (), que quando era usa-
da com MD5 retornava apenas o salt da critografa,
e um bug no Open SSL que gerava timeout nas req-
uisies, o que foi corrigido com o retorno do cdigo
da verso 5.3.6. Voc j pode baixar a nova verso
no endereo
(http://www.php.net/downloads.php).
4 Core do PHP ser gerenciado no GIT
Depois de uma enquete realizada entre os desenvolvedores do core do PHP, a maioria decidiu trocar
o gerenciamento do cdigo fonte para um servidor GIT. Esta mudana ser realizada at dezembro
deste ano.
Criado por Linus Torvalds para gerenciar o cdigo fonte do kernel do Linux , o GIT passou a ter adeptos
rapidamente devido a sua facilidade de utilizao e armazenamento de histrico, uma vez que toda
a rvore replicada em cada branch criado.
Existe hoje um livro (em ingls) que introduz o usurio no mundo do GIT e distribuido gratuitamente
em (http://progit.org).
Cake lana verso 2.0
Foi lanada no ltimo dia 16/10 a to aguardada verso 2.0 do framework CakePHP, que apresenta um
grande pacote de melhorias em relao ltima verso estvel (1.3.11). Segundo os desenvolve-
dores apenas alguns bugs foram corrigidos antes do lanamento ofcial do Cake 2.0.
O Core do Cake foi praticamente refeito, com melhorias que vo desde simples correes na utili-
zao de rotas com refatorao de todo o sistema de testes (http://github.com/cakephp/cakephp/
tree/2.0).
Voc poder conhecer mais sobre o Cake nesta edio no artigo do Cau Cabral.
4 Lanamento do Symfony 2.0
O Symfony 2.0 foi lanado em julho deste ano e che-
ga cheio de novidades em relao a verso 1.4.
Dentre as novidades esto: Estrutura de diretrio,
que foi melhorada para utilizao mais fcil de he-
ranas; criao de um sistema otimizado de auto-
loadings, criao facilitada de aplicaes comuns,
como websites, blogs, etc.
Vale a pena conferir estas mudanas em
(http://symfony.com).
4
Agenda PHP
Confra os eventos e j coloque na sua agenda.
4
International PHP
Conference
9 a 12/10/2011
Mainz - Alemanha
Latinoware 2011
19 a 21/10/2010
Usina de Itaupu - PR
Zend PHP Conference
17 a 20/10/2011
Santa Clara - Califrnia
TDC2011
29 e 30/10/2011
Goinia - GO
Encontro Nordeste SL
28 a 30/10/2011
Alagoas - SE
PHPnRio 2011
05/11/2011
CEFETRJ - Rio de Janeiro
Seu evento nesta lista...
Envie um e-mail para
eventos@phpreview.net
informando o nome do
evento, a data e o local.
Pronto! Seu evento estar
na nossa agenda na prxima
edio.
PHPConference
1 a 4/12/2011
UNIFIEO - Osasco - SP
HacknRio
02 e 03/12/2011
UERJ - Rio de Janeiro
PHPReview | 4 edio | novembro-dezembro/2011 | www.phpreview.net 6
Teste, unitrio a completo
Mas por que quero escrever testes?
/**
* @nome Rafael Dohms
* @email rafael@doh.ms
* Rafael Dohms Engenheiro da Computao, trabalha com PHP h mais de 10 anos e partcipa atvamente
* da comunidade PHP. Co-Fundador e Coordenador do PHPSP j ajudou a fundar grupos de PHP em outros
* estados e um dos hosts do PHPSPCast, em seu tempo livre ele procura organizar aes junto a
* comunidade para ajudar o PHP a crescer no mercado. www.rafaeldohms.com.br.
***/
O
assunto despertou seu interesse? Ao menos eu es-
pero que este seja o motivo pelo qual voc voltou
para ler mais um artigo desta coluna, mas e agora?
Se o assunto novo para voc, a pergunta em sua cabea
agora deve ser algo em torno de; Mas por que eu preciso
de testes? ou O que eu tenho a ganhar com essa prtica?.
tima pergunta, permita-me mais uma ou duas pginas para
tentar lhe convencer de que voc precisa deles.
Em primeiro lugar precisamos definir o seu perfil.
Eu vou simplificar ao extremo aqui e dividir os leitores em
duas camadas: desenvolvedores e gerentes. Para ficar bem
claro, vamos definir o desenvolvedor aquele responsvel
por produzir o cdigo e eventualmente corrigir os bugs e
dar manuteno, e como gerentes todos aqueles que no
esto preocupados com o cdigo, mas sim com os clientes
e especificamente o lucro. Se analisarmos o mercado desta
forma cada um destes possui interesses diferentes que po-
dem ou no ser relacionados, mas cada um vai encarar tes-
tes de uma forma diferente.
O Desenvolvedor
Ento voc um desenvolvedor, guerreiro do c-
digo fonte, e possivelmente um sofredor por natureza. Va-
mos analisar alguns aspectos do seu dia a dia. Seu trabalho
comea com um pedido, ou uma requisio, alguns deta-
lhes e um prazo. Munido deste problema e do relgio de
contagem regressiva voc marcha em frente procurando a
soluo para este problema. Vou fazer um pouco de pen-
samento positivo e dizer que voc primeiro pra um pouco
para analisar o problema e como sua arquitetura deve se
estruturar para resolver isso, alguns diagramas UML, uma
ideia geral do comportamento de seus objetos e seu sistema
como um todo. Em seguida voc se isola no mundo do seus
fones de ouvido e sua escolha de som, seja ela rock, psy,
pop ou at sertanejo (eu prefiro msicas de video game em
verso metal rock), e o que que acontece em seguida uma
linda tempestade de cdigo, horas concentrado at que voc
finalmente declara, estou pronto.
Ok, mentira. Durante este processo voc provavel-
mente passou pelo velho ritual do F5: voc escreve um c-
digo, abre o browser, preenche o formulrio de 30 campos,
aperta submit e ops, um erro, volta pro cdigo, preenche
o formulrio de novo (xinga a validao JS) e Bem, aqui
voc pode dar sorte, o seu cdigo pode funcionar, mas
geralmente este processo se repetir algumas dezenas de
vezes at o final do sistema. Depois disso voc volta e testa
tudo novamente, em um servidor de homologao (mais
pensamento positivo!). Com tudo de acordo voc empurra
o cdigo pra frente e l vai ele para seu cliente.
No, no, voc no vai sair de frias agora, o cliente
acabou de ligar, achou um bug no cadastro com pessoas que
tem emails de 300 caracteres. A voc entra no processo do
F5 novamente, corrige este bug, corrige o prximo que era
disparado pelo usurio que usa uma senha de 3 caracteres,
ai vem aquele l que o email tem vrios pontos e derrubou
sua regex de validao. Quando voc finalmente passa por
tudo isso e acha que acabou, hora de seguir em frente, o
cliente do email de 300 caracteres volta e fala que seu email
falhou de novo. Voc se pergunta, Mas como? eu j re-
solvi isso antes, claro que voc no se lembra mais como
resolveu e l vai voc de novo corrigir um bug recorrente. E
viveram codando para sempre
Esta rotina foi extremamente exagerada pra mostrar
diversos pontos de falha, obviamente ela no acontece dessa
forma para todos, eu espero. Mas se estou certo voc se
identificou com a natureza de um ou dois destes pontos de
falha que descrevi, j passou por algo parecido ou cometeu
erros similares. Mas o que testes tem a ver com isso? Vamos
avaliar o processo passo a passo:
Na fase inicial, de projeto, imagine que ao invs de
um apanhado de ideias voc tivesse uma estrutura de testes,
um grupo de funes que definem entradas (dados) e sadas
(dados processados). Ou seja, voc define que vai existir um
objeto responsvel por transformar um array em um XML,
e escreve um teste para isso passando um array e testando
PHPReview | 4 edio | novembro-dezembro/2011 | www.phpreview.net 7
que a sada um XML compatvel com esta entrada. Este
processo se chama Test Driven Development, os testes nas-
cem antes do cdigo e um timo exerccio para achar as
falhas na sua lgica antes de codar, talvez uma classe que
no tinha imaginado, ou uma sequncia que ir falhar. Alm
disso voc tem um conjunto claro de regras para validar seu
sistema quando ele estiver pronto.
Mesmo que a fase inicial no produza estes arte-
fatos, pense no ritual do F5. Preencher aquele formulrio
um saco n? Suponhamos que voc possui um mtodo
que vai processar aquele formulrio, ele que voc esta co-
dando e debugando no ? Voc j sabe os dados de en-
trada, afinal voc esta digitando eles no formulrio a cada
5 minutos, e se ao invs e usar o formulrio voc simule
ele? Um teste simples que passa para o seu cdigo um
array de valores, no mesmo formato que o form iria pas-
sar. Agora ficou fcil, voc vai na linha de comando roda os
testes, valida o resultado, usa um debug para acompanhar
os valores internamente na funo ou at vai ao extremo
de usar uns var_dump aqui e ali. Voc acabou de matar o
processo mais demorado (e chato!) que era o de preencher
o formulrio.
E os bugs recorrentes? Imagina que ao receber um
aviso de bug voc adicione a sua massa de dados (os da-
dos simulados que voc passa a sua funo) um email de
300 caracteres, voc vai facilmente identificar o ponto de
falha, mas agora alm disso voc ainda tem um certifica-
do de que este bug no ir voltar, se voltar voc vai ter um
teste falhando pra lhe avisar muito antes do cdigo chegar
a produo. Imagine reescrever pedaos de seu cdigo sem
medo de que esta alterao v alterar outro pedao do seu
sistema que voc nunca imaginou poderia ser afetado.
Estes so alguns aspectos do que a prtica de testes
pode trazer para um desenvolvedor. Sim, voc vai precisar
escrever mais cdigo, pois agora esta escrevendo testes alm
do cdigo, mas voc ganhar muito mais produtividade e
qualidade de cdigo, podendo lhe salvar o tempo que pas-
saria corrigindo bugs e testando formulrios. Parece muito
trabalho inicialmente mas a facilidade que acompanha este
processo facilmente conquista qualquer um.
O Gerente
Ok, voc o gerente, mestre do domnio e senhor
do chicote. Brincadeira, voc o responsvel por tudo isso,
pelo time estar trabalhando e pelo cliente estar feliz, e o
caixa da empresa cheio. Mas o que testes podem trazer para
voc? Seu primeiro pensamento : Se eles vo ter trabalho
extra, o prazo vai aumen-
tar, o cliente vai esperar
mais, e eu perco dinhei-
ro. um pensamento
vlido se voc analisar a
situao a curto prazo ou
com uma viso limitada,
testes tem uma funo a
longo prazo e vo muito
alm da primeira entrega
do sistema.
Uma estrutura de
testes bem desenhada e uma cultura de testes bem imple-
mentada em sua equipe ter como resultado uma alterao
de prazo muito pequena, ou at mesmo pode gerar uma
reduo no prazo. Por exemplo, no caso que descrevi ao
desenvolvedor, se ele elimina o processo de repetio de-
morada do form, ele pode debuggar e finalizar aquele c-
digo mais rpido e entregar o sistema mais rpido. Com a
prtica e experincia fica mais simples e rpido escrever tes-
tes, identificar pontos onde se deve implementar remover
dependncias e tudo corre mais rapidamente.
O resultado deste investimento inicial muito posi-
tivo, voc vai ter um produto mais confivel, uma mtrica
de qualidade que pode se aliar a outras ferramentas como
a Integrao Contnua e trazer certeza a toda entrega de seu
produto, o nmero de bugs reduzido, o cdigo fica mais
limpo e organizado, e mudanas podem ser feitas sem medo
de efeitos colaterais. Isso tudo traz muita flexibilidade ao
seu produto e confiana a sua equipe de desenvolvimento.
Mas nada disso acontece se a prtica no foi levada
a srio e o investimento inicial, onde alguns prazos sero
atrasados e mais tempo ser gasto em planejamento, no for
feito e cumprido. No adianta ficar gritando com a equipe
que o produto no esta pronto se o prazo final no foi alcan-
ado ainda.
Convencido?
Enfim, espero que meu objetivo de lhe convencer
que precisa de testes foi cumprido, ou que pelo menos esta
pensando com mais calma e sua mo esta coando para no
mnimo tentar escrever um teste e ver como . No artigo
anterior analisamos as ferramentas e como escrever testes.
Nas prximas edies vamos comear a trilhar um caminho
e em breve vou poder rechear esta pgina com muito mais
cdigo.
At l! ?>
voc vai precisar
escrever mais cdigo,
pois agora esta
escrevendo testes
alm do cdigo, mas
voc ganhar muito
mais produtvidade e
qualidade de cdigo
COLUNA | teste, de unitrio a completo
PHPReview | 4 edio | novembro-dezembro/2011 | www.phpreview.net 8
#papodeprogramador
Muito alm do cdigo
/**
* @nome Alexandre Taz
* @email alexandretaz@gmail.com
* Alexandre TAZ dos Santos Andrade atua h 8 anos no mercado de PHP. J trabalhou e prestou servios
* nas mais diversas reas e em empresas de todos os tamanhos, tais como Rede Bandeirantes de Televiso
* e PRODESP. Atualmente, desenvolvedor Snior PHP/MYSQL, locado na Atos Origin. entusiasta da
* comunidade PHP e partdrio de uma postura mais profssional para fortalecer o PHP no mercado.
***/
<?php echo Hello World ?>
Galera, hoje eu vou tratar de um assunto muito s-
rio para os programadores: o que saber alm do cdigo.
No estou me referindo sobre que ferramentas aprender,
ou que livro ler, no estou tratando de como tornar um
produto atraente para seu chefe e para a sua organizao.
Mas, o que eu quero dizer com isso? simples.
Conheo programadores muito bons, mas que tm um de-
feito muito srio: no sabem se vender. E isso vai muito
alm do marketing pessoal, e que quando tem de negociar
um aumento de salrio e no se consegue. preciso en-
tender que no mercado de Desenvolvimento as empresas
compram um produto, o nosso conhecimento. E ns deve-
mos vender. neste ponto que devemos prestar ateno.
Isso deve te nortear desde a busca de um novo tra-
balho at na hora de negociar melhores condies. Sem
contar que isso o diferencial para o que quer que voc
faa. Um exemplo bem claro, quando eu vou procurar tra-
balho e entro numa empresa de VAS, rea que atuei muito
tempo, deixo bem claro na entrevista tcnica que j domino
alguns conceitos da indstria, como o que MSISDN, os
que so TOKENS, as principais agregadoras, conceitos de
topup etc. Isso demonstra que o empregador ter menos
custo no meu treinamento.
Mais do que isso: na hora de negociar o salrio isso
me faz pedir mais para eles do que pediria em empresa de
outro ramo, pois sou mais valioso nesse mercado, oras. Mas
isso no um segredo somente para entrevista, um se-
gredo para estar dentro da empresa e conseguir progredir
nela. Quando voc domina o negcio da empresa, voc est
agregando valor ao seu conhecimento como desenvolvedor,
diminuindo o tempo que os usurios tm de te explicar
determinada coisa. Sugerindo melhorias, maximizando o
investimento que a empresa faz em te ter em seu quadro de fun-
cionrios. E sabe como : quanto mais voc conhecer o mercado
no qual trabalha, mais valor voc tem. Quanto mais valor voc
tem, mais deveriam recompensar o seu esforo em aprender.
Ficou clara a ideia? Sim, porque saber algoritmos, tudo
sobre a sua linguagem e banco de dados uma coisa da sua rea,
mas ir alm o que diferencia os profissionais realmente valo-
rizados no mercado. preciso conhecer o negcio, mas mais
do que isso, preciso fazer saber que voc conhece o negcio.
Isso deve ser feito sem arrogncia, fazendo pequenas sugestes,
conversando com seus colaboradores com o vocabulrio do
negcio, minimizando o tecniqus, passando a impresso de
que voc um cara mais agradvel e no outro geek de TI. Es-
pero que o artigo desta edio tenha sido til e que vocs possam
aproveit-lo de alguma maneira para a reflexo sobre atuao e
valorizao profissional. ?>
Quando voc domina o
negcio da empresa, voc
est agregando valor ao
seu conhecimento
VAS: Value-added Service,
muito usado no setor de
Telecomunicao.
MSISDN: nmero nico de identificao
de uma assinatura em uma rede mvel
GSM ou UMTS.
TOKEN: Arquivo utilizado
para informar que um dis-
positivo deseja se conectar
a outro.
PHPReview | 4 edio |novembro-dezembro/2011 | www.phpreview.net 9
Simples assim
No seja escravo do framework
/**
* @nome Andr Luiz Pinheiro
* @email andre.fs@globo.com
* Andr Luiz Pinheiro programador PHP h 6 anos, trabalhando como
* freelancer na construo de sites de e-commerce. J trabalhou como
* consultor em empresas como Vale, banco BMG e Serpro. Tambm faz
* parte da equipe de desenvolvimento do Smarty 3.0.
***/
A
queles que acompanham a evoluo
do PHP, no que diz respeito pro-
gramao, tm acompanhado tambm o
surgimento de uma nova forma de programar:
a utilizao do Framework. Esta funcionalidade
facilita muito o desenvolvimento de aplicaes
web, seja em websites, webservices ou em siste-
mas on-line. No entanto, trata-se de um recurso
que deve ser usado com moderao para que o
seu programa no acabe sendo escravo deste ou
daquele framework.
Nos tempos em que o PHP no tinha sequer a menor expectativa de possuir orientao
a objeto, a programao modular era a forma mais limpa de se ter o cdigo fonte. Bons tempos
aqueles em que o programador detinha o controle da situao; quando os mdulos criados
serviam para facilitar sua vida e no para ditar a regra com a qual ele estaria programando. A
partir da verso 4 do PHP tudo comeou a mudar. O suporte a orientao a objeto, mesmo
que da forma mais simplria possvel, fez com que muitos programadores convertessem seus
mdulos em classes instanciveis, escalveis, flexveis e muito mais simples de estend-los. Estes
mdulos passaram a ser as ferramentas de trabalho que o programador possua.
Hoje, so inmeros os frameworks existentes em PHP. Kohana, Zend, CodeIgniter,
Symfony, Cake, PHPBurn so alguns exemplos. Mas o que difere um do outro? Cada um tem
a sua especificidade, a sua forma de ser trabalhado. Todos eles so conjuntos de ferramentas
para auxiliar o programador no momento do desenvolvimento da aplicao. No se deve, por-
tanto, programar baseando-se em um framework e sim utiliz-lo para o seu trabalho dirio.
Infelizmente, hoje em dia, tenho visto muitos comentrios em grupos de usurios per-
guntando qual o melhor ou o pior framework que existe. A resposta muito simples: o melhor
aquele que se adapta a sua forma de programar. Logicamente, voc tem que se enquadrar na
forma como o framework trabalha, mas isto no pode ser uma imposio, mas conseqncia de
uma escolha do programador.
Pense assim: voc tem um parafuso Philips para abrir. Se voc possui um conjunto de
chaves, voc pode escolher a chave Philips com tamanho ideal para o seu parafuso; se usar a
chave maior no cabe na fenda e voc no soltar o parafuso. Se voc usar a chave menor, cai
corroer a fenda do parafuso e no o abrir. Voc tambm no pode ter uma chave Philips e
achar que todos os parafusos sero abertos por ela, pois se for um parafuso de fenda, com a sua
nica chave voc no conseguir abri-lo. O mesmo ocorre na ferramenta de desenvolvimento.
Escolha com conscincia a sua ferramenta de trabalho, ela ir aumentar muito a sua
produtividade, mas se voc se tornar escravo do framework no poder desenvolver melhorias
alm das que existem no modo escolhido. ?>
O melhor framework
aquele que
se adapta a sua
forma de programar
PHPReview | 4 edio |novembro-dezembro/2011 | www.phpreview.net 10
E agora,
qual Framework usar?
Fizemos um passeio pelos principais frameworks em PHP para
que voc conhea melhor cada um deles
por Elton Minneto <eminetto@gmail.com>
O que um Framework?
U
m framework de desenvolvimento uma
base de onde se pode desenvolver algo
maior ou mais especfico. Trata-se de uma
coleo de cdigos, classes, funes, tcnicas e me-
todologias que facilitam o desenvolvimento de novos
softwares. A idia principal de um framework que o
desenvolvedor nunca inicie a criao de um aplicativo
do zero.
Por que usar?
Quando um desenvolvedor comea a estudar
um novo framework ele depara-se muitas vezes com
uma forma diferente de programar ou at de pensar
um sistema. necessrio aprender uma sintaxe dife-
rente, convenes para nomes de arquivos, variveis e
tabelas de banco de dados. Alm disso, muitas vezes
surge a sensao de estar engessado, pois preciso
fazer as coisas da forma que o framework trabalha e
qualquer coisa diferente requer um pouco de trabalho.
Mas as vantagens em mdio e longo prazo fazem este
pequeno esforo inicial valer.
Como todos os desenvolvedores que usam de-
terminado framework programam usando as mesmas
convenes, classes e bibliotecas, a manuteno de um
programa muito mais fcil. Mesmo que determinado
script tenha sido escrito por outra equipe h vrios me-
ses, no ser necessrio passar horas tentando enten-
der para que serve a classe Foo, a varivel $bar, ou se a
tabela onde esto armazenados os registros de clientes
chama-se Cliente, Clientes ou CLIENTE - como vrios
gerenciadores de bancos de dados so case sensitive
Cliente e CLIENTE so bem diferentes. Isto contribui
para que novos desenvolvedores que ingressem em
uma equipe rapidamente possam se inteirar da forma
como trabalhado diminuindo custos e tempo para
treinamento.
Outra vantagem da grande parte dos frame-
works que tarefas repetitivas podem ser automati-
zadas. o conceito conhecido como DRY Dont
Repeat Yourself, que pode ser traduzido para no
PHPReview | 4 edio | novembro-dezembro/2011 | www.phpreview.net 11
se repita. Em uma aplicao que tenha que manipu-
lar dados vindos de uma tabela na base de dados as
operaes de incluso, excluso e alterao so pra-
ticamente iguais para todas as tabelas envolvidas. No
teria sentido repetir o esforo para desenvolver este c-
digo vrias vezes e a gerao destas funes poderia ser
automatizada por alguma ferramenta contida no frame-
work.
Existem outras vantagens como separao de
apresentao e lgica, facilidade de gerao de testes
automatizados e gerao de documentao.
Principais Frameworks em PHP
Uma das belezas do software livre que sempre existem diversas formas de solucionar um determinado
problema. No seria diferente no quesito Frameworks. Existem diversas opes para o desenvolvedor escolher.
Mas, com o tempo, alguns destes frameworks acabaram se destacando, por diferentes motivos. Neste artigo, vou
citar alguns dos mais usados na atualidade.
CakePHP
O CakePHP foi o primeiro framework que eu usei profissionalmente, aps
ter criado o meu prprio e perceber que estava reinventando a roda. O CakePHP
teve seu desenvolvimento iniciado em 2005 e atualmente encontra-se na verso
1.3.6.
Algumas das vantagens de se usar o CakePHP:
4Instalao simples: ele possui poucos requisitos tc-
nicos para rodar. Um servidor Web com possibilidade
de reescrita de urls, PHP e uma base de dados.
4Fortemente baseado em MVC: MVC significa Mo-
del (Modelo), View (Viso) e Controller (Controlador).
um padro de projetos que favorece a diviso dos
cdigos, separando a lgica de acesso a dados (Mo-
delo), visualizao (HTML, CSS, JS na camada de
Viso) e lgica de negcios (Controlador). Usando-se
CakePHP evita-se a mistura de cdigos, facilitando a
diviso de trabalho entre a equipe
4Validaes de campos: criar um formulrio e validar
os dados preenchidos em cada um dos campos uma
tarefa repetitiva mas importante. O CakePHP possui
componentes que auxiliam nessa tarefa e que podem
ser extendidos para criar validaes especficas.
4Listas de controle de acesso: componentes que auxi-
liam na criao de reas restritas no aplicativo, contro-
lando o acesso de usurios de forma segura, flexvel e
de simples configurao.
4Helpers: so conjuntos de funes existentes no
framework que auxiliam no desenvolvimento da parte
de apresentao dos aplicativos. Existem helpers para
auxiliar na gerao de HTML, formulrios, JavaScript
e Ajax. Novos helpers podem ser criados para ser reu-
tilizados em outros projetos.
4Gerao de cdigo uma das grandes vantagens de
CAPA | E agora, qual framework usar?
PHPReview | 4 edio |novembro-dezembro/2011 | www.phpreview.net 12
utilizar um framework como o CakePHP a possibili-
dade de gerao de cdigos para evitar o esforo repeti-
tivo. O CakePHP apresenta uma ferramenta chamada
bake, que permite a criao dos diretrios da aplicao
alm da gerao de cdigo CRUD. CRUD um acr-
nimo para Create, Retrieve, Update e Delete, que em
portugus poderia ser traduzido para: criar, recuperar,
atualizar e excluir. Estas so as funes bsicas que um
aplicativo deve realizar sobre um conjunto de dados,
por exemplo, uma tabela de base de dados.
O principal objetivo do CakePHP o desen-
volvimento rpido de aplicaes. E ele cumpre o que
promete. A ferramenta bake, responsvel por gerar
cdigos e novos projetos de uma utilidade incrvel.
Com ela possvel acelerar o desenvolvimento de um
novo projeto de maneira significativa. Alm da gerao
de cdigos e dos tens citados acima, outro ponto im-
portante a existncia de uma comunidade de usurios
ativa. Atravs de sites, blogs, frums fcil encontrar
exemplos de cdigo, e auxlio em dvidas e tarefas
mais complexas.
Outro ponto interessante a estrutura de di-
retrios do framework. uma das mais simples, mais
fceis de se entender e aprender. Para quem est ini-
ciando no mundo dos frameworks fcil entender con-
ceitos como MVC e reforar a tcnica de Orientao a
Objetos.
Symfony
O principal objetivo do Symfony aumentar a velocidade de desenvolvi-
mento e manuteno de aplicaes web. Ele reduz as tarefas de codifcao
repetitivas, usando os princpios de DRY Dont Repeat Yourself (no se re-
pita) e KISS - Keep It Simple Stupid (mantenha isto simples seu esttipo),
representando a idia de manter o software o mais simples possvel.
Sua primeira verso foi lanada em 2005, por Fabien Potencier, para
ser utilizado por sua empresa, a Sensio http://www.sensio.com. Aps ter
sido liberado sobre uma licena livre o cdigo comeou a ser mantido por
uma comunidade de desenvolvedores.
Algumas das vantagens:
4Facilidade de instalao: conta com formas de insta-
lao facilitada, como o uso de canais PEAR.
4Flexibilidade: o Symfony altamente configurvel.
Desde a estrutura de diretrios at bibliotecas de ter-
ceiros, quase tudo pode ser customizado. Isso um
fator importante pois facilita o framework ser inserido
em uma empresa onde j exista um ambiente de desen-
volvimento configurado, podendo reaproveitar conhe-
cimento e ferramentas j dominadas pelas equipes.
4No reinventa a roda: uma das decises de projeto
tomadas no desenvolvimento do framework foi a de
utilizar softwares j existentes e especializados para
E agora, qual framework usar? | CAPA
PHPReview | 4 edio | novembro-dezembro/2011 | www.phpreview.net 13
fazer determinadas tarefas. Por exemplo, para a
conexo com as bases de dados e ORM, o Symfony
utiliza a biblioteca chamada Doctrine. Assim, a funo
do Symfony agir como unificador destas ferramentas,
de forma que aparentem ser uma s e no um Franks-
tein cheio de remendos. Para o desenvolvedor que j
conhece algumas destas ferramentas mais uma van-
tagem em utilizar o Symfony, pois pode aproveitar seu
conhecimento j adquirido.
4Validao de campos: possui formas de validar os
dados digitados pelos usurios em formulrios ou urls.
Isso ajuda o desenvolvedor a evitar dados incorretos ou
problemas de segurana
4Logs e debugs: Symfony possui opes de gerao
de logs de atividades e debug facilitado de variveis e
aes. Essas ferramentas auxiliam muito o desenvolve-
dor no momento de encontrar possveis erros de inter-
ao, dados ou outros.
4Gerador de cdigos: o Symfony conta com uma fer-
ramenta para gerao de projetos e cdigos. Essa fer-
ramenta agiliza o desenvolvimento de aplicaes pois
evita que cdigos repetitivos sejam gerados.
Recentemente o framework passou por uma
grande reformulao, em sua vindoura verso 2.0,
que foi lanada ainda no primeiro semestre de 2011.
Segundo os desenvolvedores do projeto, foram imple-
mentadas nessa verso o que h de mais moderno na
linguagem PHP 5.3, tornando-se um dos mais avana-
dos frameworks existentes.
Eu usei o Symfony em poucos projetos e to-
dos muito pequenos, mas a minha humilde opinio
quanto a ele de ser um framework com uma curva
de aprendizado um pouco mais ngreme do que os de-
mais. Mas aps entender o seu funcionamento e suas
metodologias a produtividade no desenvolvimento de
aplicativos realmente tem uma grande evoluo, tendo
destaque a ferramenta de gerao de cdigos e as fer-
ramentas de auxlio ao desenvolvedor, como debug.
Zend Framework
O Zend Framework um framework para PHP 5, orientado a objetos e basea-
do em MVC, que desenvolvido pela empresa Zend junto com a comunidade de
usurios PHP.
Talvez a principal vantagem em se utilizar o
Zend Framework poder contar com o suporte de
uma empresa especializada. Isso no faz grande difer-
ena para desenvolvedores acostumados com o ecossis-
tema de software livre, mas para o mundo dos negcios
isso importante. A Zend formada por grandes de-
senvolvedores da linguagem PHP, como Zeev Suraski
and Andi Gutmans, dois dos responsveis por grandes
quantias de cdigos nas verses iniciais da linguagem.
Ela possui parcerias importantes como IBM e Oracle,
o que fortalece o uso do PHP nas grandes empresas.
Tecnicamente, o framework tambm possui
vrios pontos interessantes. O principal deles o fato
de ser baseado em componentes reutilizveis. Novos
componentes so adicionados na medida em que o
framework evolui. Atualmente, o framework encontra-
se na verso 1.11.2, e uma verso 2.0 est em desen-
volvimento, que ir usar os recursos mais modernos do
PHP 5.3.
O Zend Framework baseado nos principais pa-
dres de projeto, sendo o mais visvel para o desenvolve-
dor o MVC, pois todo aplicativo desenvolvido segue esta
filosofia.
CAPA | E agora, qual framework usar?
PHPReview | 4 edio |novembro-dezembro/2011 | www.phpreview.net 14
Eu tenho usado o framework em meus pro-
jetos por mais de dois anos e posso citar alguns dos
fatores que influenciaram nessa escolha. Alm dos
citados acima, como a existncia de uma empresa que
venda suporte, o Zend Framework muito flexvel,
podendo ser estendido e seus componentes intercam-
beados com outros frameworks. Desta forma pos-
svel, por exemplo, substituir o componente Zend_Db
(res-ponsvel por acesso a uma base de dados) pela bi-
blioteca Doctrine, com poucas alteraes em cdigo e
arquitetura.
Outro fator interessante a existncia de uma
certificao a que os desenvolvedores podem se sub-
meter, a Zend Framework Certification. Isto facilita
na contratao de profissionais, alm de valorizar o de-
senvolvedor.
Diferentemente do CakePHP e do Symfony,
que tem como principal objetivo acelerar o desenvolvi-
mento de aplicaes, o objetivo do Zend Framework
criar projetos mais robustos, maiores, em detrimento
da velocidade de desenvolvimento. Isso no quer dizer
que usar o Zend Framework seja demorado ou pou-
co produtivo. Ele fornece ferramentas para facilitar o
desenvolvimento, mas no possui gerador de cdigos
com o CakePHP e sim uma ferramenta para criar a
estrutura do projeto apenas. So frameworks com obje-
tivos diferentes, mas que compartilham caractersticas
em comum.
Concluso
Sei que voc leu at aqui e deve estar pensando:
Legal! O Minetto vai me dizer agora qual o melhor
framework que existe!. Mas essa uma questo com-
plicada de se responder. O melhor framework o que
se encaixa a sua necessidade. Atualmente os frameworks
se equiparam em quesitos tcnicos, o que diferencia um
pouco so seus objetivos ou a forma como os atingem.
O CakePHP um framework bem acoplado,
os seus componentes esto mais unificados, o que pode
torn-lo um pouco mais complexo para substituir compo-
nentes, mas a facilidade de entendimento de sua estrutura
um ponto alto. E a velocidade de desenvolvimento que
a ferramenta bake fornece muito importante.
O Symfony possui a facilidade de seus compo-
nentes poderem ser substitudos e sua velocidade de de-
senvolvimento um ponto forte. A curva de aprendizado
mais ngreme pode assustar um pouco no comeo mas o
pequeno esforo rapidamente compensado.
O Zend Framework favorece a criao de apli-
caes mais robustas, com foco em escalabilidade e no
somente em velocidade de desenvolvimento. Sua docu-
mentao clara, a boa quantia de livros existentes, seus
excelentes componentes e o aporte de grandes empresas
ajudam na sua escolha.
A minha opinio? Teste. Instale os frameworks,
desenvolva um projeto em cada um deles e tente fazer
sua escolha. ?>
Elton Lus Mineto
Possui graduao e especializao em Cincia de Computao. Professor desde 2004 , trabalha com
PHP/MySQL desde 2000 e com Linux desde 1998. Autor do livro Frameworks para Desenvolvimento em
PHP, da editora Novatec, e co-autor do livro Grid Computng in Research and Educaton, publicado pela
editora IBM/Redbooks, EUA. Scio da Coderockr
htp://www.eltonmineto.net
E agora, qual framework usar? | CAPA
PHPReview | 4 edio |novembro-dezembro/2011 | www.phpreview.net 16
CakePHP
Aprenda a instalar e configurar de forma muito fcil.
por Cau Cabral
N
o h dvida de que existem vrios frame-
works disponveis no mercado, e fato que
alguns costumam ganhar destaque em deter-
minados perodos. Neste artigo, apresentaremos um
destes frameworks de destaque: o CakePHP.
Se digo que este um dos frameworks de
destaque, quais o fatores que o fizeram ganhar esta no-
toriedade? Bom, essa uma questo um tanto subje-
tiva, mas vamos tentar... .
Comeamos pela curva de aprendizado. No
CakePHP ela bem suave, se o programador j tiver
conhecimento de Programao Orientao a Objetos
(OPP) rapidamente pegara os outros conceitos, du-
rante a prpria utilizao. Exatamente, voc vai desco-
brindo o framework enquanto trabalha com ele. Um
fator determinante para essa facilidade esta na filosofia
conveno no lugar de configurao, ou seja, seguin-
do algumas poucas regras bsicas para nomear arqui-
vos e classes voc tem seu sistema funcional sem gastar
tempo com configurao.
O CakePHP um framework especialmente
projetado para agilizar o desenvolvimento de apli-
caes, trazendo gerador de cdigo - o famoso bake -
uma coleo de classes para tarefas rotineiras como au-
tenticao, permissionamento, interao com banco de
dados, criao de webservices dentre outras. Editando
pouqussimo cdigo possvel ter uma aplicao com
criao, leitura, atualizao e remoo de registros, bas-
ta seguir as convees.
Outro ponto muito favorvel a abundncia
de fonte de informao, seja atravs da documentao
oficial - composta pelo Cookbook, onde tem-se exem-
plos e explicaes mais didticas, e a Api para consulta
rpida de funcionalidades - ou ainda diversos sites e
blogs, vrios em lngua portuguesa com dicas, artigos,
cdigos de exemplo e screencasts alm de listas de dis-
cusses e canais de IRC. So inmeros os locais para
buscar informao e ajuda, com uma comunidade
aberta e muito participativa.
Um item que s vezes assusta quem est
comeando o ingls. Graas a comunidade muito
ativa de desenvolvedores no Brasil, temos vrias fontes
de informao em nossa lngua ptria. E mais, pos-
svel deixar o CakePHP falando nossa lngua, basta uti-
lizar um plugin para isso.
Do ponto de vista comercial, alm de ser um
framework livre e gratuito, o CakePHP distribudo
com um licena flexvel, que permite sua integrao
com sistemas livres ou proprietrios. Ele ainda conta
com uma empresa dedicada ao seu desenvolvimento
que pode prestar servio de consultoria e treinamento.
Alm disso tudo um framework maduro,
tendo mais de 6 anos de desenvolvimento e sendo uti-
lizado em vrios sistemas e sites de porte variados.
Talvez voc pense: se o CakePHP to fcil
de usar, por que esse cara no da um exemplo logo?.
Pois bem, vamos a um exemplo.
Como de praxe, imaginemos um cenrio co-
mun entre sistemas, criando uma agenda de contato.
Para criar nosso primeiro sistema voc precisa certifi-
car-se de trs coisas:
1. Seu servidor Apache est funcionando com
suporte a PHP e o mdulo de reescrita est habilitado
(mod_rewrite)
2. Tenha um banco de dados funcionando, uti-
lizaremos o MySQL, mas com pouqussimos ajustes.
possvel utilizar outro banco de dados.
3. Possui conhecimento mnimo de terminal/
console para utilizar as mgicas de gerao de cdigo
Agora precisamos baixar o arquivo do frame-
work. Acesse o endereo oficial do CakePHP
[http://cakephp.org] e faa o download da ltima verso
estvel (stable - neste momento, verso 1.3.12).
Aps fazer o download do arquivo, descom-
pacte-o dentro da pasta pblica pro Apache, normal-
PHPReview | 4 edio | novembro-dezembro/2011 | www.phpreview.net 17
mente public_html ou htdocs (Figura 1).
Apenas para facilitar o acesso, vamos renomear
a pasta que foi criada no momento que descompactamos
arquivo. Utilizarei o nome phpreview. Acesse a pasta
para ver o contedo dela, que deve ser algo semelhante
ao da Figura 2.
Experimente agora acessar a pasta
phpreview atravs do seu servidor local
(http://localhost/phpreview). Deve ser exibida uma
pgina de boas vindas do CakePHP (Figura 3)
indicando o que falta ser feito para que o framework
esteja pronto para o trabalho.
As mensagens em amarela so itens que
precisam de ateno. As duas primeiras referen-se
a constantes usadas para tornar as aplicaes mais
seguras, podemos remove-las seguindo suas instrues:
acesse o arquivo core.php dentro da pasta phpreview/
app/config/ e procure a palavra Security.salt, altere
o valor relacionado a ela (voc pode inserir qualquer
coisa, seja frases, letras ou nmeros), em seguida
busque a palavra Security.cipherSeed e altere o valor
relacionado - desta vez so aceitos apenasa nmeros,
nada de letras ou espaos. Salve o arquivo e feche.
O prximo item aponta a falta de configurao
para acesso ao banco de dados. O que a mensagem
diz renomeie o arquivo config/database.php.default
para config/database.php, mas preciso uma outra
coisa. Aps renomear o arquivo conforme pedido,
abra-o em um editor e v at a linha 76. Este bloco
permite a configurao da conexo com o banco de
dados. Preencha os valores com os dados de acesso ao
seu banco.
Atualize agora a tela do seu navegador com a
pgina do cake e veja se todas as mensagens em amarelo
sumiram. Caso tenha sumido, pode continuar, seno
de uma olhada na mensagem e tente seguir o caminho
indicado para resolver o problema.
Banco de Dados
Vamos criar agora uma tabela para guardar os
registros, para isso, execute o SQL da Listagem 1 no
seu gerenciador de banco de dados favorito.
Gerando o Cdigo do Site
Terminamos a configurao, vamos gerar
cdigo! Acesse um terminal, caminhe at a pasta
phpreview/cake/console e execute o comando ./cake
bake (repare no ponto antes da barra, ele necessrio
quando estiver usando Linux).
Primeiro geramos o Model do nosso projeto,
teclando M, ele faz o mapeamento do bando de dados
pra aplicao. Ele vai fazer algumas perguntas sobre
regras de validao e relacionamento com outros
modelos. Para este artigo utilizaremos n (no) como
Figura 1
Diretrio inicial do CakePHP
Figura 2
Diretrio renomeado
Figura 3
Se o servidor estiver correto, esta tela apresentada
CAPA | CakePHP
PHPReview | 4 edio |novembro-dezembro/2011 | www.phpreview.net 18
resposta para todas elas. A ltima pergunta pede para
revisar as escolhas e confirmar - tecle y (sim) - seu
modelo ser gerado.
Em seguida geramos o Controller (controlador),
responsvel por gerenciar as aes do usurio, fazendo
o meio de campo entre as Views (viso) e o Model
(modelo). Responda n para todas as opes exceto
a opo Would you like to create some basic class
methods e a confirmao final. O primeiro sim para
dizer ao CakePHP para criar nossas aes bsicas no
controlador, a segunda para permitir a escrita do
arquivo.
Por ltimo, geramos as Views (viso, nossas
telas), neste caso siga apenas as opes padres (aperte
enter sem inserir letras). Ao final voc ter os arquivos
mostrados na Figura 5.
Tendo tudo corrido bem, voc j pode acessar
sua aplicao de agenda pelo endereo http://localhost/
phpreview/contatos (Figura 4). L voc poder ver a
lista de contatos criados, adicionar, editar e excluir
registros de contatos alm de visualizar os dados
completos de cada um individualmente.
Este um exemplo bsico do poder de
automatizao de tarefas que o CakePHP proporciona.
Espero que o artigo tenha despertado curiosidade em
voc para conhecer um pouco mais deste fantstico
framework. ?>
Listagem 1
CREATE TABLE IF NOT EXISTS contatos`
(
id INT(11) NOT NULL AUTO_INCREMENT,
`nome` VARCHAR(45) NOT NULL,
`endereco` VARCHAR(255) NULL,
`telefone` VARCHAR(20) NULL,
`celular` VARCHAR(20) NULL,
`email` VARCHAR(255) NULL,
PRIMARY KEY (`id`)
);
Figura 5
Arvore com os arquivos criados aps a
execuo do BAKE
Figura 4
Tela fnal com o cadastro de contatos
Cau Cabral
Comeou a se interessar por computao (e no computador)
aos 12 anos, quando frequentava os canais de IRC. Bacharel em
Cincias da Computao pela UFMS, onde aprendeu fundamentos
e linguagens de programao, como C/C++, Java e Assembly.Hoje
scio da Radig Solues em TI, onde dedica seus esforos no
desenvolvimento baseado na web, utlizando a ferramenta que me-
lhor lhe servir.
CakePHP | CAPA
Aps o fechamento
desta edio foi
lanada a verso 2.0
do Cake PHP, que
est disponvel em
http://github.
com/cakephp/
cakephp/tree/2.0
PHPReview | 4 edio |novembro-dezembro/2011 | www.phpreview.net 20
Web Enterprise com Zend Framework
possvel construir uma aplicao robusta usando ZF?
por Adler Medrado <adlermedrado@gmail.com>
O
desenvolvimento web est cada vez mais
dinmico e atualmente invivel uma equipe
de desenvolvimento utilizar o seu framework
caseiro para atender as necessidades de suas empresas
e/ou clientes.
Neste artigo sero abordados alguns pontos
que demonstram porque se deve utilizar um frame-
work para desenvolvimento web, neste caso, utilizando
a linguagem PHP e o Zend Framework.
O que um framework
Um Framework um conjunto de funcionali-
dades comuns a vrias aplicaes que visam facilitar o
desenvolvimento de software, permitindo assim que
a equipe de desenvolvimento preocupe-se com as re-
gras de negcios especificas da aplicao ao invs de
se preocuparem com a infra-estrutura o que aumenta
a produtividade, pois h um reuso maior de cdigo e
tambm aumenta a qualidade pois todo framework
possui um padro de desenvolvimento que deve ser
seguido pela equipe, o que por sua vez facilita a ma-
nuteno da aplicao.
O Zend Framework
Criado e mantido pela empresa Zend
Technologies (criadora do Zend Engine) em conjunto
com uma extensa comunidade de desenvolvedores ao
redor do mundo, o Zend Framework um framework
para desenvolvimento PHP projetado com base nas
prticas de desenvolvimento orientado a objetos.
Escrito em PHP 5 e totalmente orientado a ob-
jetos, ele baseado em componentes que so o mn-
imo possvel dependentes entre si, ou seja, possuem
baixo acoplamento, permitindo que sejam utilizados
somente os componentes que realmente sejam impor-
tantes no desenvolvimento de uma aplicao.
Todos os componentes possuem testes unitri-
os, o que diminui as chances de que sejam liberadas
releases com componentes defeituosos, claro, nada
100% livre de bugs mas o fato de todo o framework ser
exaustivamente testado diminui e muito as chances de
componentes irem com erros para uma nova release.
A licena utilizada pelo Zend Framework ba-
seada na New BSD o que garante aos seus usurios
total liberdade com seus cdigos no que diz respeito a
copyleft.
Model, View, Controller
A estrutura implementada pelo framework
baseada no MVC ou seja, as camadas de Modelo,
Viso e Controle so distintas.
A camada de modelo, dentre as vrias classes
que a compe, implementa dois padres interessantes:
Table_Data_Gateway e o Row_Data_Gateway que fa-
cilitam muito o trabalho relacionado manipulao de
tabelas e resultsets.
Os cdigos abaixo demonstram esta funcionali-
dade:
class Pessoa extends Zend_Db_Table_Abstract
{
}
No cdigo acima ns definimos uma classe
chamada Pessoa que por sua vez representa uma tabela
PHPReview | 4 edio | novembro-dezembro/2011 | www.phpreview.net 21
no banco de dados tambm denominada Pessoa.
$pessoa = new Pessoa();
$pessoa = $pessoa->fetchAll();
Acima, aps criar uma instncia da classe Pes-
soa, ns podemos manipular os dados desta tabela.
Neste caso, estamos recuperando todos os registros
gravados. Na Listagem 1 esto os exemplos para in-
serir, alterar e excluir um registro.
Obviamente o componente provm muito
mais recursos, este foi somente um pequeno exemplo.
Controllers e Views so to simples quanto
o model, bastando apenas criar uma instancia da
classe Zend_View para obter um objeto de viso o
que j feito automaticamente pelo framework, en-
to, na prtica no necessrio criar uma instancia
desta classe explicitamente e o controller por sua vez,
basta criar uma classe que faa a herana da classe
Zend_Controller_Action.
Mashup e Syndication
Atualmente comum integrar sistemas e web-
sites com servios de terceiros como Google maps,
Google docs, flickr e twitter e quem j implementou
e conhece as APIs destes servios provavelmente con-
cordar comigo que apesar de existirem as APIs, nem
sempre trivial a implementao de certas integraes,
pensando nisso, o framework possui componentes di-
versos para integrao com servios do Google, Yahoo,
Twitter, entre outros, bem como componentes que
permitem manipulaes simples de documentos RSS
e congneres.
Caching
Fazer cache, em muitos casos aumenta a per-
formance de nossas aplicaes mas implementar este
tipo de funcionalidade do incio nem sempre uma
tarefa simples.
Para facilitar o trabalho o Zend Framework
Listagem 1
//Inserir
$pessoa->insert(array(nome =>
Adler Medrado));
$dados = array(nome =>
Adler Brediks Medrado);
$where = id = 1;
// Alterar
$pessoa->update($dados, $where);
// Excluir
$pessoa->delete($where);
prov o componente Zend_Cache que nos permite
gerar e manter cache em diversas fontes como arquivos
texto, memcache, APC, entre outros. Realmente, man-
ter caches com Zend Framework uma tarefa muito
simples.
Componentes Diversos
Todo o contedo de entrada deve ser filtrado,
isso uma premissa bsica de segurana no desenvolvi-
mento web e para isso o Zend Framework provm fil-
tros, validadores prontos e meios muito simples de se
criar filtros e validadores personalizados
O Zend Framework possui tambm compo-
nentes para envio de email, gerar documentos PDF,
Indexao de documentos e busca com Zend_Search_
Lucene que uma implementao em PHP do famoso
Apache Lucene.
Implementar sistemas que necessitam supor-
tar vrios idiomas simples com os componentes de
I18N e L10N que por sua vez suportar diversas formas
de armazenamento e consulta dos dicionrios de idio-
mas.
Implementar WebService com Zend Frame-
work muito simples, seja com SOAP, XML-RPC ou
CAPA | Web Enterprise com Zend Framework
PHPReview | 4 edio |novembro-dezembro/2011 | www.phpreview.net 22
REST utilizando os componentes existentes.
Integrao com outras bibliotecas
possvel implementar aplicaes Web 2.0
escrevendo todo o cdigo AJAX sem o intermdio de
nenhum framework javascript porm esta uma tarefa
Herclea que exige muito tempo disponvel e tempo
atualmente algo bastante escasso.
Dessa forma, comum utilizar frameworks
javascript como JQuery ou Dojo para fazer todo o tra-
balho difcil e neste ponto a integrao do Zend Frame-
work com estas ferramentas muito boa e permite que
o desenvolvedor escreva mais cdigo PHP do que
Javascript para obter o mesmo resultado; Estou falando
dos componentes Zend_Dojo e ZendX_JQuery que j
possuem uma integrao muito madura com esses dois
frameworks javascript que esto entre os mais utiliza-
dos atualmente.
O Zend_View provm mecanismos simples
para a separao das camadas, neste caso, a camada
de viso mas, caso voc j tenha uma boa experin-
cia com a biblioteca Smarty voc pode configurar o
Zend Framework para utilizar o Smarty na camada de
viso e o mesmo conceito ns podemos aplicar para
a camada de modelo, pois, se por algum motivo for
necessrio usar o Doctrine que o mais conhecido,
seno, o nico ORM escrito em PHP como camada
de abstrao de banco de dados, voc pode configurar
o Zend Framework para utiliz-lo como padro. Existe
hoje um trabalho para tornar mais simples a integrao
do Doctrine com o Zend Framework.
No mercado de RIA, a Adobe imbatvel com
o seu Adobe Flex., isso um fato e contra fatos no h
argumentos, desta forma, a Adobe em parceria com a
Zend implementou um componente chamado Zend_
Amf que permite uma integrao simples e transpa-
rente do Zend Framework com o Flex substituindo a
camada de viso padro do framework pelas interfaces
geradas pelo Adobe Flex.
Consideraes Finais
Este artigo tinha por objetivo demonstrar su-
perficialmente as funcionalidades que o Zend Frame-
work pode oferecer no desenvolvimento de aplicaes
web.
Espero que voc tenha aproveitado, e quem
sabe, em uma oportunidade futura possamos publicar
um tutorial prtico de como usar esta ferramenta.
Um abrao e at a prxima. ?>
Adler Medrado
consultor em uma empresa privada com sede em Curitba e es-
critrios em outras unidades da federao; especializado em de-
senvolvimento web, treinamento e segurana e tambm instru-
tor de PHP de todos os nveis, com mais de 2000 horas dentro de
sala de aula. O autor possui as certfcaes Zend Certfed Engi-
neer - PHP 5 e Zend Certfed Engineer Zend Framework sendo o
primeiro latno-americano a certfcar-se nesta ltma.
Web Enterpriae com Zend Framework | CAPA
Zend Framework foi
projetado com base nas
boas prtcas de
desenvolvimento
PHPReview | 4 edio | novembro-dezembro/2011 | www.phpreview.net 23
Kohana Framework
Voc tambm deveria us-lo!
por Daniel Costa <danielcosta@gmail.com>
D
esenvolvedores PHP geralmente j tem al-
guma posio em relao a frameworks: ou
so totalmente contra pois acham que eles
diminuem performance, aumentam complexidade e
amarraes etc; ou so a favor de algum especfico com
o qual trabalham diariamente, e os demais so ignora-
dos. Nesta edio venho apresentar o Kohana Frame-
work, tanto para quem no usa nenhum - e voc ver
que ele pode te ajudar muito daqui pra frente - quanto
para quem j adepto de algum outro framework e
ainda no descobriu uma opo bacana.
O Kohana um framework baseado no j
conhecido Code Igniter e nasceu pela necessidade
de desenvolver usando PHP 5 totalmente orientado a
objetos (o Code Igniter at bem pouco tempo funcio-
nava tranquilamente em PHP 4, ento no era exata-
mente OO). E foi pensando nisso que ele foi escrito,
baseando-se em algumas excelentes idias do CI, como
modularizao e hierarquia de componentes, porm
aproveitando-se de tudo que o PHP 5 tem a oferecer.
Alm disso, ele tambm j vem com uma srie de clas-
ses auxiliares que resolvem a maioria dos problemas
comuns no desenvolvimento web.
Como se espera de qualquer bom framework
atual, o Kohana utiliza arquitetura MVC (Model-View
-Controller), que ajuda o desenvolvedor a escrever seus
cdigos em 3 camadas distintas que so:
- Models:
As classes que manipulam fontes de dados e os
dados propriamente dito (que fique bem claro que no
estamos falando necessariamente de banco de dados,
qualquer fonte de dados entra aqui).

- Views:
Os arquivos de interface com os usurios e os
controles da aplicao no lado do cliente (nessa cama-
da esto o HTML, CSS, JavaScript...).

- Controllers:
As classes que esto no comando da aplicao,
so as responsveis por exibir as views e gerenciar de
volta as requisies das views para os models, e deles
de volta para as views (os guardas de trnsito do sis-
tema).
Mas porque usar o Kohana?
PHP uma linguagem muito, muito fcil de se
programar, este um dos motivos por ser to adotado
em ambiente web. Esta facilidade e a curva de aprendi-
zado tem atrado muitos desenvolvedores ao longo dos
ltimos anos. Mas o PHP tem dois pequenos proble-
mas. Muitos desenvolvedores experientes ainda resis-
tem linguagem devido suas limitaes na Orientao
a Objetos, e a quantidade de cdigo ruim que se en-
contra por a enorme. Mas com o Kohana qualquer
desenvolvedor PHP, do iniciante ao mais experiente,
ter que escrever seus cdigos seguindo um mnimo de
padro exigido pela arquitetura dele.
O Kohana preenche esse abismo entre os ini-
ciantes e designers que gostam do PHP por causa da
facilidade, e os avanados que escrevem tudo orien-
tado a objetos e nada menos que isso. O framework
tambm estimula a adoo de engenharia de software
e deixa isso mais prximo dos desenvolvedores PHP,
por exemplo, com o uso de patterns como Singleton e
Factory, pra citar apenas dois.
O maior motivo porque voc deve comear a
PHPReview | 4 edio |novembro-dezembro/2011 | www.phpreview.net 24
usar o Kohana esse: voc vai passar a desenvolver
cdigo mais padronizado e seguir as melhores prticas
de desenvolvimento, o que essencial quando voc tra-
balha com equipes de iniciantes a avanados comparti-
lhando e mantendo cdigo constantemente.
Caractersticas do framework
- Orientao a Objetos:
um paradigma padro de mercado e o Koha-
na ajuda a consolidar isso no PHP, o que te torna um
desenvolvedor que segue os padres da indstria de
software e apto para atuar com PHP tanto no mercado
corporativo quanto no de aplicaes web.
- Template:
assim como outros vrios frameworks, tem um
suporte a templates muito fcil de usar. De forma muito
simples, basta voc criar uma view chamada template.
php, colocar duas variveis - $title e $content - para
indicar onde vo o ttulo e o contedo da pgina e voc
j tem um template rodando. E d pra fazer muita coisa
personalizada e bacana com templates no Kohana.

- Internacionalizao:
suporta de uma forma absurdamente simples
a internacionalizao do seu sistema. Basicamente
preciso criar um arquivo pra cada idioma, e definir no
objeto de internacionalizaao qual idioma se quer usar.
Mude essa configurao e ele adota o novo idioma au-
tomaticamente. Tambm d pra aproveitar bastante
essa funcionalidade.

- ORM:
do ingls Object-Relational Mapping, um con-
ceito onde seu cdigo manipula diretamente as tabelas
de um banco como objetos, enquanto todo o SQL
gerado pra voc nos bastidores. No Kohana to
simples de usar que basta que seus models estendam a
classe ORM que passar a manipular todo seu banco
de dados sem precisar escrever uma nica query. Ele
robusto e muito estvel, no sinto nenhuma necessi-
dade de acoplar um ORM externo nas minhas apli-
caes.
- MVC:
outra sigla que voc t cansado de conhecer,
mas bom reforar que com MVC voc mantm seu
cdigo organizado, facilitando a vida da sua equipe.
Voc pode pegar qualquer sistema feito com o Kohana
e facilmente entender o que cada trecho de cdigo faz
simplesmente porque tem um fluxo que precisa ser res-
peitado: do controller pra uma view ou pra um model
que por sua vez retorna pra uma view.

- URLs amigveis:
cada requisio aponta para um controller e
um mtodo (as actions de um controller), no estilo
site/controller/action/pa/ra/me/tros. Por
exemplo, para chamar o controller blog que exibe o
artigo nmero 3, a URL ser algo como [1], o que
muito fcil para mapear a aplicao e timo para os
motores de busca.

- Libraries, Helpers e classes de terceiros:
no pacote padro do Kohana voc j recebe
inmeras classes com funcionalidades que a maioria
das aplicaes web precisam. Por exemplo, para vali-
dar qualquer coisa basta usar a classe Validate. H in-
meras outras classes e descobr-las vai tornar sua vida
de desenvolvedor muito mais produtiva.
Iniciando de verdade, agora
Pra comear a desenvolver com o Kohana to
simples quanto os passos abaixo:
1. Baixe o pacote estvel mais recente no site
http://www.kohanaframework.org e descompacte o
contedo no diretrio pblico do seu servidor.
2. Configure a URL principal da aplicao de acordo
com onde est hospedado (se na raz ou num subdi-
retrio), no arquivo application/bootstrap.php na
linha onde tem:
Kohana::init(array(baseurl => /));
3. Teste se sua instalao est OK acessando a URL
Kohana Framework | CAPA
PHPReview | 4 edio | novembro-dezembro/2011 | www.phpreview.net 25
onde voc descompactou o framework. Se
aparecer algum alerta em vermelho voc precisa
verificar os requisitos sugeridos, mas se tudo est
OK voc vai ver uma tela de resultado verde e
seu framework j est pronto pra ser usado!
Desenvolvendo um simples formu-
lrio com validao dos campos.
Agora que sua instalao est pronta, va-
mos fazer um simples formulrio de contato pra
voc entender o fluxo do framework. Criaremos
um template, um controller que estende esse
template, e uma view para o formulrio.

1. Template
Assumimos que voc j tem um layout pro seu
sistema, se no tiver, crie um layout simples s
com as reas do ttulo e do contedo da pgina.
Pronto? Pegue o HTML do seu layout e crie
um arquivo chamado template.php dentro do
diretrio application/views. Nesse arquivo,
edite as reas do ttulo e do contedo colocando
os cdigos abaixo:

- para o ttulo (header, topo da pgina):
<?php echo $title; ?>

- para o contedo:
<?php echo $content; ?>
2. Controller

uma classe simples em PHP
com nome site.php situada no diretrio
application/classes/controller.
CAPA | Kohana Framework
Os arquivos dos
exemplos usados
neste artigo podem
ser baixados em:
https://github.com/
phpreview/edicao-4
3. View

um arquivo PHP que pode em-
butir HTML, CSS e JavaScript. Vamos criar
no diretrio application/views o arquivo
contact.php com o cdigo html do formulrio.
Quando voc acessa a sua URL
[2], essa view chamada pelo mtodo contact
do controller site e exibe o formulrio de con-
tato, ao preencher e enviar os campos o mtodo
do controlador ir agora validar de acordo com
as regras definidas e exibir mensagem de erro
quando necessrio.
Concluso
Voc pde ver como fcil desenvolver
sistemas web com o Kohana, acredite: poss-
vel manter sistemas de qualquer porte com ele.
Voc tambm viu como ele facilita sua vida com
as classes j disponveis como a Validate do nos-
so exemplo. H muito mais para se descobrir,
comece hoje mesmo! ?>
Lista de URLs
[1] http://seusite.com/blog/exibirArtigo/3
[2] http://seuservidor/blog/index.php/site/contact
Daniel Costa
Brasileiro, 20 anos de praia + 5 de cerrado + morando em
sampa desde julho/2008, analista desenvolvedor de pro-
jetos web e trabalhando com TI e Telecom desde 2002.
Bacharel em Cincia da Computao, ps-graduado em
Engenharia de Sofware, tenho experincia em desen-
volvimento e manuteno de sites e sistemas web h mais
de 10 anos, com conhecimentos em HTML/XHTML, CSS,
JavaScript/DOM/AJAX, PHP, ASP, Perl, JSP, MySQL, SQL
Server e Oracle.
PHPReview | 4 edio | novembro-dezembro/2011 | www.phpreview.net 26
Autenticao com CodeIgniter
Criando uma biblioteca para controle de acesso por usurio aplicada a
classes e mtodos com o CodeIgniter.
por Ademir Cristiano Gabardo <ademir.gabbardo@gmail.com>
A
s aplicaes PHP esto se tornando
mais complexas a cada dia. Aplicaes
de uso comercial, acadmico e das mais
diversas finalidades exigem um controle mais
apurado de acesso.
No CodeIgniter, obrigatoriamente, es-
tamos sempre acessando uma classe e um m-
todo de um controlador. Desta forma possvel
mapear todas as possveis aes e/ou caminhos
disponveis em uma aplicao e adicionar o con-
trole de acesso aos mtodos que desejamos con-
trolar.
Desenvolvi uma biblioteca (librarie) para
controlar o acesso dos usurios; o funcionamento
o seguinte. Em uma tabela no banco de dados
(sys_metodos) ficam guardados os nomes de
classe e mtodos, mapeando todos os possveis
caminhos, e em outra (sys_permissoes) ficam
as ids dos usurios com os respectivos mtodos
a que eles tm acesso. Esta segunda tabela est
relacionada a tabela de cadastro de usurios
(tb_usuarios) (Figura 1).
Seria bastante trabalhoso ter que popu-
lar a tabela de mtodos manualmente, ou criar
um Admin para ela, desta forma, foi includa
uma rotina na prpria biblioteca para que, quan-
do um mtodo invocado por ela no for encon-
trado na tabela sys_metodos, ele seja automat-
icamente criado. Desta forma, na primeira vez
em que um mtodo for acessado, ningum ter
permisso de acesso, assim, ser necessrio par-
ametrizar o sistema uma nica vez no primeiro
acesso. Depois poder se construir uma rea de
administrao para varrer a tabela de mtodos e
adicionar ou remover as permisses dos usuri-
os.
O CodeIgniter prov uma maneira de
checarmos onde estamos, ou seja, em que
classe e em que mtodo.
Para verificar o nome da classe utilize a
seguinte linha de cdigo:
$this->router->class
E para recuperar o nome do mtodo utilize:
$this->router->method
Desta forma, podemos passar para a biblioteca o
caminho completo de onde estamos da seguinte
forma:
$this->auth->check_logged(
$this->router->class ,
$this->router->method);
Sendo auth o nome da biblioteca e
check_logged o mtodo que estamos acessando
na biblioteca. Como esta biblioteca estar sendo
acessada em muitas classes e mtodos preferv-
el carregar no autoload para que ela esteja sem-
pre disponvel em qualquer parte da aplicao.
Para proteger um mtodo, basta incluir a
linha de cdigo conforme mostrado na primeira
linha do mtodo, da seguinte forma:
<?php
class AreaRestrita extends Controller
{
function __construct(){
parent::Controller();
}
function index(){
$this->auth->check_logged(
$this->router->class ,
$this->router->method);
}
}?>
Os arquivos dos
exemplos usados
neste artigo podem
ser baixados em:
https://github.com/
phpreview/edicao-4
Artgo
PHPReview | 4 edio | novembro-dezembro/2011 | www.phpreview.net 27
Vejamos ento como fica o cdigo fonte da bi-
blioteca. Salve o cdigo-fonte a seguir com o nome de
arquivo auth.php na pasta system/application/libraries:
Note que a biblioteca se encarrega de inserir
os dados de mtodos e classes que ainda no estejam
cadastrados na tabela sys_metodos.
Quando um usurio tentar acessar uma rea do
website ou sistema que ele no tenha privilgios, ele
ser redirecionado para uma pgina especfica.
redirect(
base_url().home/sempermissao,
refresh
);
E quando ele no estiver logado ser redirecio-
nado para a pgina de login.
redirect(
base_url().home/login,refresh
);
Inclu tambm um mtodo na biblioteca para
checar se o usurio logado no sistema tem permisso
para acessar um determinado mtodo de uma classe
chamado check_menu.
Para utilizar a autenticao no menu, basta che-
car se o usurio tem permisso para o caminho. Isto
pode ser feito diretamente na view do menu com o
cdigo da Listagem 1.
Observe tambm que na tabela sys_metodos
existe um campo chamado privado que tem por ob-
jetivo liberar o acesso de mtodos que estejam prote-
gidos. Caso voc construa um sistema de admin para
gerenciar esta tabela, quando um mtodo est com o
campo privado definido como 1, significa que ele est
com seu acesso restrito somente a usurios com per-
misso de acesso, e quando est ajustado como 0, que
est liberado como mtodo pblico.
Outro detalhe desta tabela um apelido, ele
cadastrado num primeiro momento como classe/
mtodo, mas poder ser alterado para qualquer nome
amigvel e compreensivel para os usurios. Como
por exemplo: Home/login poderia ser substitudo por
Acesso a tela de login.
Para autenticar um usurio no sistema, crie um
formulrio com os campos: usuario, cnpj e senha e
aponte para uma classe de sua preferncia (eu uso a
classe de nome home) com os seguintes mtodos:
Com isso, conclumos nosso sistema de autenti-
cao com controle de nvel de acesso por classe e mtodo.
No exatamente a coisa mais simples do mundo, mas tam-
bm no a mais complicada. importante resaltar que
estou guardando as sesses do codeIgniter no banco de da-
dos. O cadastro de usurio e as funes de administrao
das permisses de usurios na tabela de permisso devem
ser construdas separadamente.
Implementaes futuras esto previstas, e um inconveniente
deste sistema que quando voc altera um nome de classe
ou mtodo, necessrio ajustar a tabela sys_metodos.
isso a. Espero ter ajudado a entender um
pouco mais sobre o CodeIgniter e como fazer autenti-
cao de usurio.
At mais! ?>
Listagem 1
<?php
if($this->auth->
check_menu(home,index) == 1)
{
echo <li><a href=.
base_url() .
home>Home</a></li>;
}
?>
Ademir Gabardo
Autor, Professor e Instrutor, Desenvolvedor web, entusiasta PHP e
de sofware livre. Atualmente desenvolvendo sistemas baseados
em PHP e MySQL com apoio em frameworks MVC e orientao
a objetos. Tambm ministra cursos nas reas de Sofware livre,
BrOfce.org e plataforma MS Ofce. Objetvando lecionar discipli-
nas correlatas em curso superior e contnuar desenvolvendo siste-
mas de Internet e Intranet.
ARTIGO | Autentcao com CodeIgniter
Figura 1
Estrutura de tabela.
PHPReview | 4 edio | novembro-dezembro/2011 | www.phpreview.net 28
E-mail fcil com PHP Mailer
Aprenda a enviar e-mail com PHPMailer e Smarty templates
por Beto Lima <ademir.gabbardo@gmail.com>
O
l para todos, com imenso prazer que
estou aqui pra dar minha contribuio.
O PHPMailer uma classe para envio
de e-mails atravs do PHP via conexo SMTP
ou POP3. Ele distribudo de acordo com o
GNU Lesser General Public License (LGPL),
muito usada em sistemas e sites por a a fora.
Uma das vantagens de usar o phpmailer
poder enviar e-mails autenticados por smtp, j
que a funo mail interna do php no possvel.
Bom, vamos direto ao assunto: para
mais detalhes sobre o PHPMailer visite o site do
projeto (http://phpmailer.worxware.com/).
Primeiro temos uma funo que defini
com o nome de envia_email. Esta funo in-
clui uma classe de template que por vez estende
a classe phpmailer.
A codificao pode ser vista no re-
positrio no arquivo funcao.php.
Para que o e-mail seja enviado corre-
tamente, criei uma classe chamada Template-
Mail que estende a classe do PHPMailer e
contm todos os parmetros para o envio do
e-mail, como servidor SMTP, usurio, senha
e outros. Esta classe pode ser vista no arquivo
TemplateMail.class.php.
Uma vez que tenho esta classe definida
e a funo de envio de e-mail, vamos criar agora
o nosso arquivo de entrada index.php que se
parece com a Listagem 1
O arquivo de template vai ser algo mais
ou menos assim:
<p>Ol %%Nome%%</p>
<p>Voc est recebendo email de teste
na caixa %%Email%%.</p>
O que estiver dentro daqueles sinais de
porcentagens duplas sero substitudos pelo seu
nome e seu email.
At a prxima.
Roberto S. Lima
natural de Esteio RS e trabalha com programao web h
4 anos, usando linguagens HTML, CSS, JAVASCRIPT, PHP, POST-
GRESQL, MYSQL. Atualmente, trabalho em projetos de Sistemas
Web usando HTML5, PHP5, YII e PostgreSQL 9.
Os arquivos dos
exemplos usados
neste artigo podem
ser baixados em:
https://github.com/
phpreview/edicao-4
Listagem 1
<?php
include funcao.php;
envia_email(array(
TEMPLATE=> EMAIL_TEMPLATE1,
Email=> seu@email.com,
Nome=> Seu Nome));
?>
Mo na Massa
PHPReview | 4 edio | novembro-dezembro/2011 | www.phpreview.net 29
Gerenciamento de cdigo-fonte
Voc gerencia o seu cdigo-fonte? Se no faz, ento voc pode
conhecer os projetos Google Code e o Github. Atravs destes dois
servidores voc poder manter o cdigo fonte da sua aplicao
guardado em um servidor independente. Assim, as chances de voc
perder um trabalho quase nula.
User Groups
Uma forma muito rpida de receber suporte para as suas dvidas
fazer parte dos vrios grupos de usurios espalhados por todo o
mundo. Existem grupos relacionados a linguagens de programao,
como PHP, .Net, grupos de sistemas especfcos, como Smarty,
Jquery, Ajax entre outros. Voc pode procurar no Google Groups
quanto no Yahoo grupos.
HTML5
Se voc no gosta de mexer com HTML ento est na hora de
aprender. O HTML 5 est a e quem conhece a fundo o seu funcion-
amento est anos-luz a frente dos concorrentes. Aproveite, estude
e saia na frente na hora de buscar uma posio melhor no mercado.
Slideshare
Este site rene apresentaes de palestras de todos os grandes
eventos, congressos e foruns do mundo. possvel, por exemplo,
ver todas as plestras do ZendCon 2010, ou das palestras do PHP
Conference BR 2010 no mesmo site. A busca pode ser feita por tre-
cho da palestra ou por tags colocadas pelo prprio palestrante.
HTML5 a linguagem
de marcao que
amplia de forma sur-
preendente as fun-
cionalidades da HTML,
alterando de maneira
signifcatva como
voc desenvolve para
a web. Trata-se da mais
extensa especifcao
para a HTML focada em criar funcionalidades
para desenvolvimento no s de sites, mas
tambm de aplicaes de internet rica (RIA).
A linguagem possibilita criar um cdigo to-
talmente semntco empregando os novos
elementos da linguagem.
Editora: Novatec
Preo: R$ 73,00
Comprar Online
Estudo prtco e didt-
co fornecido neste
livro, que traz os prin-
cipais conceitos sobre
manipulao de dados
com a linguagem SQL
(T-SQL), por meio de
exemplos fceis, expli-
caes diretas e exer-
ccios para fxao do
contedo. Apresenta uma breve introduo
ao banco de dados relacional, comandos
DDL (estrutura do BD) e DML para preench-
er tabelas, views (vises), comandos de con-
sulta e outros relacionados programao
de scripts e detalhes sobre instalao.
Para a execuo dos scripts abordados, foi
utlizado o gerenciador de banco de dados
relacional Microsof SQL Server 2008 R2 Ex-
press.
Editora: rica
Preo: R$ 56,00
Comprar Online
Dicas
envie sua dica
dicas@phpreview.net
Livros
Humor
http://www.vidadeprogramador.com.br

Vous aimerez peut-être aussi