Skip to content

greabock/maker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Build Status

Intention (DEPRECATED)

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.