在Laravel上的中间件文件中调用env常量

时间:2017-11-02 01:01:35

标签: php laravel laravel-5

我试图使用Laravel从中间件文件调用.env常量,但我只是得到Constant表达式包含无效操作。

这是我的实际代码:

<?php

namespace App\Http\Middleware;

use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware;

class VerifyCsrfToken extends Middleware
{
    /**
     * The URIs that should be excluded from CSRF verification.
     *
     * @var array
     */
    protected $except = [
        env("TELEGRAM_BOT_TOKEN") . '/webhook'
    ];
}

1 个答案:

答案 0 :(得分:2)

此错误表示类/对象属性的默认值必须在PHP中保持不变。这是因为它们的值是在编译/解析时确定的,而不是在运行时确定的。这意味着您不能调用任何函数。

但是,您可以在类的构造函数中执行此操作。将以下函数添加到 VerifyCsrfToken 类:

public function __construct(Application $app, Encrypter $encrypter) {
    parent::__construct($app, $encrypter);
    $this->except = [
      env("TELEGRAM_BOT_TOKEN") . '/webhook'
    ];
}

确保在文件开头有以下使用语句:

use Illuminate\Foundation\Application;
use Illuminate\Contracts\Encryption\Encrypter;