new \Mustache_Loader_FilesystemLoader( dirname( __DIR__ ) . '/views' ), 'cache' => new Mustache_Cache_FrozenCache( dirname( __DIR__ ) . '/views/cache' ), ] ); }; $laps['stopwatch'] = $laps->factory( function () { return new Stopwatch(); } ); $laps['records'] = function() { $records = []; foreach ( $this->providers as $provider ) { if ( $provider instanceof Events_Provider_Interface ) { $records[] = $provider->get_events(); } } return array_merge( ...$records ); }; $laps->register( new Load_Order_Manager() ); $laps->register( new Asset_Manager() ); $laps->register( new Toolbar_Manager() ); $laps->register( new Hook_Events_Provider() ); $laps->register( new Http_Events_Provider() ); $laps->register( new Sql_Events_Provider() ); foreach ( $values as $key => $value ) { $this->offsetSet( $key, $value ); } } public function register( ServiceProviderInterface $provider, array $values = [] ) { $this->providers[] = $provider; parent::register( $provider, $values ); return $this; } /** * Start Stopwatch and timing plugin load immediately, then set up core events and needed hooks. */ public function on_load() { if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) { return; } foreach ( $this->providers as $provider ) { if ( $provider instanceof Bootable_Provider_Interface ) { $provider->boot( $this ); } } } }