Antworten auf deine Fragen:
Neues Thema erstellen

Methode über eine Instanz aufrufen

Fotographer96

Nicht mehr ganz neu hier

Hallo php-Experten,
ich habe ein kleines Problem, und zwar möchte ich eine Methode über eine Instanz aufrufen.

Siehe:
PHP:
Application_Autoloader::getInstance()->autoload('Application_View_Base')->getContent();

Application_Autoloader ist die aufgerufene Klasse, getInstance ist eine Methode in dieser Klasse, sie prüft ob die Variable $_instance Inhalt hat, falls nicht folgt eine Instanz, sprich "new self()". Die Methode autoload wird erfolgreich ausgeführt und tut was sie tun soll, nämlich "Application_View_Base" aufzurufen. Danach möchte ich die Funktion "getContent" aufrufen, doch die Fehlermeldung "Fatal error: Call to a member function getContent() on a non-object in[...]" erscheint.

Ich habe schon mit class_exists geprüft ob die Klasse "Application_View_Base" existiert, erfolgreich. Jedoch kann ich jetzt ja nicht die Methode aufrufen und weiß nicht recht wie ich das regeln kann.

Danke schon mal im Voraus!
 

Duddle

Posting-Frequenz: 14µHz

AW: Methode über eine Instanz aufrufen

Der "->" Operator versucht das zweite Argument (rechts) im Rückgabewert des ersten Argument (links) aufzurufen. Schrittweise wird das dann so aufgelöst:
PHP:
Application_Autoloader::getInstance()->autoload('Application_View_Base')->getContent();
getInstance() holt die Instanz, nennen wir sie INST
PHP:
INST->autoload('Application_View_Base')->getContent();
Auf dem Objekt INST wird autoload() ausgeführt, falls die Klasse INST das anbietet. Der Rückgabewert von autoload() ist dann irgendwas, nennen wir es RET:
PHP:
RET->getContent();
Auf RET soll jetzt getContent() ausgeführt werden. Das funktioniert natürlich nur, wenn die Klasse von RET getContent() anbietet. Offenbar ist das nicht der Fall, die Fehlermeldung sagt eindeutig dass getContent() auf einem nicht-Objekt (wahrscheinlich gibt autoload void zurück) aufgerufen wird. Resultat: Fehler.

Kurz: autoload() gibt kein Objekt zurück, dass die getContent()-Methode anbietet.


Duddle
 

Fotographer96

Nicht mehr ganz neu hier

AW: Methode über eine Instanz aufrufen

Der "->" Operator versucht das zweite Argument (rechts) im Rückgabewert des ersten Argument (links) aufzurufen. Schrittweise wird das dann so aufgelöst:
PHP:
Application_Autoloader::getInstance()->autoload('Application_View_Base')->getContent();
getInstance() holt die Instanz, nennen wir sie INST
PHP:
INST->autoload('Application_View_Base')->getContent();
Auf dem Objekt INST wird autoload() ausgeführt, falls die Klasse INST das anbietet. Der Rückgabewert von autoload() ist dann irgendwas, nennen wir es RET:
PHP:
RET->getContent();
Auf RET soll jetzt getContent() ausgeführt werden. Das funktioniert natürlich nur, wenn die Klasse von RET getContent() anbietet. Offenbar ist das nicht der Fall, die Fehlermeldung sagt eindeutig dass getContent() auf einem nicht-Objekt (wahrscheinlich gibt autoload void zurück) aufgerufen wird. Resultat: Fehler.

Kurz: autoload() gibt kein Objekt zurück, dass die getContent()-Methode anbietet.


Duddle

Hehe, war ein bisschen heikel. Habe aus versehen einige Initialisierungen auskommentiert, dann war es auch nur ein return von einem "array()".

Danke vielmals!!
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.565
Beiträge
1.538.067
Mitglieder
67.488
Neuestes Mitglied
Andrew56524
Oben