2011-05-11 3 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/ko/tutorial/tuto2.htm – gnud

+0

+1 @gnud – kn3l

답변

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

+0

당신의 일반적인 생각은 나쁘지 않습니다. 그러나 당신은 거기에 몇 개의 악취가 많은 아이템을 가지고 있습니다. 두 개 이상의 객체가 생성 될 경우'require'가 아닌'require_once'를 사용하십시오. 클래스 정의 밖에서'require '를 움직이는 것이 가장 좋을 것입니다. – gnud

+0

사용할 하위 클래스를 하드 코딩하지 마십시오. 상위 클래스는 하위 클래스에 대해 아무 것도 알지 못합니다. 대신 기본 클래스에'write_content' 등으로 불리는 빈 메소드를 가지고, 자식 클래스를 생성하는 대신 그 메소드를 호출하고, 자식에게 그 메소드를 다시 구현하게합니다. – gnud