You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP警告:FPDF方法声明与tFPDF不兼容,修复无效求助

解决FPDF与tFPDF方法签名不兼容的PHP警告

这是典型的PHP方法签名兼容性警告——你的FPDF类继承自tFPDF,但SetDrawColor()和SetFillColor()方法的参数声明和父类tFPDF的规则不匹配,触发了PHP的兼容性检查机制。

问题根源

tFPDF里的这两个方法设计了带默认值的参数,支持两种调用场景:

// tFPDF中的方法定义
function SetDrawColor($r, $g = NULL, $b = NULL);
function SetFillColor($r, $g = NULL, $b = NULL);

既可以传入单个值(表示灰度),也可以传入三个值(表示RGB颜色)。而你的card_pdf.php第10行的FPDF类中,这两个方法的参数列表没有对齐父类的规则——比如可能只定义了单个参数$r,没有设置$g和$b的默认值,所以PHP抛出了兼容性警告。

修复步骤

  1. 打开/Applications/MAMP/htdocs/squid/lib/card_pdf.php,定位到第10行对应的FPDF类,找到SetDrawColor()和SetFillColor()方法。
  2. 修改方法的参数声明,完全匹配tFPDF的定义,同时兼容原有逻辑:
    // 修复SetDrawColor方法
    function SetDrawColor($r, $g = NULL, $b = NULL) {
        // 兼容灰度值传入的场景
        if ($g === null && $b === null) {
            // 保留你原有灰度处理逻辑,或直接调用父类方法
            parent::SetDrawColor($r);
        } else {
            // 支持RGB颜色传入的场景
            parent::SetDrawColor($r, $g, $b);
        }
    }
    
    // 同理修复SetFillColor方法
    function SetFillColor($r, $g = NULL, $b = NULL) {
        if ($g === null && $b === null) {
            parent::SetFillColor($r);
        } else {
            parent::SetFillColor($r, $g, $b);
        }
    }
    
  3. 保存文件后重新运行代码,警告应该就会消失。

额外提示

如果你的FPDF类是基于第三方库修改的,建议不要直接修改核心类文件,而是创建一个自定义子类来重写这两个方法,这样后续更新库文件时不会丢失你的修改。

内容的提问来源于stack exchange,提问作者Patrick DiNapoli

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:30:51