在PHP Laravel控制器中定义和初始化类属性

问题描述 投票:0回答:1

抱歉,这是我的第一个问题。我是PHP和Laravel的新手。

我尝试为某些控制器定义属性,但出现错误:

Symfony \组件\调试\异常\ FatalErrorException(E_UNKNOWN)

常量表达式包含无效操作

这是我的控制器代码:

<?php

    namespace App\Http\Controllers\...;

    use Illuminate\Http\Request;
    use App\Http\Controllers\Controller;
    use App\Customer;
    use App\City;
    use Illuminate\Database\Eloquent\Builder;
    use Carbon\Carbon;

    use Illuminate\Support\Facades\Auth;

    class CatalogController extends Controller
    {
        protected $user = Auth::user();

        function user() {
           $user = optional(Auth::user())->load(['city']);
           return $user;
        }
    }

在php.net中,我读了这篇文章:类成员变量可以被初始化...,但是此初始化必须是一个常数值-也就是说,它必须能够在编译时进行评估,并且必须不依赖于运行时信息才能进行评估。

我假设此规则未在我的代码中执行。我是对的?

php laravel oop laravel-5.8
1个回答
0
投票

您应该像这样在构造函数中分配属性

protected $user;

public function __construct()
    {
        $this->user = Auth::user();
    }

或通过setters ...

© www.soinside.com 2019 - 2024. All rights reserved.