Shrnutí konference SymfonyWorld Online 2022 Summer Edition

V závěru minulého týdne se uskutečnila letní online konference k PHP frameworku Symfony. Nabízím tradiční souhrn novinek, tipů a představení Symfony 6.1.

Úvodu se ujali Anne-Sophie Bachelard a Nicolas Grekas, kteří nás přivítali, poděkovali sponzorům a organizátorům. Přednášky probíhaly ve dvou pásmech, ne vždy byly v danou dobu oba využity. Platforma Hopin je osvědčený nástroj pro online konference, stejně jako tradiční schéma předtočená přednáška + následující živé odpovědi na dotazy. Přednášky jsou pro účastníky spustitelné i zpětně. Lze tak kouknout i na ty, které se prolínaly s jiným oblíbeným tématem.

Fabien Potencier – Keynote

Hlavní přednášku konference pojal tvůrce Symfony jako ukázku konkrétních postupů, kterými prošel při řešení bugu. Konkrétně nám ukázal, jak odstraňoval problém v komponentě ExpressionLanguage.

Při tvorbě nového vzhledu webu symfony.com se používají testy na Blackfire a v jednom z těchto testů se detekuje HTML kód stránkovače. V ExpressionLanguage měli do testu napsaný řetězec "Newer posts", který na první pohled nevypadal zle, ale přesto nefungoval.

Fabien nám ukázal story o kopírování projektu na lokální prostředí, zapínání warningů, zkoumání preg_match a uvědomění si, že ve výrazu chybí zpětná lomítka. Dále povídal, jak probíhala oprava a jak se změny zpětně zakomponovaly do celého Symfony. Celý proces by měl být inspirací pro vedoucí vývojářských týmů.

Další část keynote se týkala rozdílů ve výrazivu ve Twigu a ExpressionLanguage, neboť dosud se Twig snažil zajistit kompatibilitu se staršími verzemi PHP. Nový Twig 4 bude vyžadovat PHP 8.1, podporovat jmenné argumenty, dojde na řešení inkonzistencí a CamelCase vs snake_case.  Do budoucna by měl být Twig s ExpressionLanguage synchronizován.

Půjde o první verzi po dvanácti letech vývoje, která přeruší kompatibilitu se starší verzí. Samozřejmě se ale nemusíte bát, že byste byli nuceni kompletně přepisovat svoje Twigové šablony.

  • Twig 2.x skončí letos
  • Twig 3.x je zatím nadále udržován, konec životnosti není stanoven.
  • Twig 4.x přijde zároveň se Symfony 6.2 (letos v listopadu)

Jérôme Tamarelle – (Re)discover the Symfoly Console

Přednáška od vývojáře, který staví článkové a televizní weby s vysokou návštěvností. Velmi povedená rekapitulace základů jak udělat consolovou aplikaci a distribuovat ji pomocí Composeru.

Pro začátečníky malé upozornění, konzolová aplikace není příkaz bin/console s parametry, ale přímo naše vlastní bin/appka, s vlastními argumenty. Jérôme ukázal různé vstupy ze strany uživatele – otázky, potvrzení, výběry, automatické dokončování v shellu fugující v Bash a Fish od Symfony 6.1.

Autocompletion je ve všech Symfony příkazech, pomáhalo s tím asi 20 vývojářů. Brzy to bude umět i Composer. Následovaly ukázky progress baru s emoji a formátování tabulek v shellu. Integrace se systémem. Používání návratových kódů. 0, 1,2 neboli Command::SUCCESS, FAILERE, INVALID. Streamy. Hlášení chyb. Za mě pěkné osvěžení, které mi dalo několik zajímavých nápadů.

TIP: bin/console help completion – pokud ještě nemáte, instalujte si autocomplete pro své projekty.

Oliver Kossin – Sulu CMS

Protože se zajímám o nejrůznější redakční systémy, přednášku o Sulu CMS jsem si nemohl nechat ujít. Pro koho je určený? Rozhodně ne pro osmnáctiletého studenta, který právě dostal nápad na blog o cestování, ale pravděpodobně jej to za pár měsíců pustí. Alespoň takto Oliver Sulu CMS charakterizoval.

Sulu CMS je totiž určeno hlavně pro vývojáře, neboť jde v podstatě o bundle pro Symfony. Slouží k pohonu webů tvořených z obsahových bloků. Nabízí intuitivní UI, živé náhledy, verzování, správu webových prostorů – ta se vám hodí, když chcete z jedné administrace řídit více webů. Šablony vzhledu jsou kombinací XML s popisem struktury stránky a Twigu.

V Sulu CMS najdete správce médií, tedy centralizované úložiště nezávislé na struktuře složek. Podporuje vícejazyčnost, meta data, umí verzování dokumentů, dovede automaticky upravovat obrázky a provádět jejich optimalizaci.

Z pohledu digitálního marketingu či SEO je tu samozřejmostí správa URL a redirektů, integrace s analytikou, sémantický kód s ohledem na SEO. Zajímavé je personalizace – vyhodnocování uživatelských skupin, automatické zobrazování odpovídajícího obsahu pro tyto skupiny. Plně konfigurovatelné marketingové a obsahové strategie.

Propojení se Symfony. Vytváříte-li například web s nabídkou zaměstnání, uděláte si klasické entity, napojíte je na Doctrine a Sulu s nimi začne pracovat. Netřeba znovu vynalézat kolo a dělat tomu vlastní nastavení v CMS.

Sulu umí fungovat i jako headless CMS s výstupem do JSON nebo XML přes Rest API. Rozhraní lze nastavit tak, abyste viděli jen ty části, které pro vás připadají v úvahu. Například si ukryjete přepínač webových prostorů.

Příklad webů, které pohání Sulu CMS: AllianzCinema.ch, Feinschmecker.de, Kuechengoetter.de. Jedná se o weby s velkou návštěvností. Demo Sulu najdete na sulu.rocks.

Škoda, že Oliver neukázal kód nebo nějaké ukázky systému jako takového. Jen slajdy se schématy.

Anna FIlina – Writing Testable Symfony Apps

Další přednáška se věnovala psaní testů a tomu, jak si to ulehčit a začlenit do každodenní vývojářské rutiny. Vyžádala si základní znalost Unit testů, zbytek nám Anna ukázala. Několik příkladů kódu, začali jsme dekonstrukcí základního Controlleru s výstupem do Twigu a jeho úpravou tak, aby se dal testovat. V podobném duchu byly další ukázky.

Pár textů na toto téma má Anna na svém webu.

Mathias Arlaud – API Platform, third act.

Znáte API Platform? Určitě ano, ve světě Symfony je to, řekl bych, oblíbené řešení pro tvorbu RESTových a GraphQL API. Přednáška se týkala nové verze. Když projekt začínal, měl v roce 2015 kolem dvou tisíc uživatelů. O rok později přišla API Platform 2.0 přepsaná do PHP 7 s řadou vylepšení a oprav v kódu. Dnes ji využívá už dva miliony instalací. A co tedy přináší API Platform 3.0?

Mimo jiné operace a objekty operací, subresources, poskytovatele dat a data persistery. Závěr přednášky se týkal aktualizací na trojkovou verzi.

Kévin Dunglas – Developing a decentralized web application with Symfony and API Platform

Na záběr prvního dne nás čekala trochu vizionářská přednáška o svobodě webu a tvorbě decentralizovaných aplikací. Kévin se rozpovídal o tom, jak je 57 % internetového provozu v režii velkých korporací. Mohou ovlivnit co uvidíte, kam co pošlete, kde se to zveřejní. Nechyběla zmínka o Snowdenovi a jeho varování o propojování korporací a tajných služeb.

Dále jsme si poslechli, jaký je přesně rozdíl mezi Web 3 a Web 3.0. Původní Web 1.0 vynalezl Tim Berners-Lee jako decentralizovanou síť informací. Kolem roku 2000 přišel Web 2.0 se sociálním aspektem, obsahem tvořeným uživateli. Nastal mix komunitních a komerčních projektů, přičemž ty druhé začaly shromažďovat data o uživatelích. Web3 slibuje vše vrátit do starých kolejí, vrátit nám kontrolu nad daty, ale pozor. Vychází z kryptoměn, má velkou ekologickou stopu a propagují jej hlavně kryptonadšenci a velké technologické firmy s cílem monetizovat každý aspekt našeho života.

Naproti tomu Web 3.0 (viz ten rozdíl v označení od Web3) opět vychází z myšlenek Tima Bernerse-Lee a zaměřuje se na prolinkovaná data, interoperabilitu a decentralizaci.

Kévin nám následně představil protokol Solid, se kterým přišel právě Tim Berners-Lee. Je postaven na původním Web 1.0, který dále rozšiřuje. Toolkit pro správu decentralizovaných aplikací. Data jsou ukládána do decentralizovaný data schránek (ala S3). Uživatelé si pak určují, kdo a jak k nim má přístup. Standardy: WebID pro identifikaci, Open ID Connect – přihlašování na OAuth2, Linked Data platform, Web Access Control a další. Příklad úložišť? Nextfloud, PHP Solid State.

TIP: Solid Client PHP je ukázka využití SOLID v PHP a Symfony.

Nicolas Grekas – What's new in Symfony 6.1?

Nic proti keynotes, ale nejvíce jsem se těšil na tuto přednášku. Také mi přišla nejzajímavější. Nicolas nám nejprve shrnul termíny a vůbec cyklus vývoje Symfony. Nové verze vycházejí v pevně daný termín, ten se neodkládá. Co se nestihne, to prostě bude až ve verzi příští.

Momentálně jsou udržovány čtyři verze Symfony, a sice 4.4, 5.4, 6.0 a 6.1. S dlouhodobou podporou do roku 2025 je verze 5.4 (LTS). Více viz releases. Symfony má příslib zpětné kompatibility, tedy tzv. Backward Compatibility Promise. Každé dva roky vychází nová major verze, na kterou lze průběžně upgradovat.

Nicolasův tip: Spouštějte composer up symfony/* jednou měsíčně pro aktualizaci a nejnovější opravy. Na minor verzi aktualizujte každých šest měsíců (červen a prosinec) a opravte deprecations. Zajistíte tak minimum problémů při povyšování Symfony.

Přehled novinek v rychlosti: vylepšení pro Flex, aktualizace receptů a podpory pro Docker, snadnější integrace vlastních recepisů. V Symfony UX na nás čeká Stimulus 3 a novější Turbo, Live Components.

Pravděpodobně jste zaznamenali už minule, že SymfonyCloud se spojil s Platform.sh. Fabienova kniha o Symfony 6 dostala updaty, demo appku, SymfonyCasts se šestce taky věnují. Symfony CLI je open-source. Na podzim oznámili sponzorský program, můžete sponzorovat vydání nových verzí Symfony.

Novinky a změny jednotlivých verzí:

  • Symfony 4.4 podporuje PHP 8.0, 8.1 a 8.2
  • Symfony 5.4 implementuje nové vlastnosti jazyka PHP (atributy, enums)
  • Symfony 6.0 zahazuje deprecated code. Symfony
  • Symfony 6.1 používá moderní syntaxi z PHP 8.1, lepší deklarace s nativními a generickými typy. Vývojáři se také snažili zlepšit dojem ze Symfony pro nově příchozí, zaměřili se na výkon. Za 12 měsíců 8000 upravených souborů, přidali 470 řádků kódu, 430 odebrali. Probíhá zhruba 6 push requestů za den, celkem je tu 400 nových vlastností, 700 bugů, 900 menších změn.

Dále se Nicolas věnoval podrobněji Symfony 6.1. Minimum je PHP 8.1, což může bolet lidi, kteří začali se Symfony 6 na PH 8.0. Kladem ale budiž moderní kód ($callable(), matches, lepší typové deklarace). Zrychluje se Symfony v Doceru na Macu. Těžká logika validátorů byla přesunuta mimo costructor. EventDispatcher nevytváří instance nepoužitých listenerů, Messenger se znovu neserializuje.

Brigde/PhpUnit přidává volbu ignoreFile, FrameworkBundle zase cache:pool:invalidate-tags, různá vylepšení přináší WebProfilerBundle (např. copy as curl). Console zjednoduší život s autocomplete, DependencyInjection s #[Autowire()].

ExpressionLanguage přidává výrazy a syntaxi (100_000 a .000_001, contains, start with, ends with, null?->safe operátor). HtmlSanitizer, HttpFoundation mají dynamické TTL pro sessions, HttpKernel jednodušší bundle/extensions. Messenger má Redis sentinels, Notifier, PropertyInfo, Serializer. V Routingu lze použít novou třídu Requirement. Zaujalo mě volání LocaleSwitcher->runWithLocale() pro spuštění výsledku s dočasně jinak nastaveným jazykem.

Alexandre Daubois – Little-known Symfony components that are worth a look

Zdánlivě téma pro začátečníky, ale ve skutečnosti moc pěkný a rychlý přehled pětice zajímavých komponent v Symfony. Za mě pěkná přednáška, zaujala mě hlavně poslední uvedená komponenta.

  • HtmlSanitizer – postaví bezpečné HTML ze vstupních dat, využití u wysiwyg editorů
  • String (od Symfony 5) – zajímavý pohled na grafémové clustery v emoji (kód znaku/obrázku + kód zabarvení kůže). Manipulace s velikostí znaků, třeba camel, snake atd. Obsahuje, končí, začíná atd. Bere v potaz shluky grafémů, když třeba krátíme řetězec o určitý počet znaků. Komponenta je obsažena v Twig Extra Bundle. Umí dělat jednotné a množné číslo ze slov v angličtině.
  • OptionsResolver (od Symfony 2.1) – pravděpodobně jej už používáte a nějak zvlášť neřešíte.
  • Intl – protože mezinárodní web není jen o překladu obsahu. Od jazyku až k časové zóně a měnám.
  • Process (od Symfony 2.0, nejstarší) – k práci s externími programy.

Titouan Galopin – Symfony and open source at the service of society

Co by to dnes bylo za vývojářskou konferenci, kdyby se na ní neprobíraly společenské jevy a problémy, že ano… Tentokrát to na sebe vzal Titouan, který ale připravil docela zajímavé povídání o tom, jak stavěli covidový portál na Symfony, který následně převzali vývojáři v jiných státech.

Jedna z myšlenek: nezapomínejte na testování ani při nouzovce, kterou potřebujete mít rychle hotovou.

Sherri Wheeler – Controlling Smart Light Bulbs with Symfony Console and PHP

Toto byla přednáška pro všechny bastlíře srdcem i duší. Aneb ukázka ovládání chytrých žárovek od Philipsu pomocí PHP a konzolové aplikace v Symfony. Byť to samozřejmě bylo předtočené, líbila se mi „živá“ ukázka kódování v praxi.

Ryan Weaver – Symfony UX: New Components, Live Twig & More Updates!

Borec na konec. Přednášky od Ryana jsou vždy zárukou svižného a zajímavého povídání. Tentokrát se věnoval Symfony UX, skládající se ze dvou částí: knihovny Stimulus a UX knihoven. Ryan postupně představil symfony/ux-turbo, symfony/twig-component, symfony/live-component a v rychlosti zmínil už dříve existující charts, cropper js, dropzone a lazyimage. Přibyly také ux-typed, ux-notify, připravují se ux-form-collections, ux-react a ux-autocomplete.

Já se určitě pustím do pokusů s komponentami v Twigu.

Nenechejte si ujít nově spuštěný ukázkový web ux.symfony.com s řadou příkladů, jak používat JavaScript v Symfony.

Více jsem toho během konference a polopracovního režimu nestihl. I tak to byla ale řádka zajímavých informací, které určitě využiji nejenom v Symfony samotné, ale třeba i v Drupalu.

Buďme ve spojení, přihlaste se k newsletteru

Odesláním formuláře souhlasíte s podmínkami zpracováním osobních údajů. 
Více informací v Ochrana osobních údajů.

Autor článku: Jan Polzer

Tvůrce webů z Brna se specializací na Drupal, WordPress a Symfony. Acquia Certified Developer & Site Builder. Autor několika knih o Drupalu.
Marketing Director v Lesensky.cz. Ve volných chvílích podnikám výlety na souši i po vodě. Více se dozvíte na polzer.cz a mém LinkedIn profilu.

Komentáře k článku

Přidat komentář

Odesláním komentáře souhlasíte s podmínkami Ochrany osobních údajů

reklama
Moje kniha o CMS Drupal

 

Kniha 333 tipů a triků pro Drupal 9


Více na KnihyPolzer.cz

Sledujte Maxiorla na Facebooku

Maxiorel na Facebooku

Poslední komentáře
Hosting pro Drupal a WordPress

Hledáte český webhosting vhodný nejenom pro redakční systém Drupal? Tak vyzkoušejte Webhosting C4 za 1200 Kč na rok s doménou v ceně, 20 GB prostoru a automatické navyšováním o 2 GB každý rok. Podrobnosti zde.

@maxiorel na Twitteru

Maxiorel na Twitteru