| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 | <?php namespace Laravel\Profiling;use Laravel\View;use Laravel\File;use Laravel\Event;use Laravel\Config;use Laravel\Request;class Profiler {	/**	 * An array of the recorded Profiler data.	 *	 * @var array	 */	protected static $data = array('queries' => array(), 'logs' => array());	/**	 * Get the rendered contents of the Profiler.	 *	 * @param  Response  $response	 * @return string	 */	public static function render($response)	{		// We only want to send the profiler toolbar if the request is not an AJAX		// request, as sending it on AJAX requests could mess up JSON driven API		// type applications, so we will not send anything in those scenarios.		if ( ! Request::ajax())		{			return render('path: '.__DIR__.'/template'.BLADE_EXT, static::$data);		}	}	/**	 * Add a log entry to the log entries array.	 *	 * @return void	 */	public static function log($type, $message)	{		static::$data['logs'][] = array($type, $message);	}	/**	 * Add a performed SQL query to the Profiler.	 *	 * @param 	string 	$sql	 * @param 	array 	$bindings	 * @param 	float 	$time	 * @return 	void	 */	public static function query($sql, $bindings, $time)	{		foreach ($bindings as $binding)		{			$sql = preg_replace('/\?/', $binding, $sql, 1);		}		static::$data['queries'][] = array($sql, $time);	}	/**	 * Attach the Profiler's event listeners.	 *	 * @return void	 */	public static function attach()	{		// First we'll attach to the query and log events. These allow us to catch		// all of the SQL queries and log messages that come through Laravel,		// and we will pass them onto the Profiler for simple storage.		Event::listen('laravel.log', function($type, $message)		{			Profiler::log($type, $message);		});		Event::listen('laravel.query', function($sql, $bindings, $time)		{			Profiler::query($sql, $bindings, $time);					});		// We'll attach the profiler to the "done" event so that we can easily		// attach the profiler output to the end of the output sent to the		// browser. This will display the profiler's nice toolbar.		Event::listen('laravel.done', function($response)		{			echo Profiler::render($response);		});	}}
 |