gonzalo123 / injector
InjectorServiceProvider
1.0
2015-09-20 11:25 UTC
Requires
- silex/silex: ^1.3
This package is not auto-updated.
Last update: 2024-12-17 04:26:43 UTC
README
Alternative way to define service providers in Silex
Let's say we've got this Math class
namespace Foo class Math { public function sum($i, $j) { return $i+$j; } }
And we want to use it within a Silex application
include __DIR__ . "/../vendor/autoload.php"; use Silex\Application; use Foo\Math; $app = new Application(['debug' => true]); $app['math'] = function () { return new Math(); }; $app->get("/", function () use ($app) { return $app['math']->sum(1, 2); }); $app->run();
We have one Service available in $app['math']
, but, what's the type of the class? We need to inspect Math
class to figure out what public functions are available.
Sometimes I'm a bit lazy to do that, and because of that I've developed this small service provider to allow us to use a different approach to define our service providers.
include __DIR__ . "/../vendor/autoload.php"; use Silex\Application; use Injector\InjectorServiceProvider; use Foo\Math; $app = new Application(['debug' => true]); $app->register(new InjectorServiceProvider([ 'Foo\Math' => 'math', ])); $app['math'] = function () { return new Math(); }; $app->get("/", function (Math $math) { return $math->sum(1, 2); }); $app->run();
And that's all. Our InjectorServiceProvider
allows us to define the class provided by the service provider, and its Silex/Pimple key name in the Dependency Injection Container