Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
路径和类名正确,但未能使用继承的PHP类_Php_Fpdf - Fatal编程技术网

路径和类名正确,但未能使用继承的PHP类

路径和类名正确,但未能使用继承的PHP类,php,fpdf,Php,Fpdf,我正在使用FPDF和WriteHTML脚本()将HTML转换为PDF 我已经在我的/lib/FPDF文件夹中下载了FPDF库以及WriteHTML脚本 那么/lib/fpdf文件夹中的内容是: /lib/fpdf/fpdf.php /lib/fpdf/html2pdf.php 然后我写下这段代码: require_once ('html2pdf.php'); $html_code = ''; // some HTML code here $pdf = new PDF_HTML(); $pdf

我正在使用FPDF和WriteHTML脚本()将HTML转换为PDF

我已经在我的
/lib/FPDF
文件夹中下载了FPDF库以及
WriteHTML
脚本

那么
/lib/fpdf
文件夹中的内容是:

/lib/fpdf/fpdf.php
/lib/fpdf/html2pdf.php
然后我写下这段代码:

require_once ('html2pdf.php');
$html_code = ''; // some HTML code here

$pdf = new PDF_HTML();
$pdf->AddPage();
$pdf->WriteHTML($html_code);
$pdf->Output(); 
这段简单的代码给出了以下错误:

Fatal error: Call to undefined method PDF_HTML::FPDF() in /home/***/html2pdf.php on line 52
下面是第52行的真正含义:

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

为什么我在正确阅读教程时收到了错误消息。为什么html2pdf脚本无法识别该方法?谢谢

错误说明了一切。您试图调用一个根本不存在的方法。我查看了
PDF\uhtml
类的源代码,实际上没有这样的方法

可用的方法有(+由FPDF类定义的方法):

  • PDF\u HTML()
    该类的构造
  • WriteHTML()
  • OpenTag()
  • CloseTag()
  • SetStyle()
  • PutLink()

看起来要么实例化了错误的类,要么调用了错误的函数。

错误说明了一切。您试图调用一个根本不存在的方法。我查看了
PDF\uhtml
类的源代码,实际上没有这样的方法

可用的方法有(+由FPDF类定义的方法):

  • PDF\u HTML()
    该类的构造
  • WriteHTML()
  • OpenTag()
  • CloseTag()
  • SetStyle()
  • PutLink()

看起来您实例化了错误的类或调用了错误的函数。

您只需将
html2pdf.php
中的函数
PDF\u HTML
重命名为
\u construct
(使其成为一个新样式的php构造函数),并用
父函数替换
$this->FPDF
:\u construct
(调用正确的函数):

说明: 问题在于,最新版本的
fpdf.php
(1.8)使用了新样式的构造函数(
\uu-construct
),而
script42.php
中的
PDF\u-HTML
尚未更新为使用新样式的构造函数(旧样式的构造函数是
ClassName

由于
PDF\u HTML
继承自
FPDF
$this->FPDF
应该被调用到父构造函数(请参阅),如果
FPDF
使用的是旧式构造函数,这将起作用:

class FPDF {
    // Constructor (in PHP < 5.3.3), Deprecated in PHP 7+
    public function FPDF () {

    }
}

class PDF_HTML {
    // Constructor (in PHP < 5.3.3)
    public function PDF_HTML () {
        $this->FPDF(); // Call to parent constructor
    }
}
function PDF_HTML($orientation='P', $unit='mm', $format='A4')
class FPDF {
    public function __construct () { }
}
不幸的是,
FPDF
1.8使用了新样式的构造函数:

class FPDF {
    // Constructor (in PHP < 5.3.3), Deprecated in PHP 7+
    public function FPDF () {

    }
}

class PDF_HTML {
    // Constructor (in PHP < 5.3.3)
    public function PDF_HTML () {
        $this->FPDF(); // Call to parent constructor
    }
}
function PDF_HTML($orientation='P', $unit='mm', $format='A4')
class FPDF {
    public function __construct () { }
}
因此,不能使用旧样式调用使用新样式定义的父构造函数



注意:如果您真的想像现在这样使用
script42.php
的代码,您应该尝试查找
fpdf.php
(fpdf 1.7使用旧式构造函数)的旧版本,并使用php版本
<7
,因为旧式构造函数在
php7+
中被弃用(并且在
php5.3.3+

说明: 问题在于,最新版本的
fpdf.php
(1.8)使用了新样式的构造函数(
\uu-construct
),而
script42.php
中的
PDF\u-HTML
尚未更新为使用新样式的构造函数(旧样式的构造函数是
ClassName

由于
PDF\u HTML
继承自
FPDF
$this->FPDF
应该被调用到父构造函数(请参阅),如果
FPDF
使用的是旧式构造函数,这将起作用:

class FPDF {
    // Constructor (in PHP < 5.3.3), Deprecated in PHP 7+
    public function FPDF () {

    }
}

class PDF_HTML {
    // Constructor (in PHP < 5.3.3)
    public function PDF_HTML () {
        $this->FPDF(); // Call to parent constructor
    }
}
function PDF_HTML($orientation='P', $unit='mm', $format='A4')
class FPDF {
    public function __construct () { }
}
不幸的是,
FPDF
1.8使用了新样式的构造函数:

class FPDF {
    // Constructor (in PHP < 5.3.3), Deprecated in PHP 7+
    public function FPDF () {

    }
}

class PDF_HTML {
    // Constructor (in PHP < 5.3.3)
    public function PDF_HTML () {
        $this->FPDF(); // Call to parent constructor
    }
}
function PDF_HTML($orientation='P', $unit='mm', $format='A4')
class FPDF {
    public function __construct () { }
}
因此,不能使用旧样式调用使用新样式定义的父构造函数



注意:如果您真的想像现在这样使用
script42.php
的代码,您应该尝试查找
fpdf.php
(fpdf 1.7使用旧式构造函数)的旧版本,并使用php版本
<7
,因为旧式构造函数在
php7+
中被弃用(并且在
php5.3.3+
)是你自己的类,如果是,它是如何定义的?不是,兄弟。PDF_HTML不是我的类。这是源代码:是
PDF\uhtml
你自己的类,如果是,它是如何定义的?不是,兄弟。PDF_HTML不是我的类。以下是源代码:我发现这个类有问题:。它有
PDF\u HTML
作为类名,也有
PDF\u HTML
作为方法名。一旦我将类名更改为
PDF2HTML
,就不再有错误消息了。我对PHP OOP还是新手,但使用类名作为方法名是否违法?我发现这个类有问题:。它有
PDF\u HTML
作为类名,也有
PDF\u HTML
作为方法名。一旦我将类名更改为
PDF2HTML
,就不再有错误消息了。我对PHP OOP还是新手,但是使用类名作为方法名是违法的吗?兄弟,你的解释让这个问题看起来很清楚。非常感谢你,我真的很感激。兄弟,你的解释让这个问题看起来很清楚。非常感谢,我真的很感激。