[PHP][Laravel5.5] Protectedにconfigから取得した値を宣言できない。

概要

Protectedにconfigから取得した値を宣言できない。

クラスのメンバ変数はプロパティであり、定数値である必要がある。
コンストラクタで変数を定義すれば動く。

引用

クラスのメンバ変数のことを「プロパティ」といいます。 それ以外に「属性」「フィールド」などという呼びかたを見たことがあるかもしれません。 しかし、このマニュアルでは「プロパティ」と呼ぶことにします。 プロパティを定義するには public、protected あるいは private のいずれかのキーワードのあとに通常の変数の宣言を続けます。 宣言時に初期値を設定することもできますが、初期値は定数値でなければなりません。 つまり、コンパイル時に評価可能な値でなければならず、 実行時の情報がないと評価できない値であってはいけないということです。
http://php.net/manual/ja/language.oop5.properties.php

エラー

Constant expression contains invalid operations

 

翻訳

定数式に無効な操作が含まれています 
 

発生ソースコード

<?php
use App\Http\Controllers\Controller;

class LoginController extends Controller
{
    protected $maxLoginAttempts = config('conf.max_login_attempts');
    protected $decayMinutes = config('conf.decayMinutes');
}

 

解決ソースコード

<?php
use App\Http\Controllers\Controller;

class LoginController extends Controller
{
    protected $redirectTo = '/';
    protected $maxLoginAttempts;
    protected $decayMinutes;

    public function __construct()
    {
        $this->maxLoginAttempts = 5;
        $this->decayMinutes = 60;
    }

    protected function hasTooManyLoginAttempts(Request $request)
    {
        return $this->limiter()->tooManyAttempts(
            $this->throttleKey($request), $this->maxLoginAttempts, $this->decayMinutes
        );
    }
}
管理ユーザー / 2018-09-17 / 146 / 0
このエントリーをはてなブックマークに追加

まだコメントがついていません。

ログイン不要でコメントの投稿ができます。