Drupal a OOP [DrupalCamp SK 2013]

337 views

Published on

Session zo slovenského Drupal Campu 2013, kde som rozprával o princípoch a výhodách Objektovo Orientovaného Programovania, ktoré môžeme využiť aj v Drupale a bez toho, aby sme narúšali jeho interné princípy (Slovenská verzia).

-----

Session from Slovak DrupalCamp 2013, where I spoke about principals and advantages of Object Oriented Programming, which we can also us in Drupal development and without breaking it's internal principles (Slovak version).

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
337
On SlideShare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Drupal a OOP [DrupalCamp SK 2013]

  1. 1. Drupal a OOP +
  2. 2. Dávid LukáčCTO @ Mogdesign.eudavid@mogdesign.euwww.linkedin.com/in/davidlukacwww.twitter.com/davidlukac
  3. 3. Cieľová skupina• vývojár• tím líder• projektový manažér
  4. 4. Čo chceme vyriešiť ?
  5. 5. Čo chceme vyriešiť ?• špagety kód• dlhé .module súbory• hooky, implementácia logiky, pomocné funkcie• SQL• opakujúci sa kód
  6. 6. Čo chceme vyriešiť ?
  7. 7. Čo chceme vyriešiť ?• schovaná funkcionalita• nemodulárne riešenia• vysoká chybovosť• change management je nočná mora
  8. 8. Čo chceme vyriešiť - ciele
  9. 9. Čo chceme vyriešiť - ciele• prehľadný kód• jeden súbor - jedna trieda• architektúra• modulárne riešenia• nižšia chybovosť• noví členovia tímu
  10. 10. Prečo nám v tom OOP pomôže ?• čo je vlastne OOP ?• koncepty OOP• architektonické koncepty
  11. 11. Prečo nám v tom OOP pomôže ? Dedičnosť Zapuzdrovanie
  12. 12. Prečo nám v tom OOP pomôže ? Dedičnosť Polymorfizmus Zapuzdrovanie
  13. 13. Prečo nám v tom OOP pomôže ? Modularizácia
  14. 14. Prečo nám v tom OOP pomôže ? Modularizácia Abstrakcia
  15. 15. Prečo nám v tom OOP pomôže ? Modularizácia Zapuzdrovanie Abstrakcia
  16. 16. Prečo nám v tom OOP pomôže ? Hierarchia
  17. 17. Prečo nám v tom OOP pomôže ? Hierarchia Kontinuita
  18. 18. Prax
  19. 19. Štruktúra adresára moduluviews/includes/
  20. 20. Štruktúra adresára moduluviews/includes/classes/varsclasses/controllersclasses/modelsclasses/daoclasses/log
  21. 21. Variablesdefine(DCAMP_2013_MAX_REG, 130);
  22. 22. Variablesclass DrupalCampVariables { public static $registartionOpenVar = dcamp_reg_open; $registrationOpen = TRUE; $registeredVar = dcamp_registered_count; $maxRegisteredVar = dcamp_max_regs; $maxRegistered = 120;}
  23. 23. Variablesif (variable_get(DrupalCampVariables::$registartionOpenVar, FALSE) &&variable_get(DrupalCampVariables::$registeredVar, 0) < DrupalCampVariables::$maxRegistered ) { ... DrupalCamp->register($this->$user); ... return;}
  24. 24. Vrstvená architektúra
  25. 25. Vrstvená architektúra OSI
  26. 26. Vrstvená architektúra• interface modulu• biznis logika• DAO
  27. 27. Netreba preháňať
  28. 28. Base modulclasses/controllers/FormController.phpclasses/controllers/PathController.phpclasses/dao/DAO.phpclasses/models/EntityWrapper.phpclasses/models/Model.phpclasses/models/NodeWrapper.phpclasses/models/Singleton.phpclasses/models/UserWrapper.php.module
  29. 29. Príklad hook_menu/*** Implements hook_menu().*/function my_module_hook_menu() { $items = array();$items[my-path] = array( page callback => my_callback_page, access callback => user_access, access arguments => array(access content), type => MENU_CALLBACK,); return $items;}
  30. 30. Príklad hook_menu$link = l(‘Click me!’, ‘my-path’);
  31. 31. Príklad hook_menuclass MyPathController extends PathController { public $path = ‘my-path’;// some other code...}
  32. 32. Príklad hook_menu/*** Implements hook_menu().*/function my_module_hook_menu() { /* @var $myPathController MyPathController */ (object) $myPathController = new MyPathController();$items = array();$items[$myPathController->path] = array( page callback => my_callback_page, access callback => user_access, access arguments => array(access content), type => MENU_CALLBACK,);
  33. 33. Príklad hook_menu/* @var $myPathController MyPathController */(object) $myPathController = new MyPathController();$link = l(‘Click me!’, $myPathController->path);// Yay! This code is safe!
  34. 34. Príklad DAO / Builder$query = "SELECT organization, country, activities, FROM statistics_partner_counts"; if ($country != NULL) { $query .= " WHERE country = " . $country . ""; if ($without_event === FALSE) { $query .= " AND activities != 0"; } } else { if ($without_event === FALSE) { $query .= " WHERE activities != 0"; } }
  35. 35. Príklad DAO / Builder$query = db_select(statistics_partner_counts, partner_counts);$query->addField(partner_counts, organization);$query->addField(partner_counts, country);$query->addField(partner_counts, activities);if ($country != NULL) { $query->condition(partner_counts.country, $country);}if ($without_event === FALSE) { $query->condition(partner_counts.activities, 0, !=);}
  36. 36. Nevýhody a výhody• viac riadkov kódu• performance
  37. 37. Nevýhody a výhody• viac riadkov kódu • OOP fíčury• performance • refaktorovateľnosť • autocomplete • chybovosť • kontinuita • noví členovia tímu
  38. 38. Kam to speje ?• Drupal 8• Symfony 2
  39. 39. Ďakujemza pozornosť

×