类Illuminate \ Support \ Manager

时间:2018-12-27 19:00:47

标签: php laravel

我正在尝试以最小的方式实现不带模板的Laravel。实际上,我想迁移Non-Laravel项目并逐步进行。

require_once __dir__ . '/../vendor/autoload.php';

$app = new Application($_ENV['APP_BASE_PATH'] ?? dirname(__DIR__));

$app->singleton(
    Illuminate\Contracts\Http\Kernel::class,
    App\Kernel::class
);

$app->singleton(
    Illuminate\Contracts\Debug\ExceptionHandler::class,
    App\Exceptions\Handler::class
);

$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);

$request = \Illuminate\Http\Request::capture();
$app->instance('request', $request);

$app->bootstrapWith($this->bootstrappers);

$app->boot();

除引导程序外,其他所有方法都可以正常工作

\Illuminate\Foundation\Bootstrap\RegisterProviders::class,

哪个将加载Illuminate\Support\Manager。通过深入研究,我发现Manager的构造函数是:

public function __construct($app)
{
    $this->app = $app;
}

Laravel无法解析$app的依赖项。但是,如果我用以下方法修补此构造函数,则它将起作用。

public function __construct(\Illuminate\Foundation\Application $app)

Laravel如何解决$app的依赖项注入,为什么在我的情况下不起作用?

3 个答案:

答案 0 :(得分:2)

这是指Laravel issue,这不是问题:)

不要问我为什么,但是您可能缺少以下提供程序:

Illuminate\Notifications\NotificationServiceProvider::class

答案 1 :(得分:0)

我也和你一样采用了山姆方式。我排除了非默认软件包并进行了升级,并得到了相同的错误。

您必须添加

  

Illuminate \ Notifications \ NotificationServiceProvider :: class

到您的

  

config / app.php

文件。 就我而言,这行得通。

答案 2 :(得分:-1)

您在类上下文之外使用<h1>a b c d &ouml;</h1>。我很惊讶没有抛出错误。复制的行位于您要在类上下文之外执行的Kernel类中