Antwort an „Rolf B“ verfassen

Hallo Bastian,

wenn Du innerhalb der Methoden Header und Footer auf die Variable $ID zugreifst, machst Du was falsch. Greifst Du mit dem global-Statement darauf zu? Oder verwendest Du $_GET['ID']?

Wenn Du innerhalb der Header und Footer Methoden die ID brauchst, solltest Du deiner PDF_Table_Header Klasse eine neue Eigenschaft namens id verpassen. Um nicht auch noch einen Konstruktor schreiben zu müssen, kannst Du diese Eigenschaft einfach public machen.

class PDF_Table_Header extends PDF_MC_Table_WA
{

   public $id;

   public Header()
   {
      $this->Cell($x, $y, "Dokument $this->id");
      // oder so:
      $this->Cell($x, $y, "Dokument " . $this->id);
   }

   public Footer()
   {
   }
}

...

    $pdf = new PDF_Table_Header('P','mm',$seitenformat);

    $pdf->id = $ID;

    $pdf->AliasNbPages();
    $pdf->AddPage();

Zur Erklärung: FPDF geht nur im einfachsten Fall so vor, dass Du das FPDF Objekt erzeugst und die PDF-Erzeugung dann komplett von außen steuerst. Für Dinge wie Seiten-Header und -Footer bietet es Dir die Möglichkeit, das FPDF Objekt zu erweitern. Das passiert mittels class ... extends. In deinem Fall erweiterst Du PDF_MC_Table, was sicherlich eine von FPDF abgeleitete Klasse ist. Woher auch immer diese Klasse kommt - im Internet finde ich dazu nur eines: Diesen Selfhtml Thread 😂.

Header und Footer sind sogenannte Abstrakte Methoden. Sie sind in FPDF zwar vorhanden, tun aber nichts. FPDF ruft sie auf, wenn es an der Zeit wäre, einen Header oder einen Footer zu erzeugen. Wenn Du diese Methoden in deiner abgeleiteten Klasse einbaust, dann überschreiben sie die Dummy-Methoden, die in FPDF enthalten sind, d.h. wenn FPDF als Basisklasse von PDF_Table_Header läuft, verwendet es deinen Header und Footer.

Genau wie Du Methoden (also Funktionen im Objekt) ergänzen kannst, kannst Du auch Eigenschaften (Variablen im Objekt) hinzufügen. Es gibt öffentliche und private Eigenschaften, deswegen muss man da innerhalb einer Klasse "public" oder "private" davorschreiben (ja okay, man MUSS nicht. Lässt man es weg, ist die Variable public. Ich schreib's trotzdem immer hin).

Du könntest auch noch eine Methode __construct hinzufügen, um die ID gleich beim new zu setzen, aber dafür müsste ich dann zuviel OOP erklären. Darum einfach eine public Eigenschaft, und ihr wird nach dem new Aufruf (der das Objekt erzeugt) die benötigte ID zugewiesen. Auf diese Weise kennt das Objekt nun die ID und ist nicht darauf angewiesen, auf eine globale Variable zuzugreifen.

Du verwendest diese Eigenschaft genau wie alle anderen FPDF-Eigenschaften oder -Methoden: mit einem $this-> davor.

Rolf

--
sumpsi - posui - obstruxi
freiwillig, öffentlich sichtbar
freiwillig, öffentlich sichtbar
freiwillig, öffentlich sichtbar

Ihre Identität in einem Cookie zu speichern erlaubt es Ihnen, Ihre Beiträge zu editieren. Außerdem müssen Sie dann bei neuen Beiträgen nicht mehr die Felder Name, E-Mail und Homepage ausfüllen.

abbrechen