我正在尝试以最小的方式实现不带模板的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
的依赖项注入,为什么在我的情况下不起作用?
答案 0 :(得分:2)
这是指Laravel issue,这不是问题:)
不要问我为什么,但是您可能缺少以下提供程序:
Illuminate\Notifications\NotificationServiceProvider::class
答案 1 :(得分:0)
我也和你一样采用了山姆方式。我排除了非默认软件包并进行了升级,并得到了相同的错误。
您必须添加
Illuminate \ Notifications \ NotificationServiceProvider :: class
到您的
config / app.php
文件。 就我而言,这行得通。
答案 2 :(得分:-1)
您在类上下文之外使用<h1>a b c d ö</h1>
。我很惊讶没有抛出错误。复制的行位于您要在类上下文之外执行的Kernel类中