抱歉,这是我的第一个问题。我是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中,我读了这篇文章:类成员变量可以被初始化...,但是此初始化必须是一个常数值-也就是说,它必须能够在编译时进行评估,并且必须不依赖于运行时信息才能进行评估。
我假设此规则未在我的代码中执行。我是对的?
您应该像这样在构造函数中分配属性
protected $user;
public function __construct()
{
$this->user = Auth::user();
}
或通过setters
...