Objekte in Funktionen
Sebastian
- php
Hallo zusammen,
ich sitze gerade an einem PHP-Skript und habe folgendes Problem:
Das PHP-Skript beinhaltet mehrere Funktionen, in welchen immer wieder auf ein Objekt zugegriffen werden soll. Dieses Objekt wird am Anfang der PHP-Datei definiert und soll global, sofern es diese Differenzierung auch bei Objekten und nicht nur bei Variablentypen gibt, gelten.
Warum bringt mir der Server aber die Fehlermeldung "Call to a member function on a non-object in ..."?
Hallo,
Das PHP-Skript beinhaltet mehrere Funktionen, in welchen immer wieder auf ein Objekt zugegriffen werden soll. Dieses Objekt wird am Anfang der PHP-Datei definiert und soll global, sofern es diese Differenzierung auch bei Objekten und nicht nur bei Variablentypen gibt, gelten.
Das geht (globale Objekte)
Warum bringt mir der Server aber die Fehlermeldung "Call to a member function on a non-object in ..."?
Weil du wahrscheinlich in der Zeile, über die der Interpreter sowas hast wie:
$myVar->myMethod();
Nur leider ist $myVar kein Objekt. Das bedeutet die Fehlermeldung. Du musst $myVar initialisieren mit $myVar = new MyClass(); - falls du das getan hast, weist du $myVar wahrscheinlich später im Skript nen anderen Datentyp zu (z.B. $myVar = 4). Mach einfach mal nen var_dump( $myVar ) und schau dir an, was du da für ein vermeintliches Objekt hast...
Mit freundlichen Grüßen,
Michael Nagler
Hallo,
hier ein kleiner Auszug aus meinem Problem:
include('./pdf.php');
$pdf = new PDF();
$pdf->addText(...);
$pdf->stream();
funktioniert wunderbar - aber
include('./pdf.php');
$pdf = new PDF();
function text() {
$pdf->addText(...);
}
text();
$pdf->stream();
überhaupt nicht.
Was muss ich also beachten oder ändern?
Hallo,
schon klar: $pdf ist innerhalb der Funktion nicht definiert...
Lösung:
include('./pdf.php');
$pdf = new PDF();
function text() {
global $pdf; // <-- so machst du die globale Variable verfügbar
$pdf->addText(...);
}
text();
$pdf->stream();
Mit freundlichen Grüßen,
Michael Nagler