2. Bemutatkoz叩s
Demeter-Haludka Tam叩s
Programtervez informatikus hallgat坦
2 辿ve Drupal fejleszt a Pronovix-n叩l
Sz叩mos contrib modul karbantart坦ja
3. Tervez辿si mint叩k
R辿szei a programoz坦i folkl坦rnak
ltal叩nos megold叩sok 叩ltal叩nos
probl辿m叩kra
K旦z旦s sz坦t叩r a programoz坦k k旦z旦tt
4. Drupal 6 辿s a tervez辿si mint叩k
Presentation-abstraction-control
Observer
Visitor
Chain of responsibility
Convention over configuration
5. Presentation abstraction
control
Ismertebb v叩ltozat: hierarchical MVC
(modell-view-controller)
K端l旦nbs辿g: a HMVC kev辿sb辿 szigor炭
abban, hogy a view-k 辿s modellek
kommunik叩lhat egym叩ssal, a kontroller
kihagy叩s叩val
10. Visitor
Az algoritmus k端lonv叩laszt叩sa az
adatstrukt炭r叩t坦l
Elny: 炭j m撤veleteket lehet k旦nnyed辿n
defini叩lni az adatstrukt炭r叩n
ltal叩ban arra haszn叩lj叩k, hogy virtu叩lis
f端ggv辿nyeket adjanak oszt叩lyok egy
csoportj叩hoz azok m坦dos鱈t叩sa n辿lk端l
Drupalban az Observeren kereszt端l ker端lt
implement叩l叩sra
11. Chain of responsibility
Egy parancs 辿s sok v辿grehajt坦 egys辿g
sorban
Mindegyik v辿grehajt坦 egys辿g tudja, hogy
az adott parancsot v辿gre tudja-e hajtani,
辿s ha csak r辿szben, akkor mit kell 叩tadni a
t旦bbi v辿grehajt坦 egys辿gnek
12. Convention over configuration
Elnevez辿si konvenci坦k konfigur叩ci坦
helyett
gyes elnevez辿sekkel a keretrendszer
kital叩lja, hogy miket kell haszn叩lnia
13. Tervez辿si mint叩k Drupalban
A rendszer eg辿sze: Presentation
abstraction control
Hook rendszer: observer 辿s visitor
Men端 rendszer: chain of responsibility
Convention over configuration: rengeteg
helyen
14. A hook rendszer
Alap旦tlet: convention over configuration
A hookokra mindig hook_hookneve()
form叩tumban hivatkozunk, ahol
implement叩l叩skor a hook sz坦t kicser辿lj端k
a modul nev辿vel, pl.: hook_form_alter()
taxonomy_form_alter()
15. Hookok csoportos鱈t叩sa
Alter hookok: visitor minta az observeren
kereszt端l megval坦s鱈tva
A hook neve _alter-rel v辿gzdik
Valamilyen adatstrukt炭ra referenciak辿nt
van 叩tadva, 辿s ezt lehet m坦dos鱈tani
H鱈v叩sa: drupal_alter()
Pl.: hook_form_alter()
16. Hookok csoportos鱈t叩sa
Event hookok: az 旦sszes t旦bbi
Valamilyen esem辿nyre lehet reag叩lni, 辿s
tov叩bbi m撤veleteket elv辿gezni
H鱈v叩sa: module_invoke_all()
P辿lda: hook_nodeapi()
17. Hookok m撤k旦d辿se
Megh鱈v叩s: n辿v, majd a param辿terek list叩ja
V辿gigiter叩l az enged辿lyezett modulok
list叩j叩n (amik a system t叩bl叩ban vannak
t叩rolva, ahol van egy weight mez, ami
alapj叩n t旦rt辿nik a rendez辿s ezt csak
speci叩lis modulok haszn叩lj叩k ki)
Ha l辿tezik a modulneve_hookneve
f端ggv辿ny, akkor a megadott
param辿terekkel megh鱈v叩sra ker端l
25. Bootstrap: late page cache
V叩ltoz坦k inicializ叩l叩sa
Page cache ellenrz辿se
Ha nem l辿tezik vagy l辿tezik 辿s az
aggressz鱈v cache-el辿s nincs
enged辿lyezve, akkor a modulok
bet旦ltdnek 辿s a hook_boot lefut
Ha l辿tezik a page cache, akkor ki鱈r坦dik a
kimenetre, 辿s ha nincs aggressz鱈vre 叩ll鱈tva
a cache, akkor megh鱈v坦dik a hook_exit,
majd kil辿p