2015-10-20 8 views
5

In PHP ist es möglich, eine Shutdown-Funktion zu registrieren (mit register_shutdown_function()), die eine statische Methode in einer Klasse implementiert ist? Ich meine, das so etwas wie:Registrieren Sie statische Klassenmethode als Shutdown-Funktion 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

Haben Sie es versucht? Was ist passiert? –

+0

@Paul Crovella Zuerst dachte ich, es wird nicht funktionieren, aber dann habe ich herausgefunden, dass es ein Tippfehler war und richtig funktioniert! – ACs

Antwort

8

Das erste Argument für register_shutdown_function geben wird, ist von der Art callable. Eine aufrufbare statische Methode sieht wie folgt aus:

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

Ab PHP 5.2.3 auch genau aussehen wie das, was Sie ursprünglich

geschrieben
+0

... oder es sieht genauso aus wie das, was sie bereits benutzen. –

+0

@PaulCrovella du hast recht; Ich habe das nicht bemerkt. Zur Antwort hinzugefügt – Sjon

5

eine anonyme Funktion verwenden:

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

auch, im Analysator können Sie einen Anruf an die gleiche Klasse wie folgt verwenden:

class Analyzer{ 
    public static function log_shutdown(){ 
     self::screenshot(); 
    } 
} 
Verwandte Themen