一个关联数组用于所有控制器,在一个地方定义它? - 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 依赖注入(无论何时何地几乎都可以注入单个实例)
class ExampelService
{
// associative array
private arr = []
public function get(item) { }
public function save(item) { }
public function has(item) { }
}
正在 config/app.php
中创建条目
'myVar' => [
'key' => 'value'
],
并通过 config('app.myVar')
访问它
- 将其放入帮助文件并使用该帮助文件访问
查看此答案
- 使用 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
不如将它添加到服务容器中,但这是我以前做的预框架。
我有一个关联数组,我在大约所有控制器中都使用它,我想知道是否可以在一个地方的某个地方定义该数组并只在所有控制器中使用?
有点像我们在 angular 中所做的。
就像我可以在 env 文件或其他文件中定义它一样。
有办法请告诉我
我建议为其创建一个提供程序 class(服务)并使用 laravel 服务容器进行注入。通过这种方式,您可以创建 get、find 等辅助方法...并利用 laravels 依赖注入(无论何时何地几乎都可以注入单个实例)
class ExampelService
{
// associative array
private arr = []
public function get(item) { }
public function save(item) { }
public function has(item) { }
}
正在
中创建条目config/app.php
'myVar' => [ 'key' => 'value' ],
并通过 config('app.myVar')
- 将其放入帮助文件并使用该帮助文件访问
查看此答案
- 使用 AppServiceProvider
在你的 app/providers/AppServiceProvider.php
中的 boot
方法中添加这个,确保在 AppServiceProvider
use App
public function boot()
{
App::singleton('myVar', function(){
return [
'key' => 'value'
];
});
}
并使用 app('myVar');
引用
在这里提到它,因为没有其他人这样做过:
public class SharedArrayContainer {
public static $data = [ 'key' => 'value' ];
}
您可以将其用作:
SharedArrayContainer::$data
不如将它添加到服务容器中,但这是我以前做的预框架。