drupal a oop [drupalcamp sk 2013]

42
Drupal a OOP +

Upload: david-lukac

Post on 12-Apr-2017

274 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Drupal a OOP [DrupalCamp SK 2013]

Drupal a OOP +

Page 2: Drupal a OOP [DrupalCamp SK 2013]

Dávid LukáčCTO @ Mogdesign.eu

[email protected]/in/davidlukacwww.twitter.com/davidlukac

Page 3: Drupal a OOP [DrupalCamp SK 2013]
Page 4: Drupal a OOP [DrupalCamp SK 2013]

Cieľová skupina

• vývojár• tím líder• projektový manažér

Page 5: Drupal a OOP [DrupalCamp SK 2013]

?

Page 6: Drupal a OOP [DrupalCamp SK 2013]

Čo chceme vyriešiť ?

Page 7: Drupal a OOP [DrupalCamp SK 2013]

Č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]

Čo chceme vyriešiť ?

Page 9: Drupal a OOP [DrupalCamp SK 2013]

Č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]

Čo chceme vyriešiť - ciele

Page 11: Drupal a OOP [DrupalCamp SK 2013]

Č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]

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]

Prečo nám v tom OOP pomôže ?

Dedičnosť

Zapuzdrovanie

Page 14: Drupal a OOP [DrupalCamp SK 2013]

Prečo nám v tom OOP pomôže ?

Dedičnosť

Zapuzdrovanie

Polymorfizmus

Page 15: Drupal a OOP [DrupalCamp SK 2013]

Prečo nám v tom OOP pomôže ?

Modularizácia

Page 16: Drupal a OOP [DrupalCamp SK 2013]

Prečo nám v tom OOP pomôže ?

Modularizácia

Abstrakcia

Page 17: Drupal a OOP [DrupalCamp SK 2013]

Prečo nám v tom OOP pomôže ?

Modularizácia

Abstrakcia

Zapuzdrovanie

Page 18: Drupal a OOP [DrupalCamp SK 2013]

Prečo nám v tom OOP pomôže ?

Hierarchia

Page 19: Drupal a OOP [DrupalCamp SK 2013]

Prečo nám v tom OOP pomôže ?

Hierarchia Kontinuita

Page 20: Drupal a OOP [DrupalCamp SK 2013]

3835

Page 21: Drupal a OOP [DrupalCamp SK 2013]

Prax

Page 22: Drupal a OOP [DrupalCamp SK 2013]

Štruktúra adresára modulu

views/includes/

Page 23: Drupal a OOP [DrupalCamp SK 2013]

Štruktúra adresára modulu

views/includes/

classes/varsclasses/controllersclasses/modelsclasses/daoclasses/log

Page 24: Drupal a OOP [DrupalCamp SK 2013]

Variables

define('DCAMP_2013_MAX_REG', 130);

Page 25: Drupal a OOP [DrupalCamp SK 2013]

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]

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]

Vrstvená architektúra

Page 28: Drupal a OOP [DrupalCamp SK 2013]

Vrstvená architektúra

OSI

Page 29: Drupal a OOP [DrupalCamp SK 2013]

Vrstvená architektúra

• interface modulu• biznis logika• DAO

Page 30: Drupal a OOP [DrupalCamp SK 2013]

Netreba preháňať

Page 31: Drupal a OOP [DrupalCamp SK 2013]

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]

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]

Príklad hook_menu

$link = l(‘Click me!’, ‘my-path’);

Page 34: Drupal a OOP [DrupalCamp SK 2013]

Príklad hook_menu

class MyPathController extends PathController { public $path = ‘my-path’;

// some other code...}

Page 35: Drupal a OOP [DrupalCamp SK 2013]

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]

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]

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]

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]

Nevýhody a výhody

• viac riadkov kódu• performance

Page 40: Drupal a OOP [DrupalCamp SK 2013]

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]

Kam to speje ?

• Drupal 8• Symfony 2

Page 42: Drupal a OOP [DrupalCamp SK 2013]

Ďakujem za pozornosť