【问题标题】:Laravel - AppServiceProvider is not calledLaravel - 不调用 AppServiceProvider
【发布时间】:2015-02-23 14:46:36
【问题描述】:

我尝试在 Laravel AppServiceProvider 中绑定一些服务,但服务没有绑定。我认为,AppServiceProvider 甚至没有被调用。实际上,我做了一个新的,它可以工作。

所以我的问题是,我做错了吗?还是没有调用 AppServiceProvider?

【问题讨论】:

  • 如果服务提供者注册在config/app.php,它应该被调用。要说更多,我需要查看您的代码
  • 这个提供者在 Laravel 中作为默认提供者,我的意思是,这个提供者不是我的,我只是尝试在其中添加更多绑定。
  • 我很清楚这一点。
  • 我没有使用这个提供者,所以有什么,我应该怎么做?
  • 首先,检查它是否真的没有被调用(在register方法中添加dd('test'))。其次,将您的代码添加到问题中。

标签: laravel


【解决方案1】:

Laravel 预编译某些基本用于每个请求的类。这服务于性能优化的目的。要编译的文件可以在files 下的config/compile.php 中指定。 default one 看起来像这样:

'files' => [
    realpath(__DIR__.'/../app/Providers/AppServiceProvider.php'),
    realpath(__DIR__.'/../app/Providers/BusServiceProvider.php'),
    realpath(__DIR__.'/../app/Providers/ConfigServiceProvider.php'),
    realpath(__DIR__.'/../app/Providers/EventServiceProvider.php'),
    realpath(__DIR__.'/../app/Providers/RouteServiceProvider.php'),
],

在未启用调试(或使用--force 选项)运行php artisan optimize 时,那些列出的文件和其他框架类将被写入storage/framework/compiled.php

这意味着,如果您更改其中一个预编译文件,则不会立即应用更改(如果存在 compiled.php),但仅在您再次运行 php artisan optimize 或运行 php artisan clear-compiled 以清除 compiled.php 后应用文件。

当然,您也可以从列表中删除AppServiceProvider 作为替代解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-26
    • 2016-09-19
    • 2017-09-17
    • 2022-11-18
    相关资源
    最近更新 更多