SlideShare a Scribd company logo

Dcourse Drupal 6 architecture

1 of 28
Download to read offline
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

Recommended

Grid Underground projekt
Grid Underground projektGrid Underground projekt
Grid Underground projektFerenc Szalai
 
A ClusterGrid rendszer - avagy hogyan üzemeltessünk, több mint 1000 csomópont...
A ClusterGrid rendszer - avagy hogyan üzemeltessünk, több mint 1000 csomópont...A ClusterGrid rendszer - avagy hogyan üzemeltessünk, több mint 1000 csomópont...
A ClusterGrid rendszer - avagy hogyan üzemeltessünk, több mint 1000 csomópont...Ferenc Szalai
 
Docu – fòrum 8 agost 2011
Docu – fòrum 8 agost 2011Docu – fòrum 8 agost 2011
Docu – fòrum 8 agost 2011adeodriozola
 

More Related Content

Similar to Dcourse Drupal 6 architecture

Nagyszabású virtuális gyógyszerkísérletek az új generációs web szolgáltatás a...
Nagyszabású virtuális gyógyszerkísérletek az új generációs web szolgáltatás a...Nagyszabású virtuális gyógyszerkísérletek az új generációs web szolgáltatás a...
Nagyszabású virtuális gyógyszerkísérletek az új generációs web szolgáltatás a...Ferenc Szalai
 
Webalkalmazások teljesítményoptimalizálása
Webalkalmazások teljesítményoptimalizálásaWebalkalmazások teljesítményoptimalizálása
Webalkalmazások teljesítményoptimalizálásaFerenc Kovács
 
A PHP 5.4 újdonságai
A PHP 5.4 újdonságaiA PHP 5.4 újdonságai
A PHP 5.4 újdonságaiFerenc Kovács
 
Grid és adattárolás
Grid és adattárolásGrid és adattárolás
Grid és adattárolásFerenc Szalai
 
A PHP 5.5 újdonságai.
A PHP 5.5 újdonságai.A PHP 5.5 újdonságai.
A PHP 5.5 újdonságai.Ferenc Kovács
 
Closures In Java Script
Closures In Java ScriptClosures In Java Script
Closures In Java Scriptustak
 
Closures In JavaScript
Closures In JavaScriptClosures In JavaScript
Closures In JavaScriptustak
 
Devops meetup - Automatizált tesztek
Devops meetup - Automatizált tesztekDevops meetup - Automatizált tesztek
Devops meetup - Automatizált tesztekZsolt Takács
 
PHP alkalmazások minőségbiztosítása
PHP alkalmazások minőségbiztosításaPHP alkalmazások minőségbiztosítása
PHP alkalmazások minőségbiztosításaFerenc Kovács
 
Amit mindig is tudni akartál az LDAP-ról, de sosem merted megkérdezni
Amit mindig is tudni akartál az LDAP-ról, de sosem merted megkérdezniAmit mindig is tudni akartál az LDAP-ról, de sosem merted megkérdezni
Amit mindig is tudni akartál az LDAP-ról, de sosem merted megkérdezniFerenc Szalai
 
Mágikus Magento - Bevezetés a Magento világába
Mágikus Magento - Bevezetés a Magento világábaMágikus Magento - Bevezetés a Magento világába
Mágikus Magento - Bevezetés a Magento világábaJános Ács
 
20111130 oa gtest
20111130 oa gtest20111130 oa gtest
20111130 oa gtestczras
 
Szerver oldali fejlesztés korszerű módszerekkel C# nyelven
Szerver oldali fejlesztés korszerű módszerekkel C# nyelvenSzerver oldali fejlesztés korszerű módszerekkel C# nyelven
Szerver oldali fejlesztés korszerű módszerekkel C# nyelvenKrisztián Gyula Tóth
 

Similar to Dcourse Drupal 6 architecture (15)

Nagyszabású virtuális gyógyszerkísérletek az új generációs web szolgáltatás a...
Nagyszabású virtuális gyógyszerkísérletek az új generációs web szolgáltatás a...Nagyszabású virtuális gyógyszerkísérletek az új generációs web szolgáltatás a...
Nagyszabású virtuális gyógyszerkísérletek az új generációs web szolgáltatás a...
 
Webalkalmazások teljesítményoptimalizálása
Webalkalmazások teljesítményoptimalizálásaWebalkalmazások teljesítményoptimalizálása
Webalkalmazások teljesítményoptimalizálása
 
A PHP 5.4 újdonságai
A PHP 5.4 újdonságaiA PHP 5.4 újdonságai
A PHP 5.4 újdonságai
 
Berkes andrás pxml architektura 2013-01-16
Berkes andrás pxml architektura 2013-01-16Berkes andrás pxml architektura 2013-01-16
Berkes andrás pxml architektura 2013-01-16
 
Grid és adattárolás
Grid és adattárolásGrid és adattárolás
Grid és adattárolás
 
A PHP 5.5 újdonságai.
A PHP 5.5 újdonságai.A PHP 5.5 újdonságai.
A PHP 5.5 újdonságai.
 
Closures In Java Script
Closures In Java ScriptClosures In Java Script
Closures In Java Script
 
Closures In JavaScript
Closures In JavaScriptClosures In JavaScript
Closures In JavaScript
 
Devops meetup - Automatizált tesztek
Devops meetup - Automatizált tesztekDevops meetup - Automatizált tesztek
Devops meetup - Automatizált tesztek
 
PHP alkalmazások minőségbiztosítása
PHP alkalmazások minőségbiztosításaPHP alkalmazások minőségbiztosítása
PHP alkalmazások minőségbiztosítása
 
Grid5000 ismertető
Grid5000 ismertetőGrid5000 ismertető
Grid5000 ismertető
 
Amit mindig is tudni akartál az LDAP-ról, de sosem merted megkérdezni
Amit mindig is tudni akartál az LDAP-ról, de sosem merted megkérdezniAmit mindig is tudni akartál az LDAP-ról, de sosem merted megkérdezni
Amit mindig is tudni akartál az LDAP-ról, de sosem merted megkérdezni
 
Mágikus Magento - Bevezetés a Magento világába
Mágikus Magento - Bevezetés a Magento világábaMágikus Magento - Bevezetés a Magento világába
Mágikus Magento - Bevezetés a Magento világába
 
20111130 oa gtest
20111130 oa gtest20111130 oa gtest
20111130 oa gtest
 
Szerver oldali fejlesztés korszerű módszerekkel C# nyelven
Szerver oldali fejlesztés korszerű módszerekkel C# nyelvenSzerver oldali fejlesztés korszerű módszerekkel C# nyelven
Szerver oldali fejlesztés korszerű módszerekkel C# nyelven
 

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 ● Előny: ú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égződik ● 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 ● Időzí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 ellenőrzése ● Ha nem létezik vagy létezik és az aggresszív cache-elés nincs engedélyezve, akkor a modulok betöltődnek é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