Rails komunita si léta namlouvá, že Ruby nepotřebuje Dependency Injection,
protože je prostě tak skvělý jazyk. Stačil k tomu jeden mylně
interpretovaný článek a pořádná dávka ega. Statické peklo zatím kvete a
mýtus se drží jako ten špenát se železem.
Typehint callable v PHP 5.4 zní skvěle, dokud ho
nevyzkoušíte. Místo ověření typu se PHP rozhodne validovat existenci
třídy, zabít lazyloading a servírovat chybové hlášky, ze kterých
pochopíte maximálně tak nic. Rasmus je spokojený, já rozhodně ne.
PHP třídy jsou vytesané do kamene, žádné přidávání metod za běhu jako
v Pythonu nebo JavaScriptu. Ale stačí dvě magické metody, __call() a
__get(), a najednou máte plnohodnotný monkey patching. Statický jazyk
s dynamickým srdcem, jen to chce vědět jak.
Myslíte si, že $ v regulárním výrazu znamená konec
řetězce? Špatně. Znamená konec řetězce nebo ukončující
odřádkování, což tiše propustí i řetězec s \n na konci.
Řešení existuje, ale nejdřív si přečtěte, proč vás dokumentace PHP
klamala.
Property injection svádí svou stručností, jenže PHP neumí once-write-only
veřejné proměnné s typovou kontrolou. Tak jsem to emuloval přes
__set/__get a unset trik. Výsledek? Funguje. Otázka zní: je to čistá cesta,
nebo jen hezky zabalená prasárna?
Pět způsobů, jak předávat závislosti presenterům, jeden skoro nasazený
průšvih a šalamounský obrat na poslední chvíli. Dědičnost versus DI je
boj, kde konstruktor prohrává. Zvítězily inject metody a já u toho málem
školil Zend.
Konstruktor, setter, nebo public property? Rozebírám, proč žádný způsob
předávání závislostí není tak bezpečný, jak se tváří. Konstruktor
vypadá jako jasný vítěz, dokud nepřijde dědičnost a nerozhází
vám karty.
Syntaxe, chybové hlášky a hlavně mixiny. Tři preprocesory, tři filozofie.
SASS je ukecaný, LESS se při chybě zmůže na „Syntax Error on line XY“ a
Stylus vám dovolí vynechat skoro všechno. A mixiny? Ty mění způsob,
jakým píšete HTML, což je důležitější, než se zdá.
Po letech bez kódování jsem dal šanci CSS preprocesorům. Instalace,
workflow, první dojmy. Je vlastně smutné, že musely vzniknout, protože to
hlavně ukazuje, jak moc se zanedbal vývoj samotného CSS. První díl
praktického srovnání.
Pošlete v IE9 stejnou cookie dvakrát s různou expirací a prohlížeč ji
místo aktualizace tiše smaže. Klasický Microsoft moment. Reprodukce je
triviální, workaround v PHP taky, a obojí najdete uvnitř.