PHP7:SessionHandlerInterface::read(字符串$session\u id):字符串必须与SessionHandlerInterface::read($key)兼容

PHP7:SessionHandlerInterface::read(字符串$session\u id):字符串必须与SessionHandlerInterface::read($key)兼容,php,session,php-7.1,Php,Session,Php 7.1,使用PHP7.1下的以下代码 class MySqlSessionHandler implements \SessionHandlerInterface { public function read(string $session_id) : string { ... } } 我得到: 致命错误:会话声明\MySqlSessionHandler::read(字符串 $session\u id):字符串必须与兼容 SessionHandlerInterface::read($ke

使用PHP7.1下的以下代码

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

致命错误:会话声明\MySqlSessionHandler::read(字符串 $session\u id):字符串必须与兼容 SessionHandlerInterface::read($key)

当我删除类型声明“string”时,就像

public function read($session_id) : string  { ... }
没有抛出异常。所有其他SessionHandlerInterface函数也是如此。读取PHP文档类型字符串应该是正确的


有什么问题吗?

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

我明白了-感谢您的快速回答。我将从我的实现中删除这实际上不是链接问题的副本。这个问题在用户定义的接口和类之间存在不匹配,而这个问题是由错误引起的。正式手册中记录的方法签名错误;此时,在实现
SessionHanderInterface
时不能使用类型声明。