SlideShare una empresa de Scribd logo
1 de 30
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

Más contenido relacionado

Similar a Závislosti, injekce a vůbec

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 web
Develcz
 
Nette: jak rozbít atom?
Nette: jak rozbít atom?Nette: jak rozbít atom?
Nette: jak rozbít atom?
David Grudl
 
Deployment PHP aplikací | WebExpo 2011
Deployment PHP aplikací | WebExpo 2011Deployment PHP aplikací | WebExpo 2011
Deployment PHP aplikací | WebExpo 2011
Jan Mittner
 
Dependency injection
Dependency injectionDependency injection
Dependency injection
Jiří Matula
 
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
Daniel Dočekal
 
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 a 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í
 

Más de 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.1
David Grudl
 
WebExpo 2011: Novinky z konference BUILD
WebExpo 2011: Novinky z konference BUILDWebExpo 2011: Novinky z konference BUILD
WebExpo 2011: Novinky z konference BUILD
David Grudl
 

Más de 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