Introductie PHP Symfony

Symfony 4.1 is een van de meest populaire PHP frameworks op dit moment.

Zeer geschikt om een toekomstbestendige website mee te bouwen zoals bijvoorbeeld Spotify, BlaBlacar en Ticketswap gedaan hebben.

In dit artikel krijg je een helder beeld over de mogelijkheden van dit framework.

Wist je bijvoorbeeld dat Drupal, Laravel, Joomla en Magento maken gebruik van Symfony componenten?

Wat maakt Symfony bijzonder.

Symfony versie 4.1 is de laatste versie die uitgebracht is op het moment van schrijven.
Het is een framework en dus niet zoals bijvoorbeeld WordPress (een content management systeem waarbij je zonder te programmeren een website kunt beheren.), even te installeren en direct te gebruiken. Het is een samenstelling van slimme regels en stukjes code die je als webdeveloper in kunt zetten voor de bouw van jouw eigen wensen.

Wat Symfony speciaal maakt is de architectuur welke bestaat uit losse componenten die binnen het pakket vervangbaar zijn door alternatieven en hierdoor ook juist in andere projecten als los onderdeel inzetbaar zijn. Zo gebruikt het Laravel framework op dit moment 11 Symfony componenten en zijn er veel Laravel plugins die ook weer gebruik maken van een aantal symfony componenten.

Leercurve

Om Symfony onder de knie te krijgen kun je het beste beginnen met het installeren van de Symfony 4.1 op je eigen werkomgeving. Er zijn 2 vereisten om te kunnen starten met de laatste versie: PHP versie 7.1 of hoger en Composer.

Ben je nog niet bekend met composer? Dan geef ik graag een korte introductie, daarna kun je het beste de instructies volgen uit hun documentatie om daadwerkelijk gebruik te kunnen maken van de kracht van composer.

Composer is een tool die de afhankelijkheden voor jouw project kan beheren. Jij geeft als programmeur aan, welke libraries jouw applicatie absoluut nodig heeft. Composer zorgt ervoor dat deze gedownload worden, geupdated waar mogelijk in combinatie met alle andere libraries en in de juiste map komen te staan zodat jij ze in je applicatie kunt gebruiken.

Heel minimalistisch gezien is dit onderstaande commando voldoende om Symfony te installeren en vanaf dat punt verder te werken aan een nieuw project.

“composer create-project symfony/website-skeleton mijn-webapplicatie”

Meestal heb je als webdeveloper al een gekozen werkomgeving met de laatste versie van PHP, MySQL, Apache of Nginx. Mocht je dat (nog) niet hebben, dan heeft Symfony iets bijzonders: Een ingebouwde webserver.

Met onderstaand commando start je de webserver en kun je de website bezoeken via http://localhost:8000

“php bin/console server:run”

Handig om direct van start te kunnen gaan!

Documentatie

De website van Symfony bevat duidelijke uitleg in het engels over de installatie en het gebruik van het framework. Ook zijn er veel tutorials beschikbaar waarbij ze door de organisatie zelf gemaakt zijn of doorlinken naar andere partijen die een bepaald onderwerp goed belichten.

Naast documentatie van de ontwikkelaars achter Symfony, is er een achterban van webdevelopers die er dagelijks gebruik van maken.

Dit is handig als je als webdeveloper even het antwoord niet weet, je kunt dan bijvoorbeeld naar https://stackoverflow.com/questions/tagged/symfony om je vraag te stellen en krijg binnen een paar minuten al antwoorden of tips binnen.

Meer lesmateriaal kun je hier vinden met gratis en betaalde video lessen omtrent Symfony:

https://knpuniversity.com/

Beveiliging

De meeste professionals zijn bekend met de nieuwe AVG wetgeving.
Steeds vaker zie je dat partijen door de mand vallen als het gaat om het veilig verwerken en behouden van alle gegevens. Bedrijven hebben bij het kiezen van een framework voor een nieuw project ook rekening te houden met deze vraag.

De hamvraag: Is het Symfony framework veilig?

Het meest eerlijk antwoord is, dat dit afhankelijk is van de implementatie.
Ja het framework heeft alles in zich om een veilige applicatie te maken en stimuleert dit ook te doen vanaf het begin van installeren. Maak je gaandeweg onveilige keuzes, dan is het framework niet meer als boosdoener te beschuldigen.

Symfony heeft verschillende componenten die je applicatie veilig houden waaronder

“symfony/security-csrf”

Hiermee kun je er zeker van zijn dat elk formulier dat naar je applicatie is verzonden daadwerkelijk en gegarandeerd ook een formulier is dat is getoond vanaf jouw eigen website.

Symfony heeft zelf geen code geschreven voor het veilig omgaan met databases, maar maakt zoals vele framework gebruikt van Doctrine ORM & DBAL.

Object Relational Mapper & Database Abstraction Layer zorgen ervoor dat je in je applicatie nergens meer direct je database aanspreekt, als je de mogelijkheden nauwkeurig blijft gebruiken.

Je database tabellen worden door Doctrine ORM automatisch gekoppeld aan PHP model classes. Samen met Doctrine DBAL zorgt dit ervoor dat je de database altijd op een veilige manier aanspreekt.

Je kunt in de class bijvoorbeeld vastleggen welke velden wel of juist nooit aangepast mogen worden. Mocht een hacker dan een stukje code proberen te injecteren dat meer data op moet halen, dan krijgt de hacker niet het gewenste antwoord terug van jouw applicatie.

Uiteraard is je applicatie zo veilig als jouw webserver, als de hacker bij je code kan komen zonder dat jij of een collega dit opmerkt dan is het verbeteren van de infrastructuur de eerste prioriteit.

Toekomstbestendig

Door de mogelijkheden en grote groep webdevelopers die bekend zijn met Symfony, is het een goede keuze voor een schaalbare applicatie dat nog jaren gebruikt en doorontwikkeld moet worden. Het maakt het bijvoorbeeld makkelijk om programmeurs uit alle hoeken van de wereld in te huren om nieuwe functionaliteiten toe te voegen zonder een lange en soms dure periode van inwerken.

Conclusie

Symfony is voor grote schaalbare projecten, de komende jaren een goede keuze. Om goed te kunnen bepalen wat het bijvoorbeeld aan werk kan kosten of juist schelen om als organisatie over te stappen kun je vrijblijvend contact met ons opnemen.

Ben je zelf een webdeveloper en ga je aan de slag om dit framework te gebruiken in een nieuw project. Dan horen wij graag wat jouw overwegingen zijn geweest!

Bronnen

https://twitter.com/SpotifyEng/status/595972071609339905

https://moquet.net/talks/symfony-live-2013/

https://speakerdeck.com/odolbeau/symfony-at-blablacar

https://www.smartrecruiters.com/BlaBlaCar/89191080-software-engineer

https://symfony.com/projects

https://www.techademy.nl/training/symfony2/beginners