通过 app->make() 将变量传递到构造函数中



我有一个存储库和一个雄辩的存储库,请参阅代码。现在我想通过 app->make() 将 var 传递到构造函数中

这可能吗,我怎样才能实现?

AppServiceProvoder:

app()->bind(TestRepository::class, EloquentTestRepository::class);

应用:

app()->(TestRepository::class)->getItem(TestModel::TEST_ITEM);
class EloquentTestRepository implements TestRepository {
    __construct($var){
        // do something with the $var
    }
}

尝试:

app()->(TestRepository::class,['test'])->getItem(TestModel::TEST_ITEM);
public function __construct(  $test)
{
    echo $test;
}
Error:
IlluminateContractsContainerBindingResolutionException: Unresolvable dependency resolving [Parameter #0 [ <required> $test ]] 

溶液:在应用服务提供商中:

    app()->bind(FrequentieRepository::class,
        function($test){
            return new EloquentTestRepository($test);
        });

第二个参数可以是参数数组,请在此处检查。

照明/基础/应用

/**
 * Resolve the given type from the container.
 *
 * (Overriding Container::make)
 *
 * @param  string  $abstract
 * @param  array  $parameters
 * @return mixed
 */
public function make($abstract, array $parameters = [])
{
    $abstract = $this->getAlias($abstract);
    if (isset($this->deferredServices[$abstract]) && ! isset($this->instances[$abstract])) {
        $this->loadDeferredProvider($abstract);
    }
    return parent::make($abstract, $parameters);
}

最新更新