oop — расширение класса PHP TCPDF

В примере 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"

1

Решение

Проблема в том, что вы расширяете класс, который еще не загружен. Обратный порядок ваших определений классов.

Если вы включите error_reporting(E_ALL) Вы должны увидеть некоторые ошибки, похожие на:

«Неустранимая ошибка: класс« Три »не найден в пути / к / файлу в строке x»

Так что, просто поменяв их, следует решить:

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;
}
}
0

Другие решения

У меня был этот код

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

в

Class One extends \TCPDF

фактически наличие двух экземпляров TCPDF !!

Все снова замечательно. Какое-то время это так. Спасибо.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector