我有一个使用Laravel开发的小应用程序,我想在所有控制器之间共享一个变量(来自远程服务的结果,缓存)。
我读到了关于ViewComposer的内容,但是它们只能运行一个视图(有意义),而且我的应用程序有很多json响应。
我知道我传统上可以从BaseController扩展我的控制器,但是我想知道是否有人知道如何在不依赖继承的情况下做到这一点。
答案 0 :(得分:2)
将该结果放入一个负责缓存的对象中,您可以将该类引入控制器 - 无论是在构造函数中还是在特定的路由方法中。
(如果你正在使用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; });
答案 1 :(得分:0)
您可以在基本控制器中声明远程服务的变量和/或函数。
在扩展基本控制器的控制器中,您可以像这样使用它:
$这 - >的varName;