Отдельный базовый класс (шаблон) и производные классы (данные). - PullRequest
1 голос
/ 11 мая 2011

Общее

  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 Ответ

1 голос
/ 11 мая 2011

То, чего вы хотите достичь, это шаблон обёртки.Я не знаю, является ли это правильным решением для вашей проблемы.Наследование предназначено для добавления сложности в дочерние классы, не расширяя функции в родительском классе.

Но для оболочки вы можете попробовать что-то вроде:

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();
...