3v4l.org

run code in 300+ PHP versions simultaneously
<?PHP ABSTRACT CLASS Base { protected static $stub = array('baz'); //final public function boot() static public function boot() { print __METHOD__.'-> '.get_called_class().PHP_EOL; array_walk(static::$stub, function() { print __METHOD__.'-> '.get_called_class().PHP_EOL; }); } public function __construct() { self::boot(); print __METHOD__.'-> '.get_called_class().PHP_EOL; array_walk(static::$stub, function() { print __METHOD__.'-> '.get_called_class().PHP_EOL; }); } } CLASS Sub EXTENDS Base { } // static boot Base::boot(); print PHP_EOL; // Base::boot -> Base // Base::{closure} -> Base Sub::boot(); print PHP_EOL; // Base::boot -> Sub // Base::{closure} -> Base new sub; print PHP_EOL; // Base::boot -> Sub // Base::{closure} -> Base // Base->__construct -> Sub // Base->{closure} -> Sub // instance boot new sub; print PHP_EOL; // Base->boot -> Sub // Base->{closure} -> Sub // Base->__construct -> Sub // Base->{closure} -> Sub

preferences:
42.09 ms | 402 KiB | 5 Q