2017-01-19 23 views
1

TCPDF例002は、拡張クラスのカスタムヘッダー/フッターメソッドを示しています。それはうまく動作します。PHPクラス拡張TCPDF

私は1つのファイルまた別のファイル

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" 
+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

あなたのご意見は私を避けています。私は新しいThree()を呼び出します。 AddPage()が呼び出されたとき、私はThree :: Header()がTCPDF :: 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の2つのインスタンスを効果的に持つ!!

もう一度素晴らしいです。それはしばらくの間です。どうも。