Debugging closures

Learn how to debug serialized closures

This version of the library is no longer maintained. Please consider upgrading to the latest release

Opis Closure is debugging friendly and can be used in conjunction with error handlers like whoops without any special or supplemental configurations.

$whoops = new \Whoops\Run;
$whoops->pushHandler(new \Whoops\Handler\PrettyPageHandler);
$whoops->register();

$closure = function(){
    throw new \Exception();
};

$closure = unserialize(serialize(new SerializableClosure($closure)))->getClosure();

$closure();

Error 1

Starting with version 2.0.0, Opis Closure allows you to track the residing source of a serialized closure by using the #trackme directive inside the closure. The #trackme directive provides the following information:

  • Date - the date when the closure was serialized, represented in the W3C format
  • Timestamp - an integer representation of the Date
  • File - the file where the serialized closure resides
  • Line - the line where the closure can be located inside the File
$whoops = new \Whoops\Run;
$whoops->pushHandler(new \Whoops\Handler\PrettyPageHandler);
$whoops->register();

$closure = function(){
    #trackme
    throw new \Exception();
};

$closure = unserialize(serialize(new SerializableClosure($closure)))->getClosure();

$closure();

Error 1