You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP语法错误求助:Session类构造函数public关键字异常排查

解决PHP语法错误:unexpected 'public' (T_PUBLIC)

错误原因

你在Session类的构造函数里使用了PHP 8.0引入的构造函数属性提升语法,但当前运行的PHP版本低于8.0,所以触发语法错误。PHP 7.x及更早版本不支持在构造函数参数前直接用public/protected/private来声明类属性。

解决方案

有两种方式解决:

方案1:升级PHP版本到8.0及以上

如果环境允许,直接将PHP升级到8.0或更高版本,原代码的语法就能正常运行。

方案2:改用传统的类属性声明+构造函数赋值写法

修改Session类的代码,先显式声明类属性,再在构造函数里赋值:

<?php

class Session
{
    // 显式声明类属性
    public string $username;
    public string $role;

    public function __construct(string $username, string $role)
    {
        // 构造函数内为属性赋值
        $this->username = $username;
        $this->role = $role;
    }
}

额外注意点

在SessionManager::getCurrentSession()方法里存在一个潜在笔误:
你先检查了$_COOKIE['TRPS-SESSION'],但后续获取的是$_COOKIE['X-PZN-SESSION'],两个Cookie名称不一致会导致JWT解析失败,建议统一为同一个名称:

if($_COOKIE['TRPS-SESSION']){
    $jwt = $_COOKIE['TRPS-SESSION']; // 改为与检查时一致的Cookie名
    // ... 后续解析代码
}

内容的提问来源于stack exchange,提问作者Agus Ariawan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 19:32:07