TCPDF示例002显示了扩展类中的自定义页眉/页脚方法。效果很好。
我有一个更一般的类层次结构
在一个文件中
Class Three extends Two{
public function Header(){
die;
}
public function Footer(){
die;
}
}在另一个文件中
Class Two extends One{
public function Header(){
die;
}
public function Footer(){
die;
}
}在另一个文件中
Class One extends TCPDF{
public function Header(){
die;
}
public function Footer(){
die;
}
}无论我将函数Header()和Footer()放在哪里(类为1、2或3),它们都不会覆盖TCPDF中的基本方法。
有人能告诉我重写方法对我是如何失败的吗?从不访问die语句,并显示基本标头,因此我的重写不起作用。
更新:
get_declared_classes显示,所有类都按正确的顺序加载。
[316] => String(5) "TCPDF"
[317] => String(15) "TCPDF_FONT_DATA"
[318] => String(11) "TCPDF_FONTS"
[319] => String(12) "TCPDF_COLORS"
[320] => String(12) "TCPDF_IMAGES"
[321] => String(12) "TCPDF_STATIC"
[322] => String(24) "Drupal\pdf\One"
[323] => String(30) "Drupal\pdf\Two"
[324] => String(38) "Drupal\pdf\Three"发布于 2017-01-19 22:57:01
问题是,您正在扩展一个尚未加载的类。反转类定义的顺序。
如果打开error_reporting(E_ALL),您将看到一些类似于以下内容的错误:
“致命错误:在x行的path/to/file中找不到‘三’类”
因此,仅仅逆转它们就能解决这一问题:
include('TCPDF.php');
//In yet another file
Class One extends TCPDF
{
public function Header()
{
die;
}
public function Footer()
{
die;
}
}
//In another file
Class Two extends One
{
public function Header()
{
die;
}
public function Footer()
{
die;
}
}
//in one file
Class Three extends Two
{
public function Header()
{
die;
}
public function Footer()
{
die;
}
}发布于 2017-01-21 23:21:20
我有个密码
$pdf = new \TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);在……里面
Class One extends \TCPDF有效地拥有两个TCPDF实例!
一切又好起来了。有一段时间是。谢谢。
https://stackoverflow.com/questions/41753052
复制相似问题