2008-11-26 19 views
8

Estoy tratando de utilizar esto en mi clase de página. Solo comencé a usar objetos en PHP, así que todavía estoy un poco despistado (pero aprendiendo todo lo que puedo). Esto está en mi page() función (llamada cuando hay una nueva instancia de la página)PHP - función de llamada en el objeto con set_error_handler()

set_error_handler('$this->appendError'); 

Esto está causando un error

Advertencia: set_error_handler() espera que el argumento (appendError) sea una devolución de llamada válida

Ahora, ¿cómo configuro una función interna de clase mientras paso la función como una cadena. ¿No es esto posible? ¿Debería usar una función normal que luego llame a la función de clase y envíe a través de todos los argumentos? Esto me parece un poco engorroso.

O me he perdido el problema? He intentado hacer que mi appendError devuelva una cadena y echo ... pero todavía no está funcionando bien.

Cualquier ayuda sería muy apreciada.

Gracias!

Respuesta

20

Pocos problemas con eso.

Primero:

'$this->appendError'
es un nogo. No interpreta $ this en la clase actual, php lo interpreta como la cadena '$ this'.

Segundo: Trate

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

Si eso no funciona, reemplace $ esto con el nombre de clase y utilizarlo de forma estática.

+1

Funcionó ... Muchas gracias. :) – alex

+0

@ray, gracias por esto, no puedo usar set_error_handler ("class :: method"); debido a php estricto método estándar no estático necesito establecer $ class = new class(); set_error_handler ($ class-> method); // esto no funciona – bdalina

1

Leer el php.net callback documentation. Creo que el ejemplo 3 es el más cercano a lo que desea:

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