Skip to content

Silex with injectable interfaces for middleware & a one-controller-per-route structure

License

Notifications You must be signed in to change notification settings

clearbooks/dilex

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

70 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Dilex

Rationale

Dilex is an extension of Symfony to provide custom ContainerInterop compatibility and a Silex-like interface. You can specify a custom fallback container, which will be used when an entry cannot be resolved by Symfony's container.

Usage

$environment = 'dev';
$debug = true;
$container = new DependencyInjectionContainer(); // replace with your real DI initialisation code
$application = new \Clearbooks\Dilex\Dilex( $environment, $debug, $container );

Once the application has been instantiated you can create Endpoint classes to be executed for a given API route. Here's a simple example.

namespace Your\Organisation\Endpoint;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Clearbooks\Dilex\Endpoint;

class ExampleEndpoint implements Endpoint
{
    public function execute( Request $request )
    {
        return new JsonResponse( ['hello' => 'world'] );
    }
}

While the above example has no constructor the main benefit of Dilex is that the endpoint will be instantiated through your DI container of choice, so you can inject dependencies into the constructor of the Endpoint per your DI container documentation.

You can then associate your Endpoint implementation with an API route using Dilex's get method.

use Your\Organisation\Endpoint\ExampleEndpoint;
/*
 * Initialisation code above skipped
 */
$application->get( '/', ExampleEndpoint::class );

Credits

stamp_small

Disclaimer

THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

About

Silex with injectable interfaces for middleware & a one-controller-per-route structure

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages