Symfony
De stek draait op de Symfony stack. Kijk op symfony.com voor meer informatie over Symfony.
Kijk in de Getting Started categorie van de Symfony documentatie, hier staat uitgelegd hoe je dingen met moet doen. De Charming Development in Symfony 5 screencasts zijn ook een goed startpunt. De meeste dingen zijn een-op-een toe te passen op de stek.
Als je een deep-dive in Symfony wil kun je het boek Symfony5: The Fast Track lezen (gratis te lezen, ook in het Nederlands). Dit boek gaat veel verder dan wat we nu met de stek doen en gaat ook in op Symfony cloud.
Kijk naar de Best Practices op de Symfony website.
We gebruiken YAML voor configuratie en Annotations voor routes en entities.
Afwijkingen van Symfony
Omdat Symfony in stappen is/wordt geintroduceerd in de stek is (nog) niet alles precies volgens het boekje.
- Geen
symfony/assets
, dit moet nog gefixt worden - Geen
Webpack Encore
, de webpack setup die we hebben werkt prima. - Geen
symfony/mailer
, misschien nog overstappen, huidige mailoplossing werkt nog prima. - Nog maar op een paar plekken
symfony/form
, overstap gaat stroef, een aantal formfields moeten hier nog naar geport worden - Geen
symfony/ldap
, eigen implementatie, zou misschien vervangen kunnen worden. - Geen Symfony flash messages, eigen implementatie in
MeldingUtil
, moet nog omgebouwd worden.
Kernel
Alle requests worden door de Kernel van Symfony verwerkt. Zie lib/Kernel.php
voor de details, het is niet heel anders dan een normale Symfony installatie.
Container
De Service container van symfony is beschikbaar. In controllers kan in functies gebruik worden gemaakt van DI door bepaalde types op te geven als parameters.
Met de CsrDelft\common\ContainerFacade
kun je te pas en te onpas de container te pakken krijgen. Dit is om de overgang te vergemakkelijken. Het liefst wordt op alle plekken DI gebruikt, bijv door factories te bouwen die in de container zitten. Dit is wel iets voor een moment waarop je eigenlijk op alle plekken makkelijk bij de container kan zonder dat er teveel plumbing code geschreven moet worden.
Zie Services voor meer info over de container.
Router
De router van Symfony wordt gebruikt om routes te resolven. De YAML configuratie wordt hier voor gebruikt. Zie de YAML bestanden in de config/routes
map.
ORM
Voor alle onderdelen (behalve het Barsysteem) wordt Doctrine gebruikt als ORM. Zie ORM
Security
Voor inloggen wordt symfony-security gebruikt, zie Security