Symfony Components zijn losse PHP-bibliotheken die te gebruiken zijn voor meerdere applicaties. Deze Componenten zijn zo goed geschreven dat ze het fundament zijn geworden waarop de beste PHP-applicaties gebouwd kunnen worden. Deze componenten kunnen geïnstalleerd worden met composer. Composer is een dependency manager voor PHP. Dit is de beste manier om al je dependencies bij te houden.
Eerder hebben we een artikel uitgebracht over Symfony, hierin werd verwezen naar de Symfony Components. In dit artikel zal ik hier meer over gaan vertellen.
De Symfony Components zijn een aantal losse herbruikbare PHP-bibliotheken. Deze Componenten zitten zo goed in elkaar, dat ze het fundament zijn geworden waarop de beste PHP-applicaties gebouwd kunnen worden.
De Symfony Componenten kunnen geïnstalleerd worden via Composer.
Composer is een dependency manager voor PHP. Composer regelt voor jouw alle dependancies in je project. Hij haalt netjes voor jouw alle componenten binnen die je nodig hebt voor jou project en alle bibliotheken waarvan dat component afhankelijk is.
Package management is een bekend concept en veel van composer is geinspireerd van npm van Node.js en bundler van Ruby
Nu zijn er echter te veel Componenten om ze allemaal te behandelen, daarom hebben we de volgende uitgekozen: Asset, Config, Routing, Webpack Encore.
Asset Component
$ composer require symfony/asset
Het Asset component regelt zaken rondom het maken van URL’s en versies van je zogenaamde ‘assets’, zoals je CSS en je JavaScript files.
Vroeger werden de assets in een webpagina er vaak op de volgende manier ingezet:
link rel=”stylesheet” type=”text/css” href=”/css/main.css”
Deze manier van aanpak is eigenlijk alleen nog aan te raden bij kleine applicaties, de URL’s hardcoden kan al snel leiden tot irritaties en problemen.
Je moet bijvoorbeeld voor elke asset het hele pad uittypen. Met het Asset component kan je assets in één package stoppen en die verspreiden. Bij het verplaatsen van een asset moet je alle links aan gaan passen en goed opletten dat je er geen vergeten bent. In het Asset component kun je makkelijk de locatie aanpassen door de path van de package te wijzigen.
Config Component
$ composer require symfony/error-config
Het Config component laat je bestanden van allerlei filetypes zoeken, laden combineren en valideren.
Vaak als je een PHP project hebt waarmee je met meerdere services moet werken, kan het lastig zijn om met al deze verschillende soorten configuratie files bezig te zijn. Met het Config component in Symfony wordt dit een stuk makkelijker en bespaart het je veel tijd.
Routing Component
$ composer require symfony/error-config
Het Routing component in Symfony is misschien wel de mooiste die er is. Het zorgt ervoor dat er aan de hand vaan een URL, bijvoorbeeld: /profiel/wijzigen/, een actie in de Controller (van het MVC model) kan uitvoeren. Dit betekent dat je ook SEO-friendly URL’s kan maken.
De URL wordt boven de method aangegeven, ook wordt er een naam aangegeven zodat je hem ook nog kunt gebruiken in twig files.
Met dit component kun je ook de HTTP method aangeven zodat de URL daar naar luistert. Als je niks aangeeft dan zal de URL luisteren naar welk HTTP method dan ook (GET , POST, PUT, etc.)
Hiernaast zijn er nog vele andere mooie functies in dit component, zoals het genereren van URL’s, het uitgebreid en slim werken met parameters en sub-domain routing.
Webpack Encore
$ composer require symfony/webpack-encore
Webpack Encore is een makkelijkere manier om Webpack in je applicatie te krijgen, hiermee kun je door middel van een API je JavaScript modules bundelen, je CSS en JS files compileren en minify-en.
In je webpack.config.js file doe je de configuratie voor Webpack en Webpack Encore.
In de console kun je na het configureren van je files commando’s uitvoeren om assets op te bouwen. Voor de development omgeving run je dan het commando:
$ yarn encore dev
Dit gaat dan de files bouwen en op een leesbare manier gebruiken, dit maakt het makkelijk om je code te debuggen in de Dev Tools in de browser.
Voor de productie omgeving kun je dan dit commando gebruiken:
$ yarn encore prod
Hiermee worden alle files geoptimaliseerd en geminify-ed om zo goed mogelijk te werken op de live applicatie.