SlideShare a Scribd company logo
1 of 30
Download to read offline
Závislosti,
 injekce
 a vůbec
  @DavidGrudl
                WebExpo 2012
Do přejmenování pár
souborů se pustíme ručně.
Ale co když jich budou
stovky? Uděláme si skript.
Automatizace

    Automatizací šetříme čas.
    Uděláme méně chyb.
    Nemusíme tolik přemýšlet.
    (A nevymyslíme nějakou blbost.)
Někdy činnost opakujeme
1000×, než nám dojde, že ji
máme automatizovat.
Nestahujte PHP knihovny
ručně, použijte Composer.
http://doc.nette.org/cs/composer
Jedním příkazem stáhnete
třeba Nette Framework.
A jedním příkazem ho
kdykoliv zaktualizujete.
Přes Composer můžete
instalovat i PHPUnit.
(Nebo NetteTester.)
http://github.com/dg/ftp-deployment




              Nahráváte soubory na FTP
              ručně? Zautomatizujte to!
              (Nebo zkuste chytřejší deployment.)
Design Patterns
Návrhové vzory

      Automatizovat lze i duševní
      práci. Třeba návrh programu.
      Pomáhají s tím vzory.
Dependency
Injection
Zjevné před{v{ní
závislostí.
           Jedním z nich je DI.
Srozumitelnost

    V nesrozumitelném a
    nepředvídatelném kódu se
    ztratíte, i když jste autorem.
WTF!?!
 A vůbec nejhorší jsou skryté
 vazby, kdy si říkáte „k***a
 do*****e co to dělá?“
json_encode()


  Třeba funkce json_encode() se
  chová různě v závislosti na
  direktivě display_errors. WTF?
Napadlo by vás, že volání
$a->hello() může mít nějaký
vliv na objekt $b?
Leda by byly zřejmým
způsobem propojené.
Pryč se skrytými
vazbami!
     Mějme vztahy mezi objekty
     pod kontrolou. Jinak nás kód
     přivede na pokraj šílenství.
Skrytá vazba, na kterou přijdete
leda při studiu kódu. Pryč s ní!
Závislosti si předáme zjevně a
srozumitelně v konstruktoru…
…nebo jakoukoliv
jinou metodou.
Je to víc psaní!


    Píšete to jednou, milionkrát
    čtete. (Navíc je to rutinní psaní, u
    kterého nemusíte přemýšlet.)
A co si předávat jen jeden
objekt, který bude znát
všechny závislosti?
(Service Locator)
Zjevné
před{v{ní z{vislostí

    Pak to nebude zjevné. Víme, že
    závislosti má, ale nevíme jaké.
A co když bude třída
pracovat s více objekty…
…a závislosti se nám
začnou hromadit?
Nepředávejte si závislosti
jiných objektů, ale jen ty své.
Nebo si předejte továrničku,
která už objekt vyrobí.
Zapomeňte
na static.
@davidgrudl
     @geekovo
http://phpfashion.com/co-je-dependency-injection

More Related Content

Similar to Závislosti, injekce a vůbec

node.js: zápisky z fronty (Battle guide to node.js)
node.js: zápisky z fronty (Battle guide to node.js)node.js: zápisky z fronty (Battle guide to node.js)
node.js: zápisky z fronty (Battle guide to node.js)almadcz
 
Czjug Zari 2008
Czjug Zari 2008Czjug Zari 2008
Czjug Zari 2008RENESTEIN
 
Noční můry webového vývojáře
Noční můry webového vývojářeNoční můry webového vývojáře
Noční můry webového vývojářeMichal Špaček
 
Dark Side of iOS [mDevCamp 2013]
Dark Side of iOS [mDevCamp 2013]Dark Side of iOS [mDevCamp 2013]
Dark Side of iOS [mDevCamp 2013]Kuba Břečka
 
Borek Bernard: TypeScript - příčetný jazyk pro web
Borek Bernard: TypeScript - příčetný jazyk pro webBorek Bernard: TypeScript - příčetný jazyk pro web
Borek Bernard: TypeScript - příčetný jazyk pro webDevelcz
 
Nette: jak rozbít atom?
Nette: jak rozbít atom?Nette: jak rozbít atom?
Nette: jak rozbít atom?David Grudl
 
KST/ICSHP - 1. přednáška
KST/ICSHP - 1. přednáškaKST/ICSHP - 1. přednáška
KST/ICSHP - 1. přednáškaJan Hřídel
 
Bezpečnostní útoky na webové aplikace
Bezpečnostní útoky na webové aplikaceBezpečnostní útoky na webové aplikace
Bezpečnostní útoky na webové aplikaceMichal Špaček
 
Pavel Cvetler: Jeden kód, co vládne všem? Žádný problém pro Android i iOS
Pavel Cvetler: Jeden kód, co vládne všem? Žádný problém pro Android i iOSPavel Cvetler: Jeden kód, co vládne všem? Žádný problém pro Android i iOS
Pavel Cvetler: Jeden kód, co vládne všem? Žádný problém pro Android i iOSmdevtalk
 
Bezpečnostní útoky na webové aplikace, Čtvrtkon 5
Bezpečnostní útoky na webové aplikace, Čtvrtkon 5Bezpečnostní útoky na webové aplikace, Čtvrtkon 5
Bezpečnostní útoky na webové aplikace, Čtvrtkon 5Michal Špaček
 
PoSobota 96 ČB 28.4.2018
PoSobota 96 ČB 28.4.2018PoSobota 96 ČB 28.4.2018
PoSobota 96 ČB 28.4.2018Brilo Team
 
Deployment PHP aplikací | WebExpo 2011
Deployment PHP aplikací | WebExpo 2011Deployment PHP aplikací | WebExpo 2011
Deployment PHP aplikací | WebExpo 2011Jan Mittner
 
Dependency injection
Dependency injectionDependency injection
Dependency injectionJiří Matula
 
Vývojářské Nástroje a Techniky
Vývojářské Nástroje a TechnikyVývojářské Nástroje a Techniky
Vývojářské Nástroje a TechnikyMartin Maly
 
Cloud nás všechny semele - Internet Developer Forum - 2011-04 -05
Cloud nás všechny semele - Internet Developer Forum -  2011-04 -05Cloud nás všechny semele - Internet Developer Forum -  2011-04 -05
Cloud nás všechny semele - Internet Developer Forum - 2011-04 -05Daniel Dočekal
 
Dependency injection v .Net Frameworku
Dependency injection v .Net FrameworkuDependency injection v .Net Frameworku
Dependency injection v .Net FrameworkuRené Stein
 
Optimalizace Symfony na devu
 Optimalizace Symfony na devu Optimalizace Symfony na devu
Optimalizace Symfony na devuVašek Purchart
 
Vašek Purchart - Optimalizace Symfony na devu (2. sraz přátel Symfony v Praze)
Vašek Purchart - Optimalizace Symfony na devu (2. sraz přátel Symfony v Praze)Vašek Purchart - Optimalizace Symfony na devu (2. sraz přátel Symfony v Praze)
Vašek Purchart - Optimalizace Symfony na devu (2. sraz přátel Symfony v Praze)Péhápkaři
 
Strasti a slasti vývoje wp7 aplikací
Strasti a slasti vývoje wp7 aplikacíStrasti a slasti vývoje wp7 aplikací
Strasti a slasti vývoje wp7 aplikacíRené Stein
 

Similar to Závislosti, injekce a vůbec (20)

node.js: zápisky z fronty (Battle guide to node.js)
node.js: zápisky z fronty (Battle guide to node.js)node.js: zápisky z fronty (Battle guide to node.js)
node.js: zápisky z fronty (Battle guide to node.js)
 
Czjug Zari 2008
Czjug Zari 2008Czjug Zari 2008
Czjug Zari 2008
 
Noční můry webového vývojáře
Noční můry webového vývojářeNoční můry webového vývojáře
Noční můry webového vývojáře
 
Dark Side of iOS [mDevCamp 2013]
Dark Side of iOS [mDevCamp 2013]Dark Side of iOS [mDevCamp 2013]
Dark Side of iOS [mDevCamp 2013]
 
Borek Bernard: TypeScript - příčetný jazyk pro web
Borek Bernard: TypeScript - příčetný jazyk pro webBorek Bernard: TypeScript - příčetný jazyk pro web
Borek Bernard: TypeScript - příčetný jazyk pro web
 
Nette: jak rozbít atom?
Nette: jak rozbít atom?Nette: jak rozbít atom?
Nette: jak rozbít atom?
 
KST/ICSHP - 1. přednáška
KST/ICSHP - 1. přednáškaKST/ICSHP - 1. přednáška
KST/ICSHP - 1. přednáška
 
Bezpečnostní útoky na webové aplikace
Bezpečnostní útoky na webové aplikaceBezpečnostní útoky na webové aplikace
Bezpečnostní útoky na webové aplikace
 
Pavel Cvetler: Jeden kód, co vládne všem? Žádný problém pro Android i iOS
Pavel Cvetler: Jeden kód, co vládne všem? Žádný problém pro Android i iOSPavel Cvetler: Jeden kód, co vládne všem? Žádný problém pro Android i iOS
Pavel Cvetler: Jeden kód, co vládne všem? Žádný problém pro Android i iOS
 
Bezpečnostní útoky na webové aplikace, Čtvrtkon 5
Bezpečnostní útoky na webové aplikace, Čtvrtkon 5Bezpečnostní útoky na webové aplikace, Čtvrtkon 5
Bezpečnostní útoky na webové aplikace, Čtvrtkon 5
 
PoSobota 96 ČB 28.4.2018
PoSobota 96 ČB 28.4.2018PoSobota 96 ČB 28.4.2018
PoSobota 96 ČB 28.4.2018
 
Deployment PHP aplikací | WebExpo 2011
Deployment PHP aplikací | WebExpo 2011Deployment PHP aplikací | WebExpo 2011
Deployment PHP aplikací | WebExpo 2011
 
Dependency injection
Dependency injectionDependency injection
Dependency injection
 
Vývojářské Nástroje a Techniky
Vývojářské Nástroje a TechnikyVývojářské Nástroje a Techniky
Vývojářské Nástroje a Techniky
 
Cloud nás všechny semele - Internet Developer Forum - 2011-04 -05
Cloud nás všechny semele - Internet Developer Forum -  2011-04 -05Cloud nás všechny semele - Internet Developer Forum -  2011-04 -05
Cloud nás všechny semele - Internet Developer Forum - 2011-04 -05
 
Dependency injection v .Net Frameworku
Dependency injection v .Net FrameworkuDependency injection v .Net Frameworku
Dependency injection v .Net Frameworku
 
Optimalizace Symfony na devu
 Optimalizace Symfony na devu Optimalizace Symfony na devu
Optimalizace Symfony na devu
 
Vašek Purchart - Optimalizace Symfony na devu (2. sraz přátel Symfony v Praze)
Vašek Purchart - Optimalizace Symfony na devu (2. sraz přátel Symfony v Praze)Vašek Purchart - Optimalizace Symfony na devu (2. sraz přátel Symfony v Praze)
Vašek Purchart - Optimalizace Symfony na devu (2. sraz přátel Symfony v Praze)
 
Medvědí služba
Medvědí službaMedvědí služba
Medvědí služba
 
Strasti a slasti vývoje wp7 aplikací
Strasti a slasti vývoje wp7 aplikacíStrasti a slasti vývoje wp7 aplikací
Strasti a slasti vývoje wp7 aplikací
 

More from David Grudl

TRACY: AN ADDICTIVE TOOL TO EASE DEBUGGING
TRACY: AN ADDICTIVE TOOL TO EASE DEBUGGINGTRACY: AN ADDICTIVE TOOL TO EASE DEBUGGING
TRACY: AN ADDICTIVE TOOL TO EASE DEBUGGINGDavid Grudl
 
FTP deployment Devel 2015
FTP deployment Devel 2015FTP deployment Devel 2015
FTP deployment Devel 2015David Grudl
 
Shopcamp: Jak to nepokazit v cílové rovince?
Shopcamp: Jak to nepokazit v cílové rovince?Shopcamp: Jak to nepokazit v cílové rovince?
Shopcamp: Jak to nepokazit v cílové rovince?David Grudl
 
Poslední Sobota - Formuláře v Nette 2.1
Poslední Sobota - Formuláře v Nette 2.1Poslední Sobota - Formuláře v Nette 2.1
Poslední Sobota - Formuláře v Nette 2.1David Grudl
 
jQuery: full frontal
jQuery: full frontaljQuery: full frontal
jQuery: full frontalDavid Grudl
 
Soft(ware) skills (konference Devel.cz, 2013)
Soft(ware) skills (konference Devel.cz, 2013)Soft(ware) skills (konference Devel.cz, 2013)
Soft(ware) skills (konference Devel.cz, 2013)David Grudl
 
10.000 followerů na Twitteru snadno a šupem
10.000 followerů na Twitteru snadno a šupem10.000 followerů na Twitteru snadno a šupem
10.000 followerů na Twitteru snadno a šupemDavid Grudl
 
„Bude upřesněno“ na Barcamp Brno 2011
„Bude upřesněno“ na Barcamp Brno 2011„Bude upřesněno“ na Barcamp Brno 2011
„Bude upřesněno“ na Barcamp Brno 2011David Grudl
 
WebExpo 2011: Novinky z konference BUILD
WebExpo 2011: Novinky z konference BUILDWebExpo 2011: Novinky z konference BUILD
WebExpo 2011: Novinky z konference BUILDDavid Grudl
 
Technika vs. lidstvo 1:0
Technika vs. lidstvo 1:0Technika vs. lidstvo 1:0
Technika vs. lidstvo 1:0David Grudl
 
Nette Framework 2 at WebExpo 2010
Nette Framework 2 at WebExpo 2010Nette Framework 2 at WebExpo 2010
Nette Framework 2 at WebExpo 2010David Grudl
 

More from David Grudl (11)

TRACY: AN ADDICTIVE TOOL TO EASE DEBUGGING
TRACY: AN ADDICTIVE TOOL TO EASE DEBUGGINGTRACY: AN ADDICTIVE TOOL TO EASE DEBUGGING
TRACY: AN ADDICTIVE TOOL TO EASE DEBUGGING
 
FTP deployment Devel 2015
FTP deployment Devel 2015FTP deployment Devel 2015
FTP deployment Devel 2015
 
Shopcamp: Jak to nepokazit v cílové rovince?
Shopcamp: Jak to nepokazit v cílové rovince?Shopcamp: Jak to nepokazit v cílové rovince?
Shopcamp: Jak to nepokazit v cílové rovince?
 
Poslední Sobota - Formuláře v Nette 2.1
Poslední Sobota - Formuláře v Nette 2.1Poslední Sobota - Formuláře v Nette 2.1
Poslední Sobota - Formuláře v Nette 2.1
 
jQuery: full frontal
jQuery: full frontaljQuery: full frontal
jQuery: full frontal
 
Soft(ware) skills (konference Devel.cz, 2013)
Soft(ware) skills (konference Devel.cz, 2013)Soft(ware) skills (konference Devel.cz, 2013)
Soft(ware) skills (konference Devel.cz, 2013)
 
10.000 followerů na Twitteru snadno a šupem
10.000 followerů na Twitteru snadno a šupem10.000 followerů na Twitteru snadno a šupem
10.000 followerů na Twitteru snadno a šupem
 
„Bude upřesněno“ na Barcamp Brno 2011
„Bude upřesněno“ na Barcamp Brno 2011„Bude upřesněno“ na Barcamp Brno 2011
„Bude upřesněno“ na Barcamp Brno 2011
 
WebExpo 2011: Novinky z konference BUILD
WebExpo 2011: Novinky z konference BUILDWebExpo 2011: Novinky z konference BUILD
WebExpo 2011: Novinky z konference BUILD
 
Technika vs. lidstvo 1:0
Technika vs. lidstvo 1:0Technika vs. lidstvo 1:0
Technika vs. lidstvo 1:0
 
Nette Framework 2 at WebExpo 2010
Nette Framework 2 at WebExpo 2010Nette Framework 2 at WebExpo 2010
Nette Framework 2 at WebExpo 2010
 

Závislosti, injekce a vůbec