drupal a oop [drupalcamp sk 2013]
TRANSCRIPT
![Page 1: Drupal a OOP [DrupalCamp SK 2013]](https://reader030.vdocuments.site/reader030/viewer/2022033021/58ed19e51a28abf6268b45bd/html5/thumbnails/1.jpg)
Drupal a OOP +
![Page 3: Drupal a OOP [DrupalCamp SK 2013]](https://reader030.vdocuments.site/reader030/viewer/2022033021/58ed19e51a28abf6268b45bd/html5/thumbnails/3.jpg)
![Page 4: Drupal a OOP [DrupalCamp SK 2013]](https://reader030.vdocuments.site/reader030/viewer/2022033021/58ed19e51a28abf6268b45bd/html5/thumbnails/4.jpg)
Cieľová skupina
• vývojár• tím líder• projektový manažér
![Page 5: Drupal a OOP [DrupalCamp SK 2013]](https://reader030.vdocuments.site/reader030/viewer/2022033021/58ed19e51a28abf6268b45bd/html5/thumbnails/5.jpg)
?
![Page 6: Drupal a OOP [DrupalCamp SK 2013]](https://reader030.vdocuments.site/reader030/viewer/2022033021/58ed19e51a28abf6268b45bd/html5/thumbnails/6.jpg)
Čo chceme vyriešiť ?
![Page 7: Drupal a OOP [DrupalCamp SK 2013]](https://reader030.vdocuments.site/reader030/viewer/2022033021/58ed19e51a28abf6268b45bd/html5/thumbnails/7.jpg)
Čo chceme vyriešiť ?
• špagety kód• dlhé .module súbory• hooky, implementácia logiky, pomocné
funkcie• SQL• opakujúci sa kód
![Page 8: Drupal a OOP [DrupalCamp SK 2013]](https://reader030.vdocuments.site/reader030/viewer/2022033021/58ed19e51a28abf6268b45bd/html5/thumbnails/8.jpg)
Čo chceme vyriešiť ?
![Page 9: Drupal a OOP [DrupalCamp SK 2013]](https://reader030.vdocuments.site/reader030/viewer/2022033021/58ed19e51a28abf6268b45bd/html5/thumbnails/9.jpg)
Čo chceme vyriešiť ?
• schovaná funkcionalita• nemodulárne riešenia• vysoká chybovosť• change management je nočná mora
![Page 10: Drupal a OOP [DrupalCamp SK 2013]](https://reader030.vdocuments.site/reader030/viewer/2022033021/58ed19e51a28abf6268b45bd/html5/thumbnails/10.jpg)
Čo chceme vyriešiť - ciele
![Page 11: Drupal a OOP [DrupalCamp SK 2013]](https://reader030.vdocuments.site/reader030/viewer/2022033021/58ed19e51a28abf6268b45bd/html5/thumbnails/11.jpg)
Č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
![Page 12: Drupal a OOP [DrupalCamp SK 2013]](https://reader030.vdocuments.site/reader030/viewer/2022033021/58ed19e51a28abf6268b45bd/html5/thumbnails/12.jpg)
Prečo nám v tom OOP pomôže ?
• čo je vlastne OOP ?• koncepty OOP• architektonické koncepty
![Page 13: Drupal a OOP [DrupalCamp SK 2013]](https://reader030.vdocuments.site/reader030/viewer/2022033021/58ed19e51a28abf6268b45bd/html5/thumbnails/13.jpg)
Prečo nám v tom OOP pomôže ?
Dedičnosť
Zapuzdrovanie
![Page 14: Drupal a OOP [DrupalCamp SK 2013]](https://reader030.vdocuments.site/reader030/viewer/2022033021/58ed19e51a28abf6268b45bd/html5/thumbnails/14.jpg)
Prečo nám v tom OOP pomôže ?
Dedičnosť
Zapuzdrovanie
Polymorfizmus
![Page 15: Drupal a OOP [DrupalCamp SK 2013]](https://reader030.vdocuments.site/reader030/viewer/2022033021/58ed19e51a28abf6268b45bd/html5/thumbnails/15.jpg)
Prečo nám v tom OOP pomôže ?
Modularizácia
![Page 16: Drupal a OOP [DrupalCamp SK 2013]](https://reader030.vdocuments.site/reader030/viewer/2022033021/58ed19e51a28abf6268b45bd/html5/thumbnails/16.jpg)
Prečo nám v tom OOP pomôže ?
Modularizácia
Abstrakcia
![Page 17: Drupal a OOP [DrupalCamp SK 2013]](https://reader030.vdocuments.site/reader030/viewer/2022033021/58ed19e51a28abf6268b45bd/html5/thumbnails/17.jpg)
Prečo nám v tom OOP pomôže ?
Modularizácia
Abstrakcia
Zapuzdrovanie
![Page 18: Drupal a OOP [DrupalCamp SK 2013]](https://reader030.vdocuments.site/reader030/viewer/2022033021/58ed19e51a28abf6268b45bd/html5/thumbnails/18.jpg)
Prečo nám v tom OOP pomôže ?
Hierarchia
![Page 19: Drupal a OOP [DrupalCamp SK 2013]](https://reader030.vdocuments.site/reader030/viewer/2022033021/58ed19e51a28abf6268b45bd/html5/thumbnails/19.jpg)
Prečo nám v tom OOP pomôže ?
Hierarchia Kontinuita
![Page 20: Drupal a OOP [DrupalCamp SK 2013]](https://reader030.vdocuments.site/reader030/viewer/2022033021/58ed19e51a28abf6268b45bd/html5/thumbnails/20.jpg)
3835
![Page 21: Drupal a OOP [DrupalCamp SK 2013]](https://reader030.vdocuments.site/reader030/viewer/2022033021/58ed19e51a28abf6268b45bd/html5/thumbnails/21.jpg)
Prax
![Page 22: Drupal a OOP [DrupalCamp SK 2013]](https://reader030.vdocuments.site/reader030/viewer/2022033021/58ed19e51a28abf6268b45bd/html5/thumbnails/22.jpg)
Štruktúra adresára modulu
views/includes/
![Page 23: Drupal a OOP [DrupalCamp SK 2013]](https://reader030.vdocuments.site/reader030/viewer/2022033021/58ed19e51a28abf6268b45bd/html5/thumbnails/23.jpg)
Štruktúra adresára modulu
views/includes/
classes/varsclasses/controllersclasses/modelsclasses/daoclasses/log
![Page 24: Drupal a OOP [DrupalCamp SK 2013]](https://reader030.vdocuments.site/reader030/viewer/2022033021/58ed19e51a28abf6268b45bd/html5/thumbnails/24.jpg)
Variables
define('DCAMP_2013_MAX_REG', 130);
![Page 25: Drupal a OOP [DrupalCamp SK 2013]](https://reader030.vdocuments.site/reader030/viewer/2022033021/58ed19e51a28abf6268b45bd/html5/thumbnails/25.jpg)
Variables
class DrupalCampVariables { public static $registartionOpenVar = 'dcamp_reg_open'; $registrationOpen = TRUE; $registeredVar = 'dcamp_registered_count';
$maxRegisteredVar = 'dcamp_max_regs'; $maxRegistered = 120;}
![Page 26: Drupal a OOP [DrupalCamp SK 2013]](https://reader030.vdocuments.site/reader030/viewer/2022033021/58ed19e51a28abf6268b45bd/html5/thumbnails/26.jpg)
Variables
if (variable_get(DrupalCampVariables::$registartionOpenVar, FALSE) &&
variable_get(DrupalCampVariables::$registeredVar, 0) < DrupalCampVariables::$maxRegistered ) {
... DrupalCamp->register($this->$user); ... return;}
![Page 27: Drupal a OOP [DrupalCamp SK 2013]](https://reader030.vdocuments.site/reader030/viewer/2022033021/58ed19e51a28abf6268b45bd/html5/thumbnails/27.jpg)
Vrstvená architektúra
![Page 28: Drupal a OOP [DrupalCamp SK 2013]](https://reader030.vdocuments.site/reader030/viewer/2022033021/58ed19e51a28abf6268b45bd/html5/thumbnails/28.jpg)
Vrstvená architektúra
OSI
![Page 29: Drupal a OOP [DrupalCamp SK 2013]](https://reader030.vdocuments.site/reader030/viewer/2022033021/58ed19e51a28abf6268b45bd/html5/thumbnails/29.jpg)
Vrstvená architektúra
• interface modulu• biznis logika• DAO
![Page 30: Drupal a OOP [DrupalCamp SK 2013]](https://reader030.vdocuments.site/reader030/viewer/2022033021/58ed19e51a28abf6268b45bd/html5/thumbnails/30.jpg)
Netreba preháňať
![Page 31: Drupal a OOP [DrupalCamp SK 2013]](https://reader030.vdocuments.site/reader030/viewer/2022033021/58ed19e51a28abf6268b45bd/html5/thumbnails/31.jpg)
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
![Page 32: Drupal a OOP [DrupalCamp SK 2013]](https://reader030.vdocuments.site/reader030/viewer/2022033021/58ed19e51a28abf6268b45bd/html5/thumbnails/32.jpg)
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;}
![Page 33: Drupal a OOP [DrupalCamp SK 2013]](https://reader030.vdocuments.site/reader030/viewer/2022033021/58ed19e51a28abf6268b45bd/html5/thumbnails/33.jpg)
Príklad hook_menu
$link = l(‘Click me!’, ‘my-path’);
![Page 34: Drupal a OOP [DrupalCamp SK 2013]](https://reader030.vdocuments.site/reader030/viewer/2022033021/58ed19e51a28abf6268b45bd/html5/thumbnails/34.jpg)
Príklad hook_menu
class MyPathController extends PathController { public $path = ‘my-path’;
// some other code...}
![Page 35: Drupal a OOP [DrupalCamp SK 2013]](https://reader030.vdocuments.site/reader030/viewer/2022033021/58ed19e51a28abf6268b45bd/html5/thumbnails/35.jpg)
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, );
![Page 36: Drupal a OOP [DrupalCamp SK 2013]](https://reader030.vdocuments.site/reader030/viewer/2022033021/58ed19e51a28abf6268b45bd/html5/thumbnails/36.jpg)
Príklad hook_menu
/* @var $myPathController MyPathController */(object) $myPathController = new MyPathController();
$link = l(‘Click me!’, $myPathController->path);// Yay! This code is safe!
![Page 37: Drupal a OOP [DrupalCamp SK 2013]](https://reader030.vdocuments.site/reader030/viewer/2022033021/58ed19e51a28abf6268b45bd/html5/thumbnails/37.jpg)
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"; } }
![Page 38: Drupal a OOP [DrupalCamp SK 2013]](https://reader030.vdocuments.site/reader030/viewer/2022033021/58ed19e51a28abf6268b45bd/html5/thumbnails/38.jpg)
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, '!=');}
![Page 39: Drupal a OOP [DrupalCamp SK 2013]](https://reader030.vdocuments.site/reader030/viewer/2022033021/58ed19e51a28abf6268b45bd/html5/thumbnails/39.jpg)
Nevýhody a výhody
• viac riadkov kódu• performance
![Page 40: Drupal a OOP [DrupalCamp SK 2013]](https://reader030.vdocuments.site/reader030/viewer/2022033021/58ed19e51a28abf6268b45bd/html5/thumbnails/40.jpg)
Nevýhody a výhody
• viac riadkov kódu• performance
• OOP fíčury• refaktorovateľnosť• autocomplete• chybovosť• kontinuita• noví členovia tímu
![Page 41: Drupal a OOP [DrupalCamp SK 2013]](https://reader030.vdocuments.site/reader030/viewer/2022033021/58ed19e51a28abf6268b45bd/html5/thumbnails/41.jpg)
Kam to speje ?
• Drupal 8• Symfony 2
![Page 42: Drupal a OOP [DrupalCamp SK 2013]](https://reader030.vdocuments.site/reader030/viewer/2022033021/58ed19e51a28abf6268b45bd/html5/thumbnails/42.jpg)
Ďakujem za pozornosť