Repository presents Symfony project with multiple kernel approach.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
app
bin
src
tests/AppBundle/Controller
var
web
.gitignore
README.md
composer.json
composer.lock
phpunit.xml.dist

README.md

Symfony Multiple Kernels

Repository presents Symfony project with multiple kernel approach.

Multiple Kernels

Symfony Multiple Kernels allows you create many independent Kernels. Thanks to that you can: manage the bundles you use and separate configuration for every kernel.

Introduction

Let's assume your project has two parts:

  • api
  • admin

And just only for admin version you need to use Twig which is useless for api part. To achieve this you have to create two instances of AppKernel:

Those two classes extend from AppKernel. This way you can get separate bundle list for each kernel.

Configs, Sessions, Caches & Logs

To separate configuration, sessions, caches and logs you need overwrite AppKernel.php methods;

New directory structure

app

app/
├── .htaccess
├── AdminKernel.php
├── ApiKernel.php
├── AppCache.php
├── AppKernel.php
├── KernelFactory.php
├── Resources
│   └── views
├── autoload.php
└── config
    ├── admin
    └── api

cache

var/cache/
├── .gitkeep
├── admin
│   └── dev
└── api
    └── dev

sessions

var/sessions/
├── .gitkeep
├── admin
│   └── dev
└── api
    └── dev

logs

var/logs
├── .gitkeep
├── admin
│   ├── dev.log
│   └── prod.log
└── api
    ├── dev.log
    └── prod.log

Multiple parameters.yml

Separate parameters require custom parameters builder, and replacement in composer.json.

Switch between Multiple App Kernels

This action can be handle by exporting APP_NAME env like SYMFONY_ENV or by adding -a admin or --app-name=admin command's options. e.g. bin/console --app-name=admin