PHP类扩展TCPDF

时间:2017-01-19 22:42:15

标签: php oop tcpdf extend

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(),它们都不会覆盖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"

2 个答案:

答案 0 :(得分:0)

问题是你正在扩展一个尚未加载的类。颠倒类定义的顺序。

如果您启用temporary,您应该会看到类似于以下错误:

  

"致命错误:班级'三'在x"

行的路径/到/文件中找不到

所以只需逆转它们就可以解决它:

error_reporting(E_ALL)

答案 1 :(得分:0)

我有这个代码

$pdf = new \TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);

in

Class One extends \TCPDF

有效地拥有两个TCPDF实例!!

一切都很精彩。有一段时间了。 THX。