2017-01-19 5 views
1

TCPDF 예제 002는 확장 클래스의 사용자 정의 머리글/바닥 글 메소드를 보여줍니다. 그것은 잘 작동합니다.PHP 클래스 확장 TCPDF

나는 또 다른 파일에서 다른 파일

Class Two extends One{ 
    public function Header(){ 
    die; 
    } 
    public function Footer(){ 
    die; 
    } 
} 

에서보다 일반적인 클래스 계층에게

파일

Class Three extends Two{ 
    public function Header(){ 
    die; 
    } 
    public function Footer(){ 
    die; 
    } 
} 

하나에서이

Class One extends TCPDF{ 
    public function Header(){ 
    die; 
    } 
    public function Footer(){ 
    die; 
    } 
} 

어디에서 (클래스 1, 2 또는 3) 내가 함수를 넣을 때 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" 
+0

'Header()'메소드와 호출하는 데 사용하는 코드를 보여주십시오. – BizzyBob

답변

0

문제는 아직로드되지 않은 클래스를 확장하는 것입니다. 클래스 정의의 순서를 반대로하십시오.

당신이 error_reporting(E_ALL)을 설정하면 다음과 유사한 몇 가지 오류가 나타납니다 : 그래서 그냥 반전

"Fatal error: Class 'Three' not found in path/to/file on line 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

귀하의 댓글 evades 날. 나는 새 삼자를 부른다. AddPage()를 호출하면 TCPDF :: Header()가 아닌 Three :: Header()가 호출되기를 바랍니다. 부모 클래스로드를 제어하지 않습니다! – Ephraim

+0

'error_reporting (E_ALL)'을 켜면 오류가 표시됩니다. – BizzyBob

+0

오류가 없습니다. 기본 (상위) 헤더는 표시되지만 사용자 정의 (하위) 헤더는 표시되지 않습니다. – Ephraim

0

를이 코드를했다

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

in

Class One extends \TCPDF 

사실상 두 개의 TCPDF 인스턴스가 있습니다!

다시 멋진 소식입니다. 잠시 동안입니다. 고마워.