Starting New Symfony Project

First QA Run

Now we have PHPQA installed, we need to confirm that the current codebase is passing - at least up the level of Infection which will fail as there is basically no code and so no coverage

1
./bin/qa

Common Issues

Stan Issues

Kernel Boolean

find

1
        $container->setParameter('container.dumper.inline_class_loader', \PHP_VERSION_ID < 70400 || false !== ini_get('opcache.preload'));

replace

1
2
        $container->setParameter('container.dumper.inline_class_loader',
                                 \PHP_VERSION_ID < 70400 || false !== ini_get('opcache.preload'));

Prepare Next Commit

Once we have QA passing up to the level of infection, we should commit and push

Then add, commit and push

1
2
3
git add -A
git commit -am 'next commit - basic deps installed, QA running up to infection'
git push

Setting Up PHPStorm

Now we have a very basic bootstrapped symfony project, we need to properly set it up in PHPStorm to get the most out of it

You need to ensure you have all these extensions installed

Enable the Symfony Integration

By default this is disabled. To get the most out of the project, you should enable it by opening settings, searching for "symfony" and then ticking the box

You also need to make the following changes:

TODO - wrap this up

Configure PHPUnit

You need to be able to run single tests via PHPStorm

You should create a custom phpunit-phpstorm.xml in your qaConfig folder

This shoul be a copy of the standard one, but with the <logging> section entirely removed so that you don't waste CPU cycles building coverage reports for single tests.

Once you have created the file, you should configure PHPStorm to use it in the PHPUnit settings

Creating Services

The next thing you should do is start to create the services that your proejct is going to require

This means creating classes in your src folder and creating tests, generally in the tests/Small or if needs be, tests/Medium folders.

Your tests should extend from the AbstractServiceTest

You also need to make sure you have copied config/services.yml