Package Data | |
---|---|
Maintainer Username: | greabock |
Maintainer Contact: | greabock@gmail.com (Greabock) |
Package Create Date: | 2017-01-29 |
Package Last Update: | 2017-07-04 |
Language: | PHP |
License: | MIT |
Last Refreshed: | 2024-11-16 15:01:36 |
Package Statistics | |
---|---|
Total Downloads: | 12,265 |
Monthly Downloads: | 0 |
Daily Downloads: | 0 |
Total Stars: | 18 |
Total Watchers: | 4 |
Total Forks: | 1 |
Total Open Issues: | 0 |
Deprecated scince v5.4.16. Use method makeWith()
instead
Laravel 5.4 had severely crippled DI container.
The container's make method no longer accepts a second array of parameters. This feature typically indicates a code smell. Typically, you can always construct the object in another way that is more intuitive.
This library intends to bring back its former glory.
#Installation
composer require greabock/maker
After updating composer, add the Greabock\Maker\MakerServiceProvider::class
to the providers
array in config/app.php
#Usage
app(Maker::class)->make(Some::class, ['foo' => 'some', 'bar' => 'other'])
// or
make(Some::class, ['foo' => 'some', 'bar' => 'other']);
You can also bind closure:
use Illuminate\Contracts\Container\Container;
use Greabock\Maker\Maker;
app(Maker::class)->bind(Some::class, function(Container $container, $parameters){
$some = $container->make(Some::class);
$some->doSomeThing($parameters);
return $some;
});
#Warning!
This function is similiar but isn't fully compatible with old App::make()
.
Contextual binding does not work when you build objects with Maker.