如何在Laravel中设置全局变量?

时间:2018-01-10 13:52:30

标签: php laravel global-variables

我正在开发一个应用程序,我想用CURL获取一些数据,我正在使用Guzzle来获取这些信息。在每个请求中,我需要放置参数api_token。我没有请求的问题,但我需要创建一个全局变量或配置这个值。我的问题是:我如何定义这些值,并在我提出的每个请求中使用它们之后?

    $response = $client->request('POST', 'https://api.iugu.com/v1/payment_token?api_token=API_TOKEN', [
      'json' => [
          'account_id' => $account_id,
          'method' => $method,
          'test' => true,
          'data' => [[
            'number' => $number,
            'verification_value' => $verification_value,
            'first_name' => $first_name,
            'last_name' => $last_name,
            'month' => $month,
            'year' => $year
          ]]
      ]
    ]);

当我用纯PHP创建项目时。我用这个:

require 'environment.php';

$config = array();

if(ENVIRONMENT == 'development') {
    define("BASE_URL", "http://localhost/plans/");
    define("ACCOUNT_ID", "SECRET");
    define("ACCESS_TOKEN", "SECRET");
    $config['db_name'] = 'SECRET';
    $config['host'] = 'localhost';
    $config['db_user'] = 'root';
    $config['db_password'] = 'xrb55sjd';
} else {
    define("BASE_URL", "http://www.blablabla/test");
    define("ACCOUNT_ID", "SECRET");
    define("ACCESS_TOKEN", "MY_TOKEN");
    $config['db_name'] = 'INSERIR DATABASE';
    $config['host'] = 'INSERIR HOST';
    $config['db_user'] = 'INSERIR USUARIO';
    $config['db_password'] = 'INSERIR SENHA';
}

global $database;

try {
    $database = new PDO("mysql:dbname=".$config['db_name'].";host=".$config['host'], $config['db_user'],$config['db_password']);
} catch (Exception $ex) {
    echo "Erro: ".$ex->getMessage();
    exit;
}

environment.php

<?php

define("ENVIRONMENT", "development");
//define("ENVIRONMENT", "production");

2 个答案:

答案 0 :(得分:6)

所有这些值都应该在您的.env文件中。然后,您需要使用env() helper:

在配置文件中读取这些值
'variable' => env('SOME_DATA'),

然后,您将能够全局使用这些值:

config('config_file.variable')

答案 1 :(得分:2)

对于全局变量,您可以在constants.php文件夹中创建config之类的文件。

constants.php内部文件中,您可以定义全局变量api_token,如下所示:

<?php
return [
    'api_token' => env('API_TOKEN','https://api.iugu.com/v1/payment_token?api_token=API_TOKEN'),
];
?>

您现在可以使用以下两个功能之一访问此变量:

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

对于Blade文件,请执行以下操作:

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

其他替代方法是在位于Controllers文件夹的__construct文件中的Controller.php函数中设置全局变量,如下所示:

class Controller extends BaseController
{
    public $api_token;

    public function __construct(){
    $this->api_token = "https://api.iugu.com/v1/payment_token?api_token=API_TOKEN";
}

我不完全从您的问题中了解您要将api_tokenENVIRONMENT作为全局变量,但这两种解决方案都可以解决您的问题。

相关问题