2008-11-26 4 views
8

J'essaie d'utiliser ceci dans ma classe de page. Je viens juste de commencer à utiliser des objets en PHP, donc je suis encore un peu désemparé (mais en apprenant autant que possible). Ceci est ma fonction page() (appelé quand il y a une nouvelle instance de page)PHP - appeler la fonction dans l'objet avec set_error_handler()

set_error_handler('$this->appendError'); 

Cela provoque une erreur

Attention: set_error_handler() attend l'argument (appendError) soit un rappel valide

Maintenant, comment puis-je définir une fonction interne de classe tout en passant la fonction sous forme de chaîne. Est-ce que ce n'est pas possible? Devrais-je utiliser une fonction normale qui appelle ensuite la fonction de classe et envoie à travers tous les arguments? Cela me semble un peu lourd.

Ou ai-je manqué le problème? J'ai essayé de faire en sorte que mon appendError renvoie une chaîne, et echo .. mais ça ne joue toujours pas bien.

Toute aide serait grandement appréciée.

Merci!

Répondre

20

Peu de problèmes avec cela.

D'abord:

'$this->appendError'
est un nogo. Il n'interprète pas $ this dans la classe courante, php l'interprète comme la chaîne '$ this'.

Deuxièmement: Essayez

set_error_handler(array($this, 'appendError'));

Si cela ne fonctionne pas, remplacer $ avec le nom de classe et de l'utiliser de manière statique.

+1

Cela a marché ... Merci beaucoup. :) – alex

+0

@ray, merci pour cela, je ne peux pas utiliser set_error_handler ("class :: method"); à cause de la méthode standard non statique de php, je dois définir $ class = new class(); set_error_handler (méthode $ class->); // cela ne marche pas – bdalina

1

Lisez le php.net callback documentation. Je pense que l'exemple 3 est le plus proche de ce que vous voulez:

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