Symfony
Symfony je webový aplikační framework pro vývoj webových aplikací pro PHP vycházející z návrhového vzoru MVC. Celý framework je z velké části inspirován jinými webovými aplikačními frameworky jako Ruby on Rails, Django a Spring. Symfony je open-source, je vydáván pod MIT licencí a jeho vývoj je dále sponzorován francouzskou firmou Sensio Labs v Paříži.
Výchozí stránka Symfony | |
Vývojář | Sensio Labs |
---|---|
Aktuální verze | 6.0.0 (29. listopadu 2021) |
Operační systém | Multiplatformní |
Vyvíjeno v | PHP |
Typ softwaru | Webový aplikační framework |
Licence | MIT licence |
Web | symfony.com |
Některá data mohou pocházet z datové položky. |
Historie
Framework původně vznikl pod názvem Sensio Framework[1] jako odnož projektu Mojavi3-DEV, který měl v sobě integrován ORM vrstvu Propel.
Webová stránka projektu byla spuštěna 18. listopadu 2005[2].
Symfony 1.4.x byla poslední revizí 1. verze udržovanou do listopadu 2012 [3]. Nástupcem bylo Symfony 2 vydané v srpnu 2011. V listopadu 2015 byla vydána 3. verze frameworku. V listopadu 2017 byla vydána 4. verze. V listopadu 2019 byla vydána verze číslo 5. Doposud poslední verze číslo 6 vyšla v listopadu 2021.[4]
Open source komponenty frameworku
Ve svém základu využívá Symfony několik open source projektů:
- Propel a Doctrine, ORM vrstvy
- Creole a PDO, databázová abstrakční vrstva
- PRADO, PHP framework pro podporu lokalizace
- Pake, command-line interpret
- PHPUnit, unit tester
- Zend Framework, Zend_Logger a Zend_Cache jsou použity pro logování a cachování
- Mojavi, MVC framework
- Swift Mailer, odesílání emailů
Symfony také využívá některé své vlastní komponenty které jsou samostatně k dispozici na vlastním webu Archivováno 31. 10. 2011 na Wayback Machine. Mezi ně patří například Symfony YAML, parser umožňující převádět YAML soubory do PHP polí a zpět.
Za použití pluginů může Symfony také podporovat některé další projekty jako:
- Prototype a jQuery, JavaScriptové frameworky
- script.aculo.us, JavaScriptová knihovna postavená na Prototype pro visuální efekty
- PHP Less, CSS parser postavený na projektu Less
- TinyMCE a CKeditor, jako WYSIWYG editory
- TCPDF, PHP knihovna pro generování PDF dokumentů
Od verze Symfony 1.2 není standardně implementován žádný JavaScriptový framework a volba je ponechána pouze na uživateli.
Struktura projektů v Symfony
Typický projekt v Symfony je rozdělen do mnoha podadresářů:
- app – konfigurace, šablony a případné překlady
- cache – cache zkompilovaných šablon
- dev – vývojové prostředí
- prod – produkční prostředí
- config – nastavení, většinou v YAML
- logs – logy
- Resources – zdroje
- views – šablony
- cache – cache zkompilovaných šablon
- src – většina kódu MVC
- bundles – bundles jsou do jisté míry samostatné části webu zajišťující jeho funkčnost. Obsahuje podadresáře pojmenované podle jednotlivých bundlů, každý z nichž může mít vlastní podadresář pro controllery, adresář pro testy, atd.
- vendor – závislosti dodavatelů třetích stran
- web – adresář přístupný z internetu
- bundles – v tomto adresáři jsou bundles implementované v src, zde již s vlastními zdroji (obrázky, CSS, …).
Každý projekt napsaný ve frameworku Symfony je rozdělen do jednotlivých aplikací (nejčastěji frontend a backend), ty se dále dělí na moduly a ty na jednotlivé akce.
S tím souvisí i hierarchie konfiguračních YAML souborů, kde jednotlivá nastavení se mohou postupně přepisovat s kaskádovou dědičností (nejnižší prioritu má nastavení projektu, nejvyšší nastavení konkrétního modulu).
Command-line
Trochu nezvykle na rozdíl od ostatních PHP frameworků vyžaduje Symfony přístup na command-line, což může být problém na sdílených web hostinzích. Vytváření projektů, aplikací, modulů, mnohá nastavení a údržba se provádí právě přes příkazový řádek.
Ukázkový projekt Jobeet
Na adrese Jobeet běží ukázkový projekt napsaný v Symfony přesně podle knihy Practical symfony. Je povoleno v něm cokoli modifikovat, každých 24 hodin se automaticky přepíše databáze do původního stavu.
Praktické použití
Symfony je používán mnoha známými webovými stránkami po celém světě. Mezi ty nejznámější patří:
- Askeet, open source komunitní Q&A služba
- Del.icio.us, webová služba umožňující ukládání, sdílení a objevování záložek [5]
- Dailymotion, částečně přešlo na Symfony a pokračuje i nadále [6]
U nás pak:
Reference
- symfony framework forum: General discussion ⇒ New symfony tagline brainstorming. www.symfony-project.org [online]. [cit. 2010-03-30]. Dostupné v archivu pořízeném dne 2008-12-22.
- symfony Web PHP Framework » Blog » Two years of symfony
- http://www.symfony-project.org/installation Symfony The Choice Matrix
- http://symfony.com/doc/current/contributing/community/releases.html
- Symfony Blog - Delicious Preview built with Symfony
- Symfony Blog - Dailymotion, powered by Symfony