Nette vs Symfony rubrika: Programování: PHP
Ahoj,
vím že je to trochu citlivé téma, ale vážně už nevím, co si vybrat :)
V zaměstnání mimojiné používáme Nette. I přesto, že jsem v něm prakticky začátečník, tak si myslím, že je to skvělý framework a dělám v něm rád.
Do budoucna bych se chtěl trochu osamostatnit, a postavit si vlastní CMS/produkt, vlastní řešení, pro vlastní vývoj a vlastní biznys. Předpokládám spolupráci několika dalších programátorů (CZ/SK). A dostal jsem se k otázce, na čem to všechno stavět. Ze všech možných Zendů, Laravelů, CakePHP a dalších frameworků mám 2 favority, kteří spolu dle mého bádání v historii soupeří v otázkách typu "jaký framework". Všechny argumenty co jsem si v rychlosti vygooglil ale už nejsou úplně aktuální, proto otvírám toto téma.
Čeho se především bojím u Nette jsou 2 věci:
- že DG řekne a dost. Když se podívám do commitů ...
- že Nette nebude nejvhodnější volba pro velké weby
U Symfony tyto obavy nemám, ale kód se mi narozdíl od Nette tolik nelíbí. Jak to, rok poté co DG oznámil, že nebude hlavním vývojářem Nette, vidíte vy? Který z těchto 2 fw by jste zvolily a proč?
S Nette jsem pracoval v době, kdy se objevila jeho verze 2.0. Používal jsem ho na své drobné projekty. V té době jsem přecházel
na framework Symfony 2.0, který jsme začali používat také v práci. Vzpomínám si, že jsem měl pocit, že přecházím z malého, snadno
a rychle použitelného frameworku (Nette) na těžkopádnější a více firemně zaměřený framework (Symfony2) připomínající spíše
frameworky ze světa Javy, jako je např. Spring MVC.
Nette jsem používal rád, bylo pro mě intuitivní. Řadu věcí řešilo elegantně a často jsem měl pocit, že je psané přesně pro moje
potřeby. Trochu jsem ale narážel v případech, kdy jsem chtěl něco rozšířit nebo použít jinak (např. renderování formulářů).
Dokumentace popisovala jen základní použití a často nezbývalo nic jiného, než si projít samotné zdrojové kódy.
Protože Nette již delší dobu nepoužívám, uvedu zde v podobě seznamu výhod/nevýhod pouze svoje zkušenosti
s frameworkem Symfony2. Níže uvedené výhody Symfony2 mě přesvědčili na tolik, že jsem u frameworku už zůstal.
Symfony 2 plusy
-
velká a vstřícná komunita, nikomu nevnucuje, že Symfony2 je nejlepší
-
slušná dokumentace, případně stackoverflow
-
najdou se i kvalitní blogy a také videa a tutoriály
-
jasně daný release model a přesně stanovené období podpory jednotlivých verzí, vývojáří vědí na čem jsou, udržuje se zpětná kompatibilita
-
kvalitní doplňkové balíčky (bundles)
-
na frameworku Symfony2 nebo jeho komponentách je postavena řada open source projektů a nástrojů
Drupal 8, OroCRM, Sylius, Sonata Project, Zikula, Symfony CMF, Shopware, Behat, Thelia, Composer
=> se znalostí Symfony2 můžete celkem snadno začít programovat i pro zmíněné projekty
=> vývojáři těchto projektů zároveň přispívají do Symfony2 a vylepšují jednotlivé komponenty -
vývojáři frameworku Symfony2 vytváří další produkty pro usnadnění vývoje PHP aplikací
Security Advisories Checker, SensioLabsInsights, Blackfire Profiler -
architektura Symfony2 je postavena na ověřených postupech, inspirace z řady jiných jazyků
=> vývojář si tyto postupy při vývoji v Symfony2 také osvojí a naučí se psát čistší kód -
modularita a DI
=> jednotlivé části frameworku Symfony2 je možné nahradit vlastním řešením nebo řešením třetích stran
=> není nutné používat twig, doctrinu, ... -
je možné využívat jen komponenty, není nutné používat full stack framework
-
rozšiřitelnost (reakce na události v rámci životního cyklu http požadavku, vlastní formulářové typy, vlastní rozšíření twigu, ...)
-
konzolový přístup, generování kódu, snadné propojení konzole s IDE
-
testovatelnost, Behat, viz projekt Sylius
-
úžasný Symfony2 plugin do PHPStormu, který napoví i zdánlivě nemožné :)
- ve světě je po programátorech Symfony2 poptávka
Symfony 2 mínusy
-
některé části frameworku jsou dost komplexní ve snaze být co nejflexibilnější (DI, security, forms, ...)
=> první použití není přímočaré a člověk narazí na situaci, že celkem běžná věc se řeší složitěji (ukecaněji)
toto je nyní pod kontrolou DX (developer experience) iniciativy, která se snaží různé postupy co nejvíce zjednodušit a zpřehlednit -
velký framework (full stack se závislostmi má cca 30 MB s 30k soubory)
-
komunita v ČR není zatím příliš živá
-
v ČR zatím není mnoho kvalitních Symfony2 vývojářů
- v ČR po Symfony2 vývojářích zatím velká poptávka není
Při rozhodování bude záležet na tom, jestli tíhneš spíš k tomu si napsat něco vlastního nebo budeš vycházet z existujícího řešení.
Já osobně bych použil existující řešení a v případě potřeby ho rozšířil. Symfony2 je rozsáhlý framework, kde najdeš téměř vše, co
potřebuješ pro vývoj CMS, řada problémů je vyřešena v externích balíčcích. Pokud ti nevyhovuje velký full stack framework, je možné
začít i s něčím menším (Nette, Silex) a rozšiřovat si to o vlastní komponenty nebo komponenty třetích stran.
Pokud toužíš psát něco vlastního, můžeš zkusit vylepšit stávající řešení nebo je kompletně přepsat a přispět do komunity,
David Grudl nebo Fabien Potencier by byli rádi. Tím se člověk také naučí hodně. Než se tvůj kód dostane do samotného frameworku,
projde před očima řadě vývojářů. Níže uvádím odkazy na zajímavé zdroje informací o frameworku Symfony2
blogy
Matthias Noback: http://php-and-symfony.matthiasnoback.nl/categories/Symfony2
videa a tutoriály
http://www.screenfony.com/
https://www.youtube.com/user/SensioLabs
https://www.udemy.com/introduction-to-web-development-with-symfony2/
česká komunita
https://plus.google.com/communities/111180496421740803412
https://connect.sensiolabs.com/club/czech
IRC: irc://irc.freenode.net/symfony-cs
Komentáře
- Anonym : Díky za přínosný komentář! — 7.12.2014
- podhy : Jediné co bych symfony vytknul je "nepodpora" LDAP resp. použít se dá spousta jiných knihoven (např. Zend\Ldap), ale kdyby s ním symfony počítalo v základu, tak bych ho považoval daleko víc použitelné ve firemním prostředí. Na druhou stranu chápu proč se s ním nepočítá, protože na webu se téměř nepoužívá. — 7.12.2014
- Ondřej Machulda : Super komentář! Jen ohledně malé poptávky po Symfony vývojářích - u nás v LMC zrovna hledáme, jedou na tom části jobs.cz nebo prace.cz, tak to ani s tou poptávkou nebude tak hrozné :-). http://lmc.jobs.cz/pd/919044165 — 8.12.2014
- Tomáš Votruba : Co se komunity, vývojářů a firem týče, za poslední rok se jich přidalo obrovské množství. Pár jich najdete na http://symfony.cz — 22.11.2015
- Kit : @Tomáš Votruba: Za poslední rok se přidalo obrovské množství mínusů? No nazdar... — 21.11.2015
- Taco : budu trochu oponovat: Netvrdím, že Nette je übr nejlepší. Ale DI má rozhodně vymazlenější a i čistěji navržené než Symfony. Od verze 2.2 nebo kolik, tak je Nette rozsekané do více jak deseti balíčků, což přispělo k modularitě, která vždycky byla velice dobrá. Nikdy jsem neměl dojem, že by se něco nedalo snadno nahradit, ohnout, nebo upravit. V tomto si dává DG a komunita fakt pozor. Symfony má hodně knihoven, a to, že jsou volně bundlované je obrovské plus. Ale jejich kvalita není nijak zvlášť fantastická (i když ve světě PHP FW září jak atomové slunce). Třeba symfony console mě strašně saje. A symfony finder taky zrovna zázrak není. IMHO jedinej opravdu pádnej argument, proč použít Symfony oproti Nette je v tom, že Symfony je celosvětově známější. Jinak jsou si hodně podobní. V něčem exceluje Nette, v něčem Symfony. — 22.11.2015
- Tomáš Votruba : @Taco: Osobně preferuji tu nejlepší knihovnu bez ohledu na framework. V dnešní době srovnávat vendor name mi nedává smysl. Je něco, co jsi ze Symfony sám vyzkoušel? — 22.11.2015
- cmelo : pracoval som so symfony aj s nette, niektore veci su lepsie vyriesene v nette niektore v symfony, nakoniec som sa rozhodol pre nette v kombinacii s doctrine a symfony komponentami napr console, process, crawler :) — 22.11.2015
- Taco : @Tomáš Votruba: Console, Finder jsem zatím používal opravdu hodně. — 24.11.2015
- Tomáš Votruba : @Taco: To máme podobně, s Console jsem začínal na ApiGenu. Nemáš něco na Githubu ke skouknutí? — 27.11.2015
Pro zobrazení všech 15 odpovědí se prosím přihlaste:
Nebo se přihlaste jménem a heslem:
Komentáře