2015-10-20 10 views
5

In PHP è possibile registrare una funzione di arresto (con register_shutdown_function()) che è un metodo statico implementato in una classe? Voglio dire qualcosa di simile:Registrare il metodo della classe statica come funzione di arresto in PHP

//index.php 
require_once("modules/Analyzer/Analyzer.php"); 
register_shutdown_function("Analyzer::log_shutdown"); 

//Analyzer.php 
class Analyzer { 
    ... 

    public static function log_shutdown(){ 
     // do some awesome stuff 
     Analyzer::screenshot(); 
    } 
} 
+1

Hai provato? Quello che è successo? –

+0

@Paul Crovella Per prima cosa ho pensato che non funzionasse, ma poi ho capito che era un refuso e funzionava correttamente! – ACs

risposta

8

Il primo argomento passato a register_shutdown_function è del tipo callable. Un metodo statico callable si presenta così:

register_shutdown_function(array('Analyzer', 'log_shutdown')); 

Dal PHP 5.2.3 si può anche guardare esattamente come quello che originariamente pubblicato

+0

... o sembra esattamente quello che stanno già usando. –

+0

@PaulCrovella hai ragione; non lo sapevo. Aggiunto per rispondere – Sjon

5

Può usare una funzione anonima:

register_shutdown_function(function(){ 
    Analyzer::log_shutdown(); 
}); 

anche, nell'analizzatore è possibile utilizzare una chiamata alla stessa classe come questa:

class Analyzer{ 
    public static function log_shutdown(){ 
     self::screenshot(); 
    } 
} 
Problemi correlati