我有一个用Laravel开发的小型应用程序,我想在所有控制器上共享一个变量(远程服务的结果,缓存)。laravel 5 - 在控制器之间共享变量(不渲染视图)
我阅读了关于ViewComposer,但他们只工作是一个视图呈现(有意义),而我的应用程序有很多json响应。
我知道我可以传统上从BaseController扩展我的控制器,但我不知道是否有人知道一种方式来做到这一点,而不依赖于继承。
我有一个用Laravel开发的小型应用程序,我想在所有控制器上共享一个变量(远程服务的结果,缓存)。laravel 5 - 在控制器之间共享变量(不渲染视图)
我阅读了关于ViewComposer,但他们只工作是一个视图呈现(有意义),而我的应用程序有很多json响应。
我知道我可以传统上从BaseController扩展我的控制器,但我不知道是否有人知道一种方式来做到这一点,而不依赖于继承。
将该结果放入一个负责缓存的对象中,您可以将该类直接插入控制器 - 无论是在构造函数中,还是在特定的路由方法中。
(如果你使用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; });
可以声明的变量和/或功能基础控制器中的远程服务。
而且在扩展主控制器的控制,你可以使用这样的:
$这个 - >的varName;
如果它被缓存了,你可以通过'Cache :: get('yourvar')'来访问它,无论你需要它吗? –
在会话中设置变量。 'Session :: put(key,value)'然后'Session :: get(value)或者5.x session(value)'。希望这个帮助。 – mdamia