【问题标题】:FPDF - How to fix the "Fatal error: Call to undefined method PDF::FPDF()" Using Write_htmlFPDF - 如何使用 Write_html 修复“致命错误:调用未定义的方法 PDF::FPDF()”
【发布时间】:2023-10-19 07:38:01
【问题描述】:

我正在使用这个脚本http://fpdf.org/en/script/script50.php,但我收到了错误:

致命错误:在第 55 行的 MyPath/html_table.php 中调用未定义的方法 PDF::FPDF()

正是这个对FPDF 的调用引发了异常:

$this->FPDF($orientation,$unit,$format);

我不明白为什么,知道 pdf 类扩展了 FPDF 并且我的 fpdf.php 文件与 html_table.php 文件位于同一目录中,有什么办法可以解决这个问题错误?谢谢

【问题讨论】:

  • 不能这样调用父构造函数
  • @HankyPanky 我没有更改原始脚本中的任何内容。如果您知道我如何修复错误,非常欢迎您与我分享。谢谢

标签: php fpdf


【解决方案1】:

修复它。

我实际上需要更换:

$this->FPDF($orientation,$unit,$format);

作者:

$this->__construct($orientation,$unit,$format);

原始脚本有这个错误,所以任何想要使用该脚本的人都不要忘记先修复这个错误。祝你好运。

【讨论】:

  • 你不应该像那样直接调用构造函数。而是使用new Class($orientation, $unit, $format),其中Class 是您的实际班级的名称。
【解决方案2】:

我在您共享的脚本中的任何地方都找不到$this->FPDF。当你扩展一个类时,扩展的类在你扩展它的类的$this 中。 当您创建此类的新实例时,扩展类的构造函数将始终运行,除非您自己定义构造函数,正如您共享的脚本所示,您在 PDF 类中所做的那样。 如果你想运行你扩展的类的构造函数,你应该在扩展类的构造函数中使用parent::__construct(); 来执行此操作,它告诉 PHP 它此时应该运行父类(扩展类)的构造函数. 您共享的脚本中已经存在这种情况:

    //Call parent constructor
    parent::__construct($orientation,$unit,$format);

因此,当您运行new PDF() 时,它将调用 PDF 类的构造函数,该构造函数将调用 FPDF 的构造函数。 当您使用$this->__construct($orientation,$unit,$format); 行再次调用您的答案中提到的构造函数时,这将导致 PDF 构造函数被调用两次。

【讨论】: