Você está na página 1de 51

Padres, PEAR e Frameworks PHP

Professor: FLVIO GOMES DA SILVA LISBOA (FGSL)


Introduo a Padres e Frameworks
Padres, PEAR e Frameworks PHP
Crr!"#m
Ba"$are# em C!%&"!a em Com'(a)*o, (ra+a#$a "omo A&a#!s(a de
Dese&,o#,!me&(o de S!s(emas &a Coorde&a)*o Es(ra(-.!"a de /e"&o#o.!a do
Ser,!)o Federa# de Pro"essame&(o de Dados 0 SERPRO, em'resa do
M!&!s(-r!o da Fa1e&da, "!(ada em 'es2!sa da re,!s(a I&3o E4ame de a.os(o
de 5667 "omo ma das 566 ma!ores em'resas de (e"&o#o.!a do Bras!#8
9: (ra+a#$o &a D!re(or!a I&(er&a"!o&a# do Ba&"o do Bras!#, "om o S!s(ema de
Gere&"!ame&(o de O'era)es (!#!1ado 'e#a Mesa de O'era)es 'ara o
"o&(ro#e dos 3!&a&"!ame&(os de !m'or(a)*o e e4'or(a)*o (ACC, ACE, Car(a de
Cr-d!(o, F!&!m' e O'era)es Es(r(radas)8
Pro.rama em PHP desde a ,ers*o ;, e "o&d1! &o SERPRO o (ra+a#$o de
'ros'e")*o e a,a#!a)*o de 3rameworks 'ara dese&,o#,!me&(o em PHP, do&de
res#(o a !&d!"a)*o do <e&d Framework8 Par(!"!'a da "om&!dade <e&d
Bras!# e - a(or do #!,ro =<e&d Framework 0 Dese&,o#,e&do em PHP >
Or!e&(ado a O+?e(os "om MVC@8
Padres, PEAR e Frameworks PHP
Plano de Aulas
Contedo
A
5
B
;
>
Dia
Mo(!,a)*o 'ara o so de 3rameworks8 I&s(a#a)*o e so do E"#!'se "om
'#.!& PD/8 Padr*o de Pro?e(o MVC8 A'rese&(a)*o do <e&d
Framework8 Pro?e(o MC&!mo8 Padres de Pro?e(o S!&.#e(o&, Co&(ro##er
Fro&( e Co&(ro##er Pa.e8 Co&(ro#e de Erros8
Com'o&e&(e de a"esso ao +a&"o8 Ma'eame&(o O+?e(oDRe#a"!o&a#8
A+s(ra)*o da "amada do +a&"o E Fso de 3&)es es'e"C3!"as8
E&"a's#ame&(o da sess*o "omo o+?e(o8 Padres de Pro?e(o
Fa"(orG,Ga(ewaG,I(era(or e A"(!,e Re"ord8
Im'#eme&(a)*o de "Hd!.o se.ro "om "om'o&e&(es do 3ramework8
F!#(ros e Va#!dadores8 L!s(as de Co&(ro#e de A"esso8 A(e&(!"a)*o8
Se.ra&)a &o a"esso ao +a&"o de dados8
Se'ara)*o da a'#!"a)*o em mHd#os8 Fso de (em'#a(es e s+(em'#a(es
de ':.!&a8 Cr!a)*o de 3orm#:r!os d!&Im!"os8
E&"a's#ame&(o de "om'o&e&(es de (er"e!ros (PEAR, Smar(G)8
Cr!a)*o de &o,os "om'o&e&(es8
Padres, PEAR e Frameworks PHP
Pr-requisitos

Co&$e"!me&(os +:s!"os em H/MLJ

Co&$e"!me&(os +:s!"os em PHPJ

Co&$e"!me&(os +:s!"os de Or!e&(a)*o a O+?e(osJ

Co&$e"!me&(os +:s!"os de +a&"os de dados re#a"!o&a!s8


Padres, PEAR e Frameworks PHP
Padres
O 2e -
m
PADR!K
Padres, PEAR e Frameworks PHP
Padres
Padro
A
sm (lat patronu) " Mode#o o3!"!a# de 'esos e med!das8 # Mode#o8 $ Dese&$o
de es(am'ar!a8 % /C(#o a(%&(!"o8 P. de cor, TelevL "ada m dos (r%s 'adres
!&(er&a"!o&a!s sados 'ara des"re,er "omo as "ores da /V e !ma.e&s de
,Cdeo s*o e4!+!das e (ra&sm!(!dasL M/SC, PAL e SECAM8 P. de fato, InformL
m 'ro?e(o, m-(odo o s!s(ema (*o am'#ame&(e (!#!1ado 2e se (or&o
'adr*o, a'esar de &*o (er s!do re"o&$e"!do o3!"!a#me&(e 'or 2a#2er "om!(%8
P8 DouroL moedaDoro8 P#L padres-ouros e padres-ouro8
Padro
5
sm (pedra+o) " Mo&me&(o de 'edra 2e os 'or(.eses er!.!am em (erras
de sa des"o+er(a8 # Mo&me&(o mo&o#C(!"oJ mar"o8
Fo&(eL Dicionrio Michaellis Portugus8 Me#$orame&(os, 566N8
Padres, PEAR e Frameworks PHP
Padres
P. de fato InformL m 'ro?e(o, m-(odo o
s!s(ema (*o am'#ame&(e (!#!1ado 2e se (or&o
&adro, a'esar de &*o (er s!do re"o&$e"!do
o3!"!a#me&(e 'or 2a#2er "om!(%8
DEFIMIOPO RECFRSIVAQ
Mas (ra1 ma '!s(a 'ara o "o&"e!(o comercial e
industrial de 'adr*oL o re"o&$e"!me&(o o3!"!a# 'or
m 'omit(8
Padres, PEAR e Frameworks PHP
Para qu( ser)em &adres*
PARA +,- A. C!I.A. .- -/CAI0-12
Padres, PEAR e Frameworks PHP
Para qu( ser)em &adres*
It's cool!
Damos
um jeito!
Padres, PEAR e Frameworks PHP
No seria
maravilhoso se todas
as tomadas fossem
padronizadas e eu
no precisasse
comprar adaptadores
e extenses s pra
ligar um aparelho?
Deve ser um sonho...
OReilly Media All rights reserved.
Padres, PEAR e Frameworks PHP
R, <-, (em m
+e&?am!m aCK
Para qu( ser)em &adres*
Padres, PEAR e Frameworks PHP
No seria
maravilhoso se todos
os celulares tivessem
o mesmo tipo de
carregador e eu
pudesse emprestar
de outra pessoa
quando eu esqueo o
meu?
Deve ser um sonho...
OReilly Media All rights reserved.
Padres, PEAR e Frameworks PHP
No seria
maravilhoso se o
mec!nico no
pudesse dizer que as
peas do meu carro
so caras e dif"ceis
de encontrar?
Deve ser um sonho...
OReilly Media All rights reserved.
Padres, PEAR e Frameworks PHP
Para qu( ser)em &adres*




.. ++++
A+O B+O
+O+<OB
BY+
PARA +,- A C!1,/ICA3! .-4A P!..56-72
Padres, PEAR e Frameworks PHP
Para qu( ser)em &adres*
PARA .-R-1 R-C!/8-CID!.2
Marvel Comics All rights reserved. Spiderman created by Stan Lee and Steve it!o.
Padres, PEAR e Frameworks PHP
! +,- .! PADRES DE PROJETO*
(DESIGN PATTERNS)
Mo !&.#%s, &a 3a#(a de m 'adr*o, e4!s(em (r%sL
default
pattern
standard
E &a "o&(ram*o da r!2e1a de ,er+e(es do
Por(.%s, os (r%s s*o .era#me&(e (rad1!dos
"omo888 &adroQ
Padres, PEAR e Frameworks PHP
! +,- .! PADRES DE PROJETO*
(DESIGN PATTERNS)
default
Fm "am!&$o de a)*o (omado 'or m "om'(ador
2a&do &*o - dada a e#e &e&$ma o(ra
!&s(r)*o8
Fo&(eL !"ford #tudents Dictionar$ of %nglish8 O43ord F&!,ers!(G Press, 566A8
Padres, PEAR e Frameworks PHP
! +,- .! PADRES DE PROJETO*
(DESIGN PATTERNS)
pattern
Modo 'e#o 2a# a#.o o"orre, - dese&,o#,!do o -
3e!(o (ro(!&a)J arra&?o de #!&$as, 3ormas, "ores,
e("J um &ro9eto: um 'on9unto de instrues
ou a forma 'omo )o'( 'orta 'amin;o &elo
que )o'( usa: de modo a fa<er al=uma 'oisa8
Fo&(eL !"ford #tudents Dictionar$ of %nglish8 O43ord F&!,ers!(G Press, 566A8
Padres, PEAR e Frameworks PHP
! +,- .! PADRES DE PROJETO*
(DESIGN PATTERNS)
standard
MC,e# de 2a#!dadeJ m &C,e# de 2a#!dade "om o
2a# ,o"% "om'ara a#.ma "o!sa "om o(raJ &C,e#
de "om'or(ame&(o a"e!(:,e# mora#me&(eJ &orma#
o m-d!oJ &*o es'e"!a# o &*o !&"omm8
Fo&(eL !"ford #tudents Dictionar$ of %nglish8 O43ord F&!,ers!(G Press, 566A8
Padres, PEAR e Frameworks PHP
! +,- .! PADRES DE PROJETO*
(DESIGN PATTERNS)
&'ada padro descreve um pro(lema no nosso
am(iente e o n)cleo da sua solu*o de tal forma
+ue voc possa usar esta solu*o mais de um
milho de ve,es sem nunca fa,-lo da mesma
maneira.-
Cristo&;er Ale>ander
I&(eressa&(e888 mas e#e es(: 3a#a&do de
ed!3!"a)es e "!dadesQ
Padres, PEAR e Frameworks PHP
! +,- .! PADRES DE PROJETO*
(DESIGN PATTERNS)
/odo 'adr*o de 'ro?e(o "o&s!s(e esse&"!a#me&(e
emL

.m nome/

.m pro(lema/

.ma solu*o/

'onse+0ncias 1vantagens e desvantagens2.


Padres, PEAR e Frameworks PHP
! +,- .! PADRES DE PROJETO*
(DESIGN PATTERNS)
Mas o +ue so afinal3
Podemos d!1er 2e 'adres de 'ro?e(o s*o
=so#)es re(!#!1:,e!s de so3(ware or!e&(ado a
o+?e(os@ (Gamma, 5666)
#$%&N'(D# ( #)*&'#+?
#,- N.#!
Padres, PEAR e Frameworks PHP
! +,- .! PADRES DE PROJETO*
(DESIGN PATTERNS)
Podemos a!&da d!1er 2e 'adres de 'ro?e(o s*o
=so#)es s!m'#es 'ara 'ro+#emas es'e"C3!"os &o
'ro?e(o de so3(ware or!e&(ado a o+?e(os@
(Gamma, 5666)
TEM QUE SER
#$%&N'(D# ( #)*&'#+?
Padres, PEAR e Frameworks PHP
Reviso: Orientao a Objetos
Se.&do Mar(!&(ASS>), a (e"&o#o.!a or!e&(ada a
o+?e(os (ra1 ,:r!os +e&e3C"!osL

Reusa?ilidadeJ

-sta?ilidade (o+(!da "om o reso)J

=A ignorn!ia " #$a beno@ (o"#(a)*o do


+a!4o &C,e# de !m'#eme&(a)*o)J
Padres, PEAR e Frameworks PHP
Reviso: Orientao a Objetos

C#asses 'om&le>as 3e!(as a 'ar(!r de "#asses


sim&les (#!&$a de mo&(a.em)J

Confia?ilidade (me&or &Tmero de 3a#$as)J

/o)os mer'ados ("#asses es'e"!a#!s(as 2e


sam "#asses .e&-r!"as)J

Pro9eto mais r@&ido (o+(!do "om o reso)J


Padres, PEAR e Frameworks PHP
Reviso: Orientao a Objetos

Pro9eto de qualidade mais ele)ada (o+(!do


"om o reso)J

Inte=ridade (dados 'ro(e.!dos)J

Pro=ramao mais f@'il ($: "o&(ro,-rs!as)J

1anuteno mais f@'il (mde em m sH


#.ar)J
Padres, PEAR e Frameworks PHP
Reviso: Orientao a Objetos

-stAmulo da 'riati)idade (o 2e 'ode ser


'er!.oso sem d!s"!'#!&a)J

Ci'lo de )ida dinBmi'o ((do mda (oda $ora)J

Refinamento durante a 'onstruo


(re3a(ora)*o)J

1odela=em mais realAsti'a (ser:K)J


Padres, PEAR e Frameworks PHP
Reviso: Orientao a Objetos

1el;or 'omuni'ao entre &ro=ramador e


analista de ne=C'io (ser:K)J

1anuteno mais f@'il (mde em m sH


#.ar)J

Inde&end(n'ia de &ro9eto (!&de'e&de&(e de


'#a(a3orma, $ardware e am+!e&(e de so3(ware)J

Intero&era?ilidade (as "#asses "o&,ersam


e&(re s!)J
Padres, PEAR e Frameworks PHP
Reviso: Orientao a Objetos

Com&utao 'liente-ser)idorD

Com&utao ma'iamente distri?uAdaD

et'E
Padres, PEAR e Frameworks PHP
Por que &adres de &ro9eto so
orientados a o?9eto*
Pala)ra-';a)e: reuso
Reso &*o "are"e &e"essar!ame&(e de or!e&(a)*o
a o+?e(os, mas e#a o3ere"e m "o&?&(o de
3errame&(as 2e 3a"!#!(a essa 'r:(!"a8
Padres, PEAR e Frameworks PHP
+uando eu uso os &adres* +uais eu
uso* Como eu uso*
O 'r!me!ro 'asso - !de&(!3!"ar o 'ro+#ema8
De'o!s de,eDse 'es2!sar em m "a(:#o.o de
'adres se e4!s(e ('ro,a,e#me&(e e4!s(e) m 2e
'ossa ser a'#!"ado 'ara o 'ro+#ema em 2es(*o8
-)entualmente: ser@ ne'ess@rio usar )@rios
&adres 9untos &ara resol)er um &ro?lemaE
Padres, PEAR e Frameworks PHP
+uando eu uso os &adres* +uais eu
uso* Como eu uso*
O ma(em:(!"o S(e'$e& Uo#3ram, "r!ador do
so3(ware Mathematica, a3!rma 2e 'ro+#emas
"om'#e4os 'odem ser reso#,!dos 'e#a "om+!&a)*o
de so#)es s!m'#es8
,m &ro?lema sim&les e>i=e uma soluo
sim&lesE
,m &ro?lema 'om&le>o e>i=e a 'om?inao
de )@rias solues sim&lesE
Padres, PEAR e Frameworks PHP
/em sei usar um &adro: quanto mais
)@rios2
Ses 'ro+#emas a"a+aramQ
C;e=ou o no)o e re)olu'ion@rio modo de
usar &adres de &ro9eto &ara solu'ionar
&ro?lemas de software:
FRA1-F!RG
Dispon4vel em vrias linguagens de programa*o
com mais de uma op*o para cada5
Padres, PEAR e Frameworks PHP
Como a&renderemos &adres
A e4'er!%&"!a mos(ro a(ra,-s das d-"adas, 2e
o me#$or modo de a're&der a 'ro.ramar -
'ro.rama&do8
Com ?ase nesse 'aso de su'esso: iremos
a&render &adres de &ro9eto )endo sua
im&lementao dentro de um %ra$e&or'E
Padres, PEAR e Frameworks PHP
1as o que um framework*
6 um con7unto de classes cooperantes +ue
constroem um pro7eto reutili,vel para uma
espec4fica classe de soft8are
.m frame8or9 t4pico cont:m vrios padres de
pro7eto mas a rec4proca nunca : verdadeira.
;rame8or9s podem ser materiali,ados em c<digo
mas apenas e"emplos de padres de pro7eto
podem ser materiali,ados em c<digo.
=amma 1>??@2
Padres, PEAR e Frameworks PHP
- &ra que ser)e um framework*
Para d!m!&!r "s(os e (em'o de (re!&ame&(o 'ara &o,os
!&.ressa&(es &as e2!'es de dese&,o#,!me&(o, .ra)as aos
"om'o&e&(es re(!#!1:,e!sJ
Para a (oma(!1ar de (are3as re'e(!(!,as, d!m!&!&do o es3or)o do
dese&,o#,!me&(oJ
Para s e'arar as "amadas de a'rese&(a)*o e #H.!"a, 'erm!(!&do o
dese&,o#,!me&(o s!m#(I&eo 'or e2!'es d!s(!&(asJ
Para 3 a"!#!(ar a do"me&(a)*o dos s!s(emas dese&,o#,!dos, o 2e
"o&(r!+! 'ara a 3a"!#!dade de ma&(e&)*oJ
Para 3a"!#!(ar a .era)*o de (es(es a(oma(!1ados, o 2e "o&(r!+!
'ara a .ara&(!a de 2a#!dade do 'rod(o8
Padres, PEAR e Frameworks PHP
+ual framework utili<aremos*
Gamma (ASS>) e&&"!a a#.mas "ara"(erCs(!"as
!m'or(a&(es 'ara m frame8or9L
In)erso de ControleL O frame8or9 "$ama se
"Hd!.o, ao !&,-s de se "Hd!.o "$amar s+D
ro(!&as8 Isso o+r!.a o 'ro.ramador a es"re,er
o'era)es "om &omes e "o&,e&)es de "$amada
?: es'e"!3!"adas, 'or-m !sso red1 as de"!ses de
'ro?e(o 0 ?: e4!s(e m &adro de &omesQ
Padres, PEAR e Frameworks PHP
+ual framework utili<aremos*
Fle>A)el e e>tensA)elL A ar2!(e(ra de,e
3&"!o&ar 'ara (odas as a'#!"a)es do domC&!o8
A'o&lamento fra'oL Pe2e&as mda&)as &o
frame8or9 &*o 'odem .erar .ra&des
re'er"sses &a a'#!"a)*o8
Padres, PEAR e Frameworks PHP
+ual framework utili<aremos*
A#-m d!sso, (emos a#.&s 'ro+#emas &o m&do
P8PL

S!s(emas 2e sam "#asses mas &*o s*o


or!e&(ados a o+?e(os (3r(os do PHP B e ;)8

C#asses "om &omes e "o&,e&)es de "$amada


"om'#e(ame&(e d!3ere&(es8

Fm e4-r"!(o de 'ro.ramadores sem 3orma)*o


ade2ada8
Padres, PEAR e Frameworks PHP
No seria maravilhoso se
todos os programadores
/,/ do mundo
tra0alhassem de uma
forma padronizada- de
modo que pudessem
compartilhar seus
componentes e reutilizar
milhares de linhas de
cdigo fonte?
Deve ser um sonho...
OReilly Media All rights reserved.
Padres, PEAR e Frameworks PHP
/o um son;o2
V o P8P Colla?oration Pro9e'tL
I&!"!a(!,a open source a(ra,-s da 2a# a "om&!dade PHP e
ses 'ar"e!ros 're(e&dem "r!ar m 'adr*o de am+!e&(e de
d!s(r!+!)*o e dese&,o#,!me&(o de a'#!"a)es Ue+ em PHP8
Co&s!s(e em das 3re&(esL
Hend P8P FrameworkL "om o o+?e(!,o de 'adro&!1ar a
3orma "omo as a'#!"a)es PHP s*o "o&s(rCdas8
-n=a9amento 'om a -'li&se FoundationL a <e&d ?&(oDse
W 3&da)*o "omo Dese&,o#,edor Es(ra(-.!"o8 O o+?e(!,o -
#!derar m 'ro?e(o 3o"ado em PHP de&(ro do E"#!'se8
Padres, PEAR e Frameworks PHP
Hend Framework e -'li&se:
Como Ioia?ada 'om +uei9o
"end #echnologies All rights reserved. $clipse %o&ndation All rights reserved.
Padres, PEAR e Frameworks PHP
Pausa &ara instalao do am?ienteEEE
Padres, PEAR e Frameworks PHP
Pro9eto 1Animo do Hend Framework
Vamos 3a1er m =A#X M&do@ "om <e&d
Framework e a're&der "om !sso 2a(ro 'adres
de 'ro?e(oL

16CD

.in=letonD

Front ControllerD

Pa=e ControllerE
Padres, PEAR e Frameworks PHP
16C J 1odel 6iew Controller
Padres, PEAR e Frameworks PHP
.in=leton
1onte2 3amma 456667
Padres, PEAR e Frameworks PHP
Front Controller
1onte2 1o8ler 456697
Padres, PEAR e Frameworks PHP
Pa=e Controller
1onte2 1o8ler 456697
Padres, PEAR e Frameworks PHP
Arquitetura Ieral Hend Framework
Padres, PEAR e Frameworks PHP
Arquitetura Ieral Hend Framework
Padres, PEAR e Frameworks PHP
Re%er(n!ias )ib*iogr+%i!as
Fowler: 18 Padres de Pro7eto de Aplica*es
'orporativas8 Por(o A#e.re8 Bookma&, 566Y8
Freeman: -E e Freeman: -E .se a 'a(e*a5 Padres de
Pro7etos8 R!o de 9a&e!ro8 A#(aBooks, 566>8
Iamma: -E et alliE Padres de Pro7etoB #olu*es
Ceutili,veis de #oft8are !rientado a !(7etos8 Por(o
A#e.re8 Bookma&, 56668
1artin: 4E e !dell: 4E 4E Anlise e Pro7eto !rientados a
!(7eto8 S*o Pa#o8 Makro& Books, ASS>8
$(('LZZ3ramework81e&d8"om

Você também pode gostar