PHP 7:SessionHandlerInterface :: read(string $ session_id):string必须与SessionHandlerInterface :: read($ key)兼容

时间:2017-04-24 14:01:16

标签: php session php-7.1

使用PHP 7.1下的以下代码

class MySqlSessionHandler implements \SessionHandlerInterface   {
     public function read(string $session_id) : string  { ... }
}

我明白了:

  

致命错误:Sessions \ MySqlSessionHandler :: read声明(字符串   $ session_id):字符串必须兼容   SessionHandlerInterface ::读($键)

当我删除类型声明" string"而是喜欢

public function read($session_id) : string  { ... }

没有抛出任何异常。所有其他SessionHandlerInterface函数也会发生同样的情况。阅读PHP文档类型字符串应该是正确的。

有什么问题?

1 个答案:

答案 0 :(得分:1)

该函数的原始签名不包含输入,因此当您添加“字符串”时它是不同的签名,因此您要么将“字符串”添加到接口签名中,要么从实现中删除