Skip to content

strangebuzz/MicroSymfony

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

MicroSymfony 🎢

Latest Version PHP Version Require level Software License Build Status (GitHub) Code Coverage Scrutinizer Code Quality Quality Score

About πŸ–‹

MicroSymfony is a Symfony 7.2 application skeleton on steroids, ready to use.

I have made a long blog post explaining the philosophy behind and how to use it:

If you want to use the last Symfony 6.4 LTS version in your composer.json file, replace all occurrences of 7.1 with 6.4 and run composer up.

Table of Contents πŸ“–

Demos 🌈

Because a live demo is always better than all explanations:

Quick-start ⚑

With the Symfony binary 🎢

You must have the Symfony binary and composer installed locally.

To create a new project from the GitHub template, run:

composer create-project strangebuzz/microsymfony && cd microsymfony

Then start the PHP server with make:

make start

Or with Castor:

castor start

Open https://127.0.0.1:8000 (considering your 8000 port is free) and enjoy! πŸ™‚

With FrankenPHP πŸ§Ÿβ€

We can also use FrankenPHP to run MicroSymfony. You must have Docker installed locally.

Create a new project from the GitHub template, run:

docker run --rm -it -v $PWD:/app composer:latest create-project strangebuzz/microsymfony && cd microsymfony

Install the FrankenPHP Symfony runtime:

docker run --rm -it -v $PWD:/app composer:latest require runtime/frankenphp-symfony

Then run:

docker run \
    -e FRANKENPHP_CONFIG="worker ./public/index.php" \
    -e APP_RUNTIME=Runtime\\FrankenPhpSymfony\\Runtime \
    -v $PWD:/app \
    -p 80:80 -p 443:443 \
    -d \
    dunglas/frankenphp

Open https://localhost and enjoy! πŸ™‚

PS: On Windows, replace $PWD with "%cd%".

You can also directly use the FrankenPHP branch.

Requirements βš™

Optional requirements βš™

  • The Xdebug PHP extension if you want to run the code coverage report
  • Castor task runner if you don't want to use Make and its Makefile

Stack πŸ”—

Features πŸš€

MicroSymfony ships these features, ready to use:

Feature branches πŸš…

Feature branches are not merged in the main branch but are used to test the integration of a new vendor library or make a POC. For example, have you ever dreamed of testing Eloquent, the Laravel ORM, on a Symfony project? Then clone the eloquent branch, and run composer install && make load-fixtures.

Infrastructure

  • FrankenPHP (PR, branch, rebased on 2024-11-17)
  • Symfony-docker (PR, branch, rebased on 2024-11-17)

Database πŸ’½

These Β« database Β» branches aim to display a list of records from a SQLite database.

  • Doctrine DBAL (PR, branch, rebased on 2024-11-17)
  • Eloquent ORM (PR, branch, rebased on 2024-11-17)

Tooling πŸ”¨

  • Taskfile (PR, branch, rebased on 2024-11-17)
  • TwigStan (PR, branch, rebased on 2024-11-17)
  • Twig-CS-Fixer (PR, branch, rebased on 2024-11-21)

One will rebase those branches regularly so they are always up to date.

Notes πŸ“’

Symfony-UX

Turbo forms are disabled in assets/app.js. To enable the feature for a given form, add the data-turbo="true" attribute to it. Or change the parameter Turbo.setFormMode to on to activate the feature globally. In both cases, your controller code has to be modified accordingly.

PHP configuration files

If you install a new Symfony library, the flex recipes can add YAML files to your project. These YAML files are loaded, but you can convert them to PHP like the other configuration files. For example, to convert the messenger YAML configuration to PHP with Simplify, run:

vendor/bin/config-transformer convert config/packages/messenger.yaml

Other good practices πŸ‘Œ

References πŸ“š

Contributing 🀝

Please see CONTRIBUTING and CODE_OF_CONDUCT for details.

Security 🧯

Please see SECURITY for details.

Credits πŸ™

License βš–οΈ

The MIT License (MIT). Please see License File for more information.