Slabiny Nette Frameworku
Poslední dobou čímdál více narážím na “mladost” Nette Frameworku:http://nettephp.com a tak jsem se rozhodl sepsat, co mi vadí a na jaké problémy narážím.
Žádný kousek software a nejen software není dokonalý a vždy musí člověk hledat kompromisy, nejinak je tomu i u PHP Frameworků. Prošel jsem si, jako snad každý PHP programátor, stádiem, kdy jsem měl jakýsi vlastní “framework”, který mi vyhovoval, tento “framework” jsem používal někdy do roku 2008. V té době již existovala spousta dalších, jako byl třeba zend . Zend vyhovoval mým požadavkům takřka perfektně, ale byl((a pořád je)) to “moloch” a já mám raději menší. CakePHP mi připadá strašně zmatený a pak je tu Symfony, u kterého mi nevyhovuje, že spousta věcí se řeší pomocí yml místo PHP. Tak jsem zvolil Nette Framework, který mi vyhovoval nejvíce. Nette má totiž nespornou výhodu - namespace verzi.
Nette používám v podstatě od prvního vypuštění zdrojáků, kdy toho spoustu neumělo. Ale to nebyl problém, protože spousta věcí, která mi scházela, se dala jednoduše doplnit z mého “framewoku” a navíc Nette postupovalo mílovými kroky vpřed a brzy jsem své knihovny zahodil úplně. S postupem času ale zjišťuji, že to není tak růžové, jak se na první pohled zdálo. Problém, který není ani tak problémem, ale vyvolává ve mně rozporuplné pocity je, že ač má nette silnou, hodně silnou komunitu, tak vývoj jako takový spočívá na bedrech jednoho jediného člověka. Nevadí mi ani tak to, že je to “one man show”, jako spíše razantní útlum vývoje a komunikace ze strany tvůrce. Nevím, čím to je a ani nechci působit jako že si stěžuju na něco, co mám zdarma. David má na práci jistě spoustu jiných věcí, než věnovat 100% komunitě a vývoji. Třeba něco kutí a bude to bomba, ale podívejte se sami na aktivitu v posledním měsíci a půl.
Zavináčová magie
Snippety jsou super věc, která hodně usnadní práci, ne však tolik, jak se může na první pohled zdát. Je tu totiž zavináčová magie - problém je v tom, že musíte přijít na to, kam zavináče dát a kam ne. Máme tu sice super kuchařku od Pandy, ale i tak se ne vždy podaří na první či druhý pokus. Jsou tu sice nové snippety které fungují lépe, ale bohužel také nejsou zcela bez chyb.
Validace příliš svázané s formuláři
Práce s formuláři je v Nette vyloženě radostí, která usnadní spousty práce a času. Spoustu času ušetří hlavně validátory. Je tu ale problém, protože ač Nette o sobě tvrdí, že je DRY((Don’t repeat yourself)), tak validátory, které se používají u formulářů, jsou s nimi doopravdy hodně svázané. Problémem tedy je - pokud chcete validovat v modelu - musíte si napsat validátory vlastní.
Absence databázové vrstvy
U modelů ještě zůstaneme, protože má jednu dobrou vlastnost - není svázané s žádnou datovou/databázovou vrstvou. Což z mého pohledu přináší daleko více problémů, než užitku. Protože díky tomu v podstatě není definován žádný standartní formát pro modelovou část aplikace. Neexituje žádný interface pro modelové objeky ani nic podobného. Dalším problémem je absence malého, ale kvalitního ORM. Každý dnes hojně používaný framework ho má, Nette nikoli. Dibi se s Nette dá suprově propojit a spolupráce těchto knihoven je takřka geniální, ale není to ORM. Což je o to zarážející, pokud si uvědomíte, že Dibi používá minimálně 80% projektů postavených na Nette (to číslo jsem si vycucal z prstu, ale troufám si tvrdit, že daleko od pravdy nebude). Ano je tu super Doctrine, ale u toho mám stejný problém, jako u Zendu a navíc jako programátorový opensource projektu mi nevyhovuje jeho licence.
Dokumetace
Dnes už to možná spoustě lidí připadá jako obehraná písnička, která už se říká automaticky. Skutečnost je taková, že dokumentace je v daleko lepším stavu, než bývala, ale pořád to není ono. Já s tím až takový problém nemám, protože si vystačím s API. Ale pro nováčky to problém být může.
Tak snad jsem to sepsal smyslupně a teď mě začněte kamenovat…