Laravel VS Symfony
Blog

Laravel vs Symfony

Laravel en Symfony zijn twee veel voorkomende frameworks bij PHP. Vandaar dat wij hier ook een blog aan wijden ‘Laravel vs Symfony’. Wat zijn de verschillen en in welke situatie is Laravel of Symfony de beste keuze? Nieuwsgierig? Lees vooral verder!

Wat zijn Laravel en Symfony?

PHP is al meer dan 20 jaar een begrip op het web; het is de meest gebruikte programmeertaal aan de server kant van het internet. Door de jaren heen zijn er voor PHP, net als voor bijna elke andere programmeertaal, meerdere frameworks verschenen. Frameworks leveren een basisstructuur en componenten voor een webapplicatie waarmee snel en overzichtelijk complexe applicaties kunnen worden opgebouwd. Je kan het zien als het skelet waarop de applicatie verder wordt uitgebouwd.

De twee grote namen binnen de wereld van PHP frameworks zijn Symfony en Laravel. Technisch gezien is Symfony niet alleen een framework, maar ook een meta-framework; een framework van frameworks. Laravel is een nieuwer framework dat in de laatste paar jaar razendsnel is gegroeid waardoor het nu met afstand het meest populaire framework voor PHP is geworden. Fun fact: Laravel is deels opgebouwd uit Symfony componenten!

De grootste verschillen en overeenkomsten tussen Laravel en Symfony

Laravel en Symfony zijn niet voor niets uitgegroeid tot de twee grootste frameworks voor PHP. Volgens de laatste survey van Stack Overflow gebruikt 10,89% van de professionele developers Laravel tegenover 4,25% die Symfony gebruiken. Beiden leveren een stabiele en overzichtelijke basis met vergelijkbare functies.

De overeenkomsten op een rijtje:

● Open-Source
● Beiden gebaseerd op het MVC Design Pattern
● Cross-Platform
● Command Line Interface beschikbaar
● Internationalization ingebouwd
● ORM ingebouwd
● Templating engine ingebouwd
● Test-tools ingebouwd
● Databases ondersteund
● Makkelijk uitbreidbaar met extra functies
● Officiële Docker image beschikbaar

Kijken we iets dieper, dan vinden we toch ook verschillen die invloed kunnen hebben op je uiteindelijke keuze voor een framework.

De verschillen op een rijtje:

Laravel maakt gebruik van Eloquent ORM, gebaseerd op ActiveRecord. Symfony gebruikt Doctrine, een implementatie van het DataMapper pattern. CRUD functionaliteit is razendsnel te implementeren in een ActiveRecord ORM omdat er direct van de class naar de tabel en in de database wordt gemapped. Naarmate een project groeit is dit wel minder makkelijk te onderhouden; veranderingen moeten op meerdere plaatsen in de code worden aangepast om de applicatie werkend te houden. Daarbij kan het direct naar de database mappen een beveiligingsrisico opleveren;

DataMapper pattern

Met het DataMapper pattern is er geen directe link naar de database, de code voor CRUD functionaliteit moeten zelf worden geschreven. Dit maakt enerzijds dat het meer werk is om de code oorspronkelijk te schrijven, maar anderzijds dat het op termijn makkelijker te onderhouden is. De extra laag tussen de class en database maakt dat het beveiligingsrisico iets lager is;

Eloquent ORM

Met Eloquent ORM worden standaard de volgende databases ondersteund: MySQL, PostgreSQL, SQLite en SQLServer. Doctrine ORM ondersteunt ook MySQL, PostgreSQL, SQLite en SQLServer, maar daarnaast is er ook nog ondersteuning voor Drizzle, Oracle en SAP Sybase SQL Anywhere.

Blade templating engine

De Blade templating engine standaard wordt gebruikt in Laravel. Symfony maakt gebruik van Twig. De programmeur kan er ook voor kiezen een andere templating engine te gebruiken of om deze zelfs helemaal weg te laten. Dit vereist wel extra acties.

Symfony

Symfony maakt onderscheid tussen drie verschillende testvormen: Unit, Integration en Application. In Laravel wordt het gebruik van Unit tests en Feature tests geadviseerd. Internationalization is in Laravel te implementeren door middel van PHP en JSON. In Symfony worden meerdere translation formats ondersteund, zoals PHP, .po, .mo en XLIFF.

Laravel is ontworpen om snel aan de slag te kunnen met een complete applicatie waar onder andere een ingebouwd systeem voor autorisatie in zit. Symfony heeft de mogelijkheid om autorisatie (en andere onderdelen) toe te voegen, maar het vereist meer configuratie door de programmeur. Symfony biedt meer flexibiliteit en mogelijkheden tot uitbreiding, maar dit kan met name voor beginners best lastig zijn. De documentatie van Symfony is wat minder makkelijk te lezen, het dient vooral als referentie materiaal wanneer je al bekend bent met de achterliggende technieken. Wel is er een grote community van Symfony developers dus hulp is nooit ver weg.

Onderdelen van Laravel die zijn gebouwd op Symfony componenten zijn http requests en responses, console commando’s, routing en de mailer.

De leercurve voor Laravel is minder steil dan die voor Symfony, de flexibiliteit van Laravel is wel minder dan die van Symfony.

In welke situatie is Laravel de beste keuze?

Door de minder steile leercurve is Laravel makkelijker in gebruik te nemen door beginners. Doordat het framework beschikt over ingebouwde autorisatie, simpele configuratie opties en een groot ecosysteem van aanvullende tools is het zeer geschikt voor kleinere projecten die snel geïmplementeerd moeten worden. De documentatie en de door Laravel aanbevolen Laracast video’s maken het ook voor beginners makkelijker om met Laravel een webapplicatie te bouwen.

In welke situatie is Symfony de beste keuze?

Symfony is oorspronkelijk ontworpen voor grote complexe projecten en met flexibiliteit in het achterhoofd. Het is dan ook geen verrassing dat Symfony zeer geschikt is voor bijvoorbeeld Enterprise applicaties. Daarnaast is Symfony door zijn flexibiliteit ook zeer geschikt voor projecten waarin voor de ontwikkeling van het gebaande pad wordt afgeweken.

Nieuwsgierig naar onze Laravel en/of Symfony vacatures geworden? Check dan hieronder.

Meer artikelen