Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php laravel 5-跨控制器共享变量(不渲染视图)_Php_Laravel_Laravel 5 - Fatal编程技术网

Php laravel 5-跨控制器共享变量(不渲染视图)

Php laravel 5-跨控制器共享变量(不渲染视图),php,laravel,laravel-5,Php,Laravel,Laravel 5,我有一个用Laravel开发的小应用程序,我想在所有控制器之间共享一个变量(来自远程服务的结果,缓存) 我读过关于ViewComposer的文章,但它们唯一有效的方法是呈现视图(有意义),并且我的应用程序有许多json响应 我知道传统上我可以从BaseController扩展我的控制器,但我想知道是否有人知道一种不依赖继承的方法来实现这一点。将结果放入负责缓存的对象中,您可以在构造函数或特定的路由方法中将该类DI到控制器中 (如果您使用的是laravel的缓存服务,则无需额外工作即可注入该服务。

我有一个用Laravel开发的小应用程序,我想在所有控制器之间共享一个变量(来自远程服务的结果,缓存)

我读过关于ViewComposer的文章,但它们唯一有效的方法是呈现视图(有意义),并且我的应用程序有许多json响应


我知道传统上我可以从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会话中(值)
。希望这有帮助。