Skip to content
master
Switch branches/tags
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
src
 
 
 
 
 
 
 
 
 
 

README.md

Scrutinizer Code Quality Build Status Coverage Status

Utility factories for container-interop/service-provider

Work in progress.

This project is part of the container-interop group. It tries to find a solution for cross-framework modules (aka bundles) by the means of container-agnostic configuration.

Goal of this project

This project provides utility factories that can be used directly in service providers complying with the container-interop/service-provider standard.

Those common factories can be detected by compiled/cached containers. The aim of this package is to offer a common set of useful classes that can also be preprocessed by optimized containers for best performance.

Usage

Simply require this package in your package declaring your service-provider:

So far, the package has the thecodingmachine vendor name. It will hopefully be migrated to container-interop/common-factories

composer require thecodingmachine/common-factories

Then, you can use one of the 3 available classes:

Creating an alias

Use the Alias class to easily create an alias.

public function getFactories() {
    return [
        'myAlias' => new Alias('myService')
    ]
}

can easily replace:

public function getFactories() {
    return [
        'myAlias' => function(ContainerInterface $container) {
            return $container->get('myService');
        }
    ]
}

Creating a parameter

Use the Parameter class to put in the container a scalar (or array of scalar) entry:

public function getFactories() {
    return [
        'DB_HOST' => new Parameter('localhost')
    ]
}

can easily replace:

public function getFactories() {
    return [
        'DB_HOST' => function() {
            return 'localhost';
        }
    ]
}

Appending a service to an array of services

Use the AddToArray class to push a new service to an existing array:

public function getExtensions() {
    return [
        MyTwigExtension::class => function() {
            return new MyTwigExtension();
        },
        'twig.extensions' => new AddToArray(MyTwigExtension::class)
    ]
}

can easily replace:

public function getExtensions() {
    return [
        MyTwigExtension::class => function() {
            return new MyTwigExtension();
        },
        'twig.extensions' => function(ContainerInterface $container, array $extensions = []) {
            $extensions[] = $container->get(MyTwigExtension::class);
            return $extensions;
        }
    ]
}

About

This project provides utility factories that can be used directly in service providers complying with the container-interop/service-provider standard.

Resources

Packages

No packages published

Languages