站点打开后未加载 Laravel 5.4 服务提供商

Posted

技术标签:

【中文标题】站点打开后未加载 Laravel 5.4 服务提供商【英文标题】:Laravel 5.4 Service Provider not loads after site opened 【发布时间】:2018-07-18 16:17:44 【问题描述】:

我在 Laravel 5.4 中有项目,我为他们创建了新的自定义类和服务提供者。并将此类绑定到服务提供者register 方法中的应用程序。并在 app.php 配置中编写此提供程序。但是在加载应用程序时它不会加载。我在自定义类 Helper__construct 方法中写了 Log,但是日志没有写入 laravel.log 文件,并且其他操作没有在这个 __construct 方法中执行。以下来自服务提供商的代码。

public function register()

    App::bind('helper', function() 
        return new Helper;
    );

【问题讨论】:

而在自定义类中,__construct 中的 Auth 不能正常工作,它可能是针对中间件的? 【参考方案1】:

为了确定,您在config/app.php 中注册了提供商,例如:

'providers' => [
    ...
    Full\Path\To\ClassServiceProvider::class,
    ...
 ]

绑定的时候应该是这样的:

public function register()

    App::bind('Full\Path\To\Class', function() 
        return new Helper;
    );

然后您可以将 helper 别名为您的班级全名:

App:alias('helper', 'Full\Path\To\Class');

【讨论】:

【参考方案2】:

你不需要绑定一个类或者创建一个别名,它会自动注册到容器中。只需创建一个类,运行composer du 命令并使用其完整的类名(包括命名空间)注入该类:

app('\App\SomeNamespace\Helper');

或者使用控制器构造函数,例如:

use App\SomeNamespace\Helper;
public function __construct(Helper $helper)

如果你想将它绑定到 helper 之类的东西上,你可以这样做:

app()->bind('helper', '\App\SomeNamespace\Helper');

然后使用它:

app('helper');

【讨论】:

以上是关于站点打开后未加载 Laravel 5.4 服务提供商的主要内容,如果未能解决你的问题,请参考以下文章

内部服务器错误 500 Laravel 5.4 AJAX

Laravel 5.4急切加载belongsToMany关系null绑定

从 5.3 升级到 5.4 显示空白站点

Laravel 5.4 - 如何对急切加载关系进行分页

Laravel 5.4 - Mix - 如何运行浏览器实时重新加载

Laravel 5.4 - 如何在 javascript 加载之前使 @section 屈服