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
相关产品推荐
相关产品推荐

