Moin!
ich hab da mit FPDF gerade ein kleines problem und zwr gehts um den footer, ich möchte die footer function nutzen.
Die Klassenmethode Footer() der Klasse FPDF wird intern vom Seitenmechanismus aufgerufen, ist aber leer. Durch das Überschreiben dieser Methode in deiner eigenen Klasse kannst du einen Seitenfuß hinzufügen, mußt dabei aber natürlich die Grenzen beachten, die für die Datenübergabe in Klassen oder aus Klassen heraus gelten.
$username ist wahrscheinlich eine globale Variable. Die Methode Footer() darf nicht auf globale Variablen zugreifen, man muß ihr den Inhalt in passender Form hineinreichen.
Ein möglicher Weg wäre, den Usernamen als Parameter anzuhängen:
function Footer($username = "Demouser")
{
...
$this->Cell(0,4,'User: '.$username ,0,0,'L',1);
}
Das funktioniert aber nur, wenn der Aufruf der Footer-Methode dann auch den Usernamen enthält - dieser Aufruf ist aber innerhalb der FPDF-Klasse, du müßtest also noch wesentlich mehr Code umändern, was sich nicht wirklich lohnt.
Es gibt einen schöneren Weg:
Du legst in deiner neuen Klasse eine neue Variable als property an, greifst im Footer auf diese property zu, und versiehst diese Property einfach am Anfang der PDF-Erstellung mit dem passenden Wert:
class PDF extends FPDF
{
var $uname; // Username für den Footer
//...
function Footer()
{
//...
$this->Cell(0,4,'User: '.$this->uname ,0,0,'L',1);
}
}
$pdf = new PDF;
$pdf->uname = $username // Übertragen des Benutzernamens in die Klasse.
Man könnte sich noch streiten, ob der Zugriff direkt auf eine Property so hinreichend elegant ist, oder ob man dafür nicht eine eigene set-Methode schreiben sollte, aber sowas ist nur relevant, wenn du evtl. planst, die internen Variablen der Klasse vielleicht mal zu verändern.
Statt "uname" kann die Property natürlich beliebig heißen - ich wollte nur nicht den Eindruck erwecken, sie müsse zwingend auch "username" heißen, weil die globale Variable schon so heißt - sie kann es aber durchaus.
- Sven Rautenberg