application/libraries/Console.php
<?php
if (!defined('BASEPATH')) {
exit('No direct script access allowed');
}
/*
Class: Console
Provides several additional logging features designed to work
with the Forensics Profiler.
Inspired by ParticleTree's PHPQuickProfiler. (http://particletree.com)
Package:
Forensics
Author:
Lonnie Ezell (http://lonnieezell.com)
License:
MIT
*/
class Console
{
/*
Var: $logs
Contains all of the logs that are collected.
*/
private static $logs = [
'console' => [],
'log_count' => 0,
'memory_count' => 0,
];
/*
Var: $ci
An instance of the CI super object.
*/
private static $ci;
//--------------------------------------------------------------------
/*
Method: __construct()
This constructor is here purely for CI's benefit, as this is a
static class.
Return:
void
*/
public function __construct() {
self::init();
log_message('debug', 'Forensics Console library loaded');
}
//--------------------------------------------------------------------
/*
Method: init()
Grabs an instance of CI and gets things ready to run.
*/
public static function init() {
self::$ci = & get_instance();
}
//--------------------------------------------------------------------
/*
Method: log()
Logs a variable to the console.
Parameters:
$data - The variable to log.
*/
public static function log($data = null) {
if ($data !== 0 && empty($data)) {
$data = 'empty';
}
$log_item = [
'data' => $data,
'type' => 'log',
];
self::add_to_console('log_count', $log_item);
}
//--------------------------------------------------------------------
/*
Method: log_memory()
Logs the memory usage a single variable, or the entire script.
Parameters:
$object - The object to store the memory usage of.
$name - The name to be displayed in the console.
*/
public static function log_memory($object = false, $name = 'PHP') {
$memory = memory_get_usage();
if ($object) {
$memory = strlen(serialize($object));
}
$log_item = [
'data' => $memory,
'type' => 'memory',
'name' => $name,
'data_type' => gettype($object),
];
self::add_to_console('memory_count', $log_item);
}
//--------------------------------------------------------------------
/*
Method: get_logs()
Returns the logs array for use in external classes. (Namely the
Forensics Profiler.
*/
public static function get_logs() {
return self::$logs;
}
//--------------------------------------------------------------------
//--------------------------------------------------------------------
// !PRIVATE METHODS
//--------------------------------------------------------------------
public static function add_to_console($log = null, $item = null) {
if (empty($log) || empty($item)) {
return;
}
self::$logs['console'][] = $item;
self::$logs[$log] += 1;
}
//--------------------------------------------------------------------
}
// End Console class