一个关联数组用于所有控制器,在一个地方定义它? - Laravel 5.3

One associative array used across all controllers, one place to define it? - Laravel 5.3

我有一个关联数组,我在大约所有控制器中都使用它,我想知道是否可以在一个地方的某个地方定义该数组并只在所有控制器中使用?

有点像我们在 angular 中所做的。

就像我可以在 env 文件或其他文件中定义它一样。

有办法请告诉我

我建议为其创建一个提供程序 class(服务)并使用 laravel 服务容器进行注入。通过这种方式,您可以创建 get、find 等辅助方法...并利用 laravels 依赖注入(无论何时何地几乎都可以注入单个实例)

Laravel docs

class ExampelService
{
    // associative array
    private arr = []

    public function get(item) {  }
    public function save(item) {  }
    public function has(item) {  }

}
  1. 正在 config/app.php

    中创建条目
    'myVar' => [
        'key' => 'value'
    ],
    

并通过 config('app.myVar')

访问它
  1. 将其放入帮助文件并使用该帮助文件访问

查看此答案

  1. 使用 AppServiceProvider

在你的 app/providers/AppServiceProvider.php 中的 boot 方法中添加这个,确保在 AppServiceProvider

中导入 App use App
public function boot()
{
    App::singleton('myVar', function(){
        return [
            'key' => 'value'
        ];
    });
}

并使用 app('myVar');

访问控制器中的变量

引用

在这里提到它,因为没有其他人这样做过:

public class SharedArrayContainer {
       public static $data = [ 'key' => 'value' ];        
}

您可以将其用作:

SharedArrayContainer::$data

不如将它添加到服务容器中,但这是我以前做的预框架。