Home

Awesome

This is an example of interoperability between frameworks through framework-agnostic modules.

composer install
php -S localhost:8000 -t web

What?

This is one application composed of 3 modules, each one using a different framework:

How it works

A module can provide one or more of the followings:

When the application is constructed, it will build a root DI container to which all the module's containers will be chained.

Then, HTTP/CLI applications can be built using the root container (not the module's container), which allows to access all the entries of all the container's.

How to write a module

You start by writing a class that extends Interop\Framework\Module:

namespace Acme\BlogModule;

class BlogModule extends Module
{
    public function getName()
    {
        return 'blog';
    }

    /**
     * You can return a container if the module provides one.
     *
     * It will be chained to the application's root container.
     *
     * @return ContainerInterface|null
     */
    public function getContainer()
    {
        return null;
    }

    /**
     * You can return an HTTP application if the module provides one.
     *
     * @return HttpKernelInterface|null
     */
    public function getHttpApplication()
    {
        return new HttpApplication();
    }
}

HTTP applications can be any class implementing Symfony's HttpKernelInterface.

Containers can be any class implementing Interop\Container\ContainerInterface.