【问题标题】:Laravel - require php script in a service providerLaravel - 在服务提供者中需要 php 脚本
【发布时间】:2018-04-15 06:18:27
【问题描述】:

我是 Laravel 的新手,我在 SO 上使用 this answer 为我的辅助函数实现了服务提供者。

建议:

在您新生成的注册函数中 HelperServiceProvider.php 添加如下代码

require_once app_path('Helpers/AnythingHelper.php');

但是,Laravel docs 声明 register 方法只能用于将事物绑定到容器中:

如前所述,在 register 方法中,您应该只 将事物绑定到服务容器中。你永远不应该尝试 注册任何事件侦听器、路由或任何其他 register 方法中的功能。

在我的情况下,应用程序按原样运行,需要在 register 函数中声明,所以我的问题更多是关于“最佳实践”而不是使代码正常工作。

问题:

这是一种好的/可接受的方法(在 register 方法中的 require 语句),还是我应该将 require 语句移到 boot 方法中?

【问题讨论】:

    标签: php laravel laravel-5 composer-php laravel-5.5


    【解决方案1】:

    如果您只放方法(而不是类),推荐的方法:

    1. 随时随地创建文件
    2. composer.json 中确保将此文件添加到files 键中autoload 中,如下所示:

      "autoload": {
          // here other autoload things
      
          "files": ["app/Helpers/AnythingHelper.php"]
      },
      
    3. 运行composerdump-autoload`

    对于类显然你应该使用标准的 PSR-4 自动加载

    【讨论】:

    • 所以你会说完全放弃服务提供者的方法来处理辅助函数之类的事情,并通过 composer 来处理它,对吧?
    • 如果您有简单功能的文件,我认为使用服务提供者没有任何意义,您可以使用 composer 自动加载这些文件。在 Laravel 中对帮助文件也是如此。看看github.com/laravel/framework/blob/5.5/composer.json你就会看到src/Illuminate/Foundation/helpers.php"是这样加载的
    • 有道理,我会通过composer来处理它:)但理论上假设我想将它保留在服务提供中,是否应该将require语句移至引导方法?我只是想确保我在这方面正确理解了文档——除了将东西(即使用绑定、单例、实例等应用程序的方法)绑定到容器之外,我正在做任何事情,这是注册方法中的一个大“不” ?默认情况下是否应该将其他任何内容移至引导方法?
    猜你喜欢
    • 2016-03-15
    • 1970-01-01
    • 2016-12-21
    • 2015-10-24
    • 2016-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-11
    相关资源
    最近更新 更多