際際滷

際際滷Share a Scribd company logo
Drupal 6 architekt炭r叩ja
Bemutatkoz叩s
 Demeter-Haludka Tam叩s
 Programtervez informatikus hallgat坦
 2 辿ve Drupal fejleszt a Pronovix-n叩l
 Sz叩mos contrib modul karbantart坦ja
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
Drupal 6 辿s a tervez辿si mint叩k
 Presentation-abstraction-control
 Observer
 Visitor
 Chain of responsibility
 Convention over configuration
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
Dcourse Drupal 6 architecture
Dcourse Drupal 6 architecture
Dcourse Drupal 6 architecture
Observer
 Esem辿nykezel minta
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
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
Convention over configuration
 Elnevez辿si konvenci坦k konfigur叩ci坦
helyett
 gyes elnevez辿sekkel a keretrendszer
kital叩lja, hogy miket kell haszn叩lnia
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
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()
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()
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()
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
P辿lda hookra
Mi t旦rt辿nik egy laplet旦lt辿skor?
 Bootstrap
 menu_execute_active_handler()
 theme('page')
Bootstrap
 Configuration
 Early page cache
 Database
 Access
 Session
 Late page cache
 Language
 Path
 Full
Bootstrap: configuration
 register_globals k叩ros hat叩sainak
sz叩m撤z辿se
 Idz鱈t ind鱈t叩sa
 Konfigur叩ci坦s 叩llom叩nyok bet旦lt辿se (pl.:
settings.php)
Bootstrap: early page cache
 Bet旦lti a cache-t
 Megn辿zi, hogy implement叩lva van-e a
page_cache_fastpath()
 Ha igen, akkor kil辿p
Bootstrap: database
 Kapcsol坦d叩s az adatb叩zishoz
 Lock api bet旦lt辿se
Bootstrap: access
 IP alap炭 tilt叩s
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
Bootstrap: language
 Nyelv meghat叩roz叩sa (be叩ll鱈t叩sok illetve
HTTP_ACCEPT_LANGUAGE vizsg叩lata)
Bootstrap: path
 Path kider鱈t辿se a $_GET['q'] alapj叩n
 Aliasok visszafejt辿se
 custom_url_rewrite_inbound() h鱈v叩sa, ha
l辿tezik
Bootstrap: full
 Alrendszerek 辿s API-k bet旦lt辿se
 Hibakezel be叩ll鱈t叩sa
 Magic quotes GPC vissza叩ll鱈t叩sa
 sszes modul bet旦lt辿se
 hook_init lefuttat叩sa

More Related Content

Dcourse Drupal 6 architecture

  • 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
  • 19. Mi t旦rt辿nik egy laplet旦lt辿skor? Bootstrap menu_execute_active_handler() theme('page')
  • 20. Bootstrap Configuration Early page cache Database Access Session Late page cache Language Path Full
  • 21. Bootstrap: configuration register_globals k叩ros hat叩sainak sz叩m撤z辿se Idz鱈t ind鱈t叩sa Konfigur叩ci坦s 叩llom叩nyok bet旦lt辿se (pl.: settings.php)
  • 22. Bootstrap: early page cache Bet旦lti a cache-t Megn辿zi, hogy implement叩lva van-e a page_cache_fastpath() Ha igen, akkor kil辿p
  • 23. Bootstrap: database Kapcsol坦d叩s az adatb叩zishoz Lock api bet旦lt辿se
  • 24. Bootstrap: access IP alap炭 tilt叩s
  • 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
  • 26. Bootstrap: language Nyelv meghat叩roz叩sa (be叩ll鱈t叩sok illetve HTTP_ACCEPT_LANGUAGE vizsg叩lata)
  • 27. Bootstrap: path Path kider鱈t辿se a $_GET['q'] alapj叩n Aliasok visszafejt辿se custom_url_rewrite_inbound() h鱈v叩sa, ha l辿tezik
  • 28. Bootstrap: full Alrendszerek 辿s API-k bet旦lt辿se Hibakezel be叩ll鱈t叩sa Magic quotes GPC vissza叩ll鱈t叩sa sszes modul bet旦lt辿se hook_init lefuttat叩sa