2012-12-04 21 views
5

mam metoda, w tej metodzie można się błąd krytyczny, do połowu tego błędu robię toJak przekazywać argumenty do metody wywoływalnej dla register_shutdown_function?

class a { 


    function shutDownFunction() { 
     $error = error_get_last(); 
     if ($error['type'] == 1) { 
      echo "this is fatal error"; 
     } 
    } 


    function terribleFunction() { 
     register_shutdown_function(array($this,'shutdownFunction')); 


     // here is code, wich may causes fatal error 

    } 


} 

Ok, to rozumiem, ale muszę przejść argumentu z terribleFunction do shutDownFunction. Jak to zrobić?

+0

Maby szukasz [call_user_func_array] (http://php.net/manual/en/function.call-user-func-array.php) –

+0

Również nie możesz łapać fatalnych błędów. Są fatalne z jakiegoś powodu. –

Odpowiedz

10

Najpierw należy określić, że shutDownFunction powinien zaakceptować parametr.

function shutDownFunction($var)

Następnie można wywołać register_shutdown_function jak tak

register_shutdown_function(array($this, 'shutdownFunction'), $myVar);

Dokumentacja jest here i istnieją przykłady w komentarzach.

0

Należy używać tylko jednej funkcji register_shutdown_function i nie używać jej tylko wewnątrz metody, aby wykryć błędy w tej metodzie. Dla błędu łowczy użytku spróbować, łapać, wreszcie blokować

zobacz: http://php.net/manual/en/language.exceptions.php

0

Można sprawdzić register_shutdown_function dokumentacji. Istnieje drugi opcjonalny argument parameter, który jest przekazywany do twojego shutDownFunction(). Funkcję tę można zdefiniować tak:

function shutDownFunction($args) { 
    //do whatever you want with $args 
}