greabock/maker

Laravel 5.4 maker

1.1.1 2017-01-29 18:28 UTC

This package is auto-updated.

Last update: 2024-12-09 14:28:39 UTC


README

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.