2333 参考文章

在php 8.1 及以上版本中,直接运行上面的PDO代码会出现类似于:

Return type of TableRows::current() should either be compatible with RecursiveIteratorIterator::current(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in xxx

的报错,这是因为新版本的php在从标准库扩展类时,重载函数强制要求添加返回类型。将TableRows类作如下修改即可:

class TableRows extends RecursiveIteratorIterator { 
    function __construct($it) { 
        parent::__construct($it, self::LEAVES_ONLY); 
    } 
    function current(): string { 
        return "<td style='width:150px;border:1px solid black;'>" . parent::current(). "</td>"; 
    } 
    function beginChildren(): void { 
        echo "<tr>"; 
    } 
    function endChildren(): void { 
        echo "</tr>" . "\n"; 
    } 
}