2011-05-11 81 views
1

一般單獨的基類(模板)和派生類(數據)。

require('fpdf.php'); 

    $pdf=new FPDF(); 
    $pdf->AddPage(); 
    $pdf->SetFont('Arial','B',16); 
    $pdf->Cell(40,10,'Hello World!'); 
    $pdf->Output(); 

我要分開呢二級(基本和孩子(孩子做數據))

基類(目前輸出的模板)

require('fpdf.php'); 
class base{ 
    //TODO 
    function def(){ 
    $pdf=new FPDF(); 
    $pdf->AddPage(); 

    // the page header DO IN HERE 
     // ->DO IN Derived Class(leave derived to do with data) 
    // the page footer DO IN HERE 

    $pdf->Output(); 

    } 
} 

子類(操縱數據)

class child extends base{ 
     //TODO 
     function def(){ 

     $pdf->Cell(40,10,'Hello World!'); 
    } 

    } 

當呼叫將使用兒童班出pdf file

$obj_pdf = new child(); 
$obj_pdf->def(); 

我應該如何實現它?或者這是不可能的?

+1

FPDF已經可以幫助你方便頁眉/頁腳代。你看過這個教程嗎? http://www.fpdf.org/en/tutorial/tuto2.htm – gnud 2011-05-11 14:13:34

+0

+1 @gnud給你 – kn3l 2011-05-11 15:38:50

回答

1

你想在這裏完成的是一個包裝模式。我不知道這是否是您的問題的正確解決方案。繼承意味着增加子類中的複雜性,而不是擴展父類中的函數。

但對於包裝你可以嘗試這樣的:

class base{ 
    //TODO 
    function def(){ 
    require('fpdf.php'); 
    $pdf=new FPDF(); 
    $pdf->AddPage(); 

    // the page header DO IN HERE 

    // ->DO IN Derived Class(leave derived to do with data) 
    $child = new child(); 
    $pdf = $child->def($pdf); 

    // the page footer DO IN HERE 
    $pdf->Output(); 
    } 
} 

與調用它:

$obj_pdf = new base(); 
$obj_pdf->def(); 
+0

看看你的代碼,子類是什麼樣的? – kn3l 2011-05-11 13:51:46

+0

你的一般想法並不差 - 但你有幾個臭的東西在那裏。如果構建多個對象,則使用'require_once',而不要'require'。在類定義之外移動'require'將是最好的。 – gnud 2011-05-11 13:57:26

+0

不要硬編碼使用哪個子類 - 父類不應該知道任何有關子類的信息。相反,在基類中有一個名爲'write_content'的空白方法,可以調用該方法而不是創建一個子類,並讓孩子重新實現該方法。 – gnud 2011-05-11 13:57:45