2017-11-02 8 views
0

Laravelを使用してミドルウェアファイルから.env定数を呼び出しようとしていますが、Constant式には無効な操作が含まれています。Laravelのミドルウェアファイルのenv定数を呼び出します。

これは私の実際のコードです:

<?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' 
    ]; 
} 
+0

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

では、次の使用にファイルの先頭に文を持っていることを確認してください。そのような初期値を設定することはできません。 – lagbox

+0

また、設定ファイルの外で 'env'変数に触れないでください。 – lagbox

答えて

2

このエラーは、クラス/オブジェクトのプロパティのデフォルト値はPHPで一定になるように持っていることを意味します。これは、その値が実行時ではなくコンパイル/解析時に決定されるためです。これは、あなたが関数を呼び出すことは許されていないことを意味します。

ただし、これはクラスのコンストラクタで行うことができます。 VerifyCsrfTokenクラスに次の関数を追加します。式はコンパイル時に評価できないことを

use Illuminate\Foundation\Application; 
use Illuminate\Contracts\Encryption\Encrypter; 
関連する問題