在所有控制器中使用一个关联数组,一个用于定义它的位置? - Laravel 5.3

时间:2017-04-13 06:46:03

标签: laravel laravel-5 laravel-5.3

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

有点像我们的角色。

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

如果有办法,请告诉我。

3 个答案:

答案 0 :(得分:2)

  1. config/app.php

    中创建一个条目
    'myVar' => [
        'key' => 'value'
    ],
    
  2. 并通过config('app.myVar')

    进行访问
    1. 将其放入帮助文件并使用该帮助文件进行访问
    2. 查看此答案https://stackoverflow.com/a/32772686/5808894

      1. 使用AppServiceProvider
      2. app/providers/AppServiceProvider.php方法的boot中添加此内容,请务必在use App中导入应用AppServiceProvider

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

        使用app('myVar');

        访问控制器中的变量

        参考https://stackoverflow.com/a/25190686/5808894

答案 1 :(得分:2)

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

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

您可以将其用作:

SharedArrayContainer::$data

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

答案 2 :(得分:1)

我建议为它创建一个提供者类(服务),并使用laravel Service Container进行注入。通过这种方式,您可以创建辅助方法,如get,find等...并使用laravels依赖注入(无论何时何地注入单个实例)

Laravel docs

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

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

}