在Laravel中的Class中获取/设置全局变量

时间:2017-06-07 08:40:20

标签: php laravel global-variables

我无法理解如何制作全局变量,以后我可以改变其价值并一次又一次地获取它? 我的控制器示例:

public function getProducts()
{
    // some stuff
    $products = SQLquery;
    config(['memoProducts' => $products]);
    $value = config('memoProducts');
    dd($value)//returns what I need

}

public function setProducts()
{
    //here I try to get $products from previous function
    $value = config('memoProducts');
    dd($value)//returns null
}

我的问题是什么?

PS:感谢你认为我是愚蠢的,并且整天都在贬低我的问题,尽管你的答案似乎没有任何帮助。非常感谢

3 个答案:

答案 0 :(得分:3)

设置和获取全局变量的方法有很多,其中一种设置为config

config(['app.timezone' => 'America/Chicago']);

并从config

中读取该值
$value = config('app.timezone', 'fallback value');

Documentation

修改

  

在运行时设置的配置值仅为当前请求设置,不会转移到后续请求。

因此您可以使用其他技术,例如Cache

public function setProducts()
{
    $products = SQLquery;
    Cache::put('products', $products, 60); // Third parameter is the time limit
}

public function getProducts()
{
    //here I try to get $products from previous function
    $products = Cache::get('products');
}

或使用Session

public function setProducts()
{
    $products = SQLquery;
    session(['products' => $products]);
}

public function getProducts()
{
    //here I try to get $products from previous function
    $products = session('products');
}

答案 1 :(得分:0)

您可以在config文件夹中创建constants.php文件。

return [

    'country_name' => env('COUNTRY_NAME','Bangladesh'),
    'city_name' => env('CITY_NAME','Dhaka')
];

您可以双向访问此变量

Config::get('constants.country_name')
config('constants.country_name')

for blade

{{ config('constants.country_name') }}

答案 2 :(得分:0)

有多种方法可以通过应用程序传递信息。首先,我们可以使用config()来设置和获取。

您可以选择使用session()来获取和设置。

您还可以向request()对象添加变量,例如request()->global_var = 'test'