如何让仅支持PHP 8的Google2FA代码兼容PHP 7?
PHP7兼容修改方案
错误原因
- 命名参数语法不支持:
get:、set:这种键值对传参是PHP 8.0新增特性,PHP 7全版本都不支持。 - 箭头函数兼容性限制:
fn()箭头函数是PHP 7.4引入的,若要兼容PHP 7.0-7.3,必须替换为传统匿名函数。
修改后的代码
protected function google2faSecret(): Attribute { return new Attribute( function ($value) { return decrypt($value); }, function ($value) { return encrypt($value); } ); }
注意事项
- 需确保
Attribute类的构造函数参数顺序为$get在前、$set在后,若实际参数顺序不同,请对应调整匿名函数的传参顺序。 - 如果
decrypt和encrypt是当前类的成员方法,需在调用时添加$this->,例如return $this->decrypt($value);。
内容的提问来源于stack exchange,提问作者shahjr
相关产品推荐
相关产品推荐

