Blogpost

Passage of time

1 minute read

A base setup for symfony 4 projects.

Best practices for setting up new projects.

Let’s start with building a new minimalistic symfony project, using

composer create-project symfony/skeleton authentication

The advantage of using the skeleton setup is that you, as a developer, can have full control off what components you do and do not use. Your knowledge of bundles will also increase as you need to add more bundles.

If you run into trouble, you will need composer require symfony/var-dumper —dev.


Doctrine all the way, so composer require symfony/orm-pack. As annotations are a performance hog, configure yaml for doctrine entities and store the yml config files in config/doctrine:

config/packages/doctrine.yml
doctrine:
    ...
    orm:
        ...
        mappings:
            App:
                is_bundle: false
                type: yml
                dir: '%kernel.project_dir%/config/doctrine'
                prefix: 'App\Entity'
                alias: App

And no doctrine without DoctrineMigrations


Serialization is used to convert entities from one format to another and has proven its necessity in almost every one of our projects. Install serializer by composer require symfony/serializer, add serializer config in framework.yml and create config/serialization to store yml config files:

config/packages/framework.yml
serializer:
   enabled: true
   mapping:
       paths: ['%kernel.project_dir%/config/serialization/']

For every one of your entities, configure how it should be serialialized. E.g. for a user entity:

config/serialization/User.yml
App\Entity\User:
   attributes:
       id:
           groups: [ 'public' ]
       identifier:
           groups: [ 'public' ]
       roles:
           groups: [ 'public' ]

Oh.. and don’t forget to setup some PHPUnit Tests