Php laravel 5-跨控制器共享变量(不渲染视图)
我有一个用Laravel开发的小应用程序,我想在所有控制器之间共享一个变量(来自远程服务的结果,缓存) 我读过关于ViewComposer的文章,但它们唯一有效的方法是呈现视图(有意义),并且我的应用程序有许多json响应Php laravel 5-跨控制器共享变量(不渲染视图),php,laravel,laravel-5,Php,Laravel,Laravel 5,我有一个用Laravel开发的小应用程序,我想在所有控制器之间共享一个变量(来自远程服务的结果,缓存) 我读过关于ViewComposer的文章,但它们唯一有效的方法是呈现视图(有意义),并且我的应用程序有许多json响应 我知道传统上我可以从BaseController扩展我的控制器,但我想知道是否有人知道一种不依赖继承的方法来实现这一点。将结果放入负责缓存的对象中,您可以在构造函数或特定的路由方法中将该类DI到控制器中 (如果您使用的是laravel的缓存服务,则无需额外工作即可注入该服务。
我知道传统上我可以从BaseController扩展我的控制器,但我想知道是否有人知道一种不依赖继承的方法来实现这一点。将结果放入负责缓存的对象中,您可以在构造函数或特定的路由方法中将该类DI到控制器中 (如果您使用的是laravel的缓存服务,则无需额外工作即可注入该服务。) 超级基本示例:
class CachedResult {
public function result() {
return 'woo! caching';
}
}
...
// in your controller...
public function someJsonRoute(CachedResult $result) {
$result->result();
}
...
// in your AppServiceProvider's register method
$this->app->singleton(CachedResult::class, function() { return new CachedResult; });
您可以在基本控制器中声明远程服务的变量和/或函数 在扩展基本控制器的控制器中,您可以这样使用它:
$this->varName 如果它是缓存的,您可以通过
Cache::get('yourvar')
在任何需要它的地方访问它?在会话中设置变量<代码>会话::放置(键,值)然后会话::获取(值)或在5.x会话中(值)
。希望这有帮助。