2008-11-26 11 views
8

Ich versuche, dies in meiner Seitenklasse zu verwenden. Ich habe gerade angefangen, Objekte in PHP zu verwenden, also bin ich immer noch ein bisschen ratlos (aber ich lerne so viel wie ich kann). Das ist in meiner page() Funktion (so genannt, wenn es eine neue Instanz der Seite ist)PHP - Funktion im Objekt aufrufen mit set_error_handler()

set_error_handler('$this->appendError'); 

Dies ist ein Fehler verursacht

Warnung: set_error_handler() erwartet das Argument (appendError) a zu sein gültiger Rückruf

Wie stelle ich nun eine klasseninterne Funktion ein und übergebe die Funktion als String. Ist das nicht möglich? Soll ich eine normale Funktion verwenden, die dann die Klassenfunktion aufruft und alle Argumente durchschickt? Das klingt ein bisschen umständlich für mich.

Oder habe ich das Problem verpasst? Ich habe versucht, meine appendError eine Zeichenfolge zurückgeben, und echo .. aber es spielt immer noch nicht nett.

Jede Hilfe würde sehr geschätzt werden.

Vielen Dank !!

Antwort

20

Wenige Probleme damit.

Erstens:

'$this->appendError'
ist ein Nogo. Es interpretiert $ this nicht zur aktuellen Klasse, php interpretiert es als die Zeichenkette '$ this'. Versuchen
set_error_handler(array($this, 'appendError'));

Wenn das nicht funktioniert, ersetzen $ dies mit dem Klassennamen und verwenden Sie es statisch:

Zweite.

+1

Es hat funktioniert ... Vielen Dank. :) – alex

+0

@ray, danke dafür, ich kann set_error_handler ("class :: method") nicht verwenden; wegen php strengen Standard nicht statischen Methode muss ich $ class = new class(); set_error_handler ($ class-> method); // das funktioniert nicht – bdalina

1

Lesen Sie die php.net callback documentation. Ich denke, Beispiel 3 ist am nächsten an dem, was Sie wollen:

// Type 3: Object method call 
$obj = new MyClass(); 
call_user_func(array($obj, 'myCallbackMethod'));