undefined method

20/07/2011 - 10:46 von Stefan+Usenet | Report spam
Ich habe offenbar wieder einmal Tomaten auf den Augen.

Ein Stueck Software, bis vor einigen Monaten funktionierend und danach gut
abgelegen, gibt mir heute beim Aufruf die lapidare Meldung: "Call to
undefined method [...]". Stein des Anstosses ist die Zeile:

| $value = $object::$getter($parameters);

$getter soll in diesem Fall keine Funktion sein, sondern die magische
Methode __call() der Elternklasse aufrufen, wo dann die entsprechende
Verarbeitung erfolgt. Also pruefen wir das einmal unmittelbar vor dem
obigen Statement:

| var_dump(class_exists(get_class($object))); echo "<br>";
| var_dump(method_exists($object, $getter)); echo "<br>";
| var_dump(method_exists($object, "__call")); echo "<br>";
| var_dump(is_callable(array($object, "__call"))); echo "<br>";

Die Ausgabe davon ist, wie erwartet:

| bool(true)
| bool(false)
| bool(true)
| bool(true)

Wie kann __call() zwar aufrufbar sein, aber nicht angesprungen werden?

Nicht, dass ich mir einer Konfigurationsaenderung bewusst waere, aber
_koennte_ man den Automatismus denn ueberhaupt abschalten? Irgendeine
Bloedheit muss ich ja wohl begangen haben...

Servus,
Stefan

http://kontaktinser.at/ - die kostenlose Kontaktboerse fuer Oesterreich
Offizieller Erstbesucher(TM) von mmeike

Stefan. Gesund und spannend!
(Sloganizer)
 

Lesen sie die antworten

#1 Claus Reibenstein
20/07/2011 - 11:21 | Warnen spam
Stefan Froehlich schrieb:

| var_dump(method_exists($object, $getter)); echo "<br>";

Die Ausgabe davon ist, wie erwartet:

| bool(false)



Welchen Wert hat $getter? Das ist so ziemlich das Einzige, was Du nicht
geprüft hast, und leider auch das Wichtigste an dieser Stelle.

Gruß. Claus

Ähnliche fragen