PHP code example of iviphp / debug

1. Go to this page and download the library: Download iviphp/debug library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

iviphp / debug example snippets




declare(strict_types=1);

use Ivi\Debug\Debug;
use Ivi\Debug\DebugManager;

$manager = new DebugManager();

$debug = new Debug($manager);

$debug->debug('Loading application configuration.');

$debug->info(
    'User profile loaded.',
    [
        'user_id' => 42,
        'source' => 'database',
    ],
    category: 'users'
);

$debug->debug('Debug message');

$debug->info('Informational message');

$debug->notice('Notice message');

$debug->warning('Warning message');

$debug->error('Error message');

$debug->critical('Critical message');

$debug->alert('Alert message');

$debug->emergency('Emergency message');

$debug->message(
    message: 'Cache connection failed.',
    level: 'warning',
    context: [
        'driver' => 'redis',
    ],
    category: 'cache'
);

$debug->info(
    'Request received.',
    category: 'http'
);

$debug->debug(
    'Executing database query.',
    category: 'database'
);

$messages = $debug
    ->messages()
    ->byCategory('database');

$messages = $debug
    ->messages()
    ->byCategory(null);

$collector = $debug->messages();

$messages = $collector->all();

$count = $collector->count();

$warnings = $collector->byLevel('warning');

$errors = $collector->byLevel('error');

if ($collector->isEmpty()) {
    echo 'No debug messages.';
}

$collector->reset();

$debug->info(
    'Authentication request received.',
    [
        'email' => '[email protected]',
        'password' => 'secret-value',
        'access_token' => 'private-token',
    ]
);

[
    'email' => '[email protected]',
    'password' => '[REDACTED]',
    'access_token' => '[REDACTED]',
]



declare(strict_types=1);

use Ivi\Debug\Collectors\MessageCollector;
use Ivi\Debug\DebugManager;

$messages = new MessageCollector(
    maximumMessages: 200,
    sensitiveKeys: [
        'payment_reference',
        'internal_key',
    ]
);

$manager = new DebugManager(
    messageCollector: $messages
);

try {
    throw new RuntimeException(
        'Unable to complete the operation.'
    );
} catch (Throwable $exception) {
    $debug->captureException($exception);
}

$debug->captureException(
    $exception,
    [
        'operation' => 'create_project',
        'project_id' => 25,
    ]
);

$collector = $debug->exceptions();

$exceptions = $collector->all();

$latest = $collector->latest();

$count = $collector->count();

$runtimeExceptions = $collector->byClass(
    RuntimeException::class
);

$warnings = $collector->bySeverity(
    E_WARNING
);

$collector->reset();



declare(strict_types=1);

use Ivi\Debug\Collectors\ExceptionCollector;
use Ivi\Debug\DebugManager;

$exceptions = new ExceptionCollector(
    maximumExceptions: 25,
    maximumTraceFrames: 50,
    maximumPreviousDepth: 5,
    

$exceptions = new ExceptionCollector(
    

$data = $debug->collect();

[
    'messages' => [
        'messages' => [],
    ],
    'exceptions' => [
        'exceptions' => [],
    ],
]

$data = $debug->collect(
    strict: true
);

$html = $debug->renderHtml();

try {
    throw new RuntimeException(
        'Example failure.'
    );
} catch (Throwable $exception) {
    $html = $debug->renderHtml(
        $exception
    );
}

$json = $debug->renderJson();

$json = $debug->renderJson(
    $exception
);

$output = $debug->render('html');

$output = $debug->render('json');

$htmlContentType = $debug->contentType('html');

$jsonContentType = $debug->contentType('json');



declare(strict_types=1);

use Ivi\Debug\DebugManager;
use Ivi\Debug\Renderers\HtmlDebugRenderer;

$renderer = new HtmlDebugRenderer(
    title: 'Application Debug',
    



declare(strict_types=1);

use Ivi\Debug\DebugManager;
use Ivi\Debug\Renderers\JsonDebugRenderer;

$renderer = new JsonDebugRenderer(
    prettyPrint: true,
    

$renderer = new JsonDebugRenderer(
    prettyPrint: false
);

$renderer = new JsonDebugRenderer(
    

$manager->setHtmlRenderer(
    new HtmlDebugRenderer(
        title: 'Custom Debug Page'
    )
);

$manager->setJsonRenderer(
    new JsonDebugRenderer(
        prettyPrint: false
    )
);

$htmlRenderer = $manager->htmlRenderer();

$jsonRenderer = $manager->jsonRenderer();

$handler = $debug->registerHandler();

if ($handler->isRegistered()) {
    echo 'Debug handler registered.';
}

$handler->unregister();

$handler = $debug->createHandler();

$handler->register();

$handler = $debug->registerHandler(
    convertErrorsToExceptions: true
);

$handler = $debug->registerHandler(
    convertErrorsToExceptions: false
);

$handler = $debug->registerHandler(
    respectErrorReporting: true
);

$handler = $debug->registerHandler(
    respectErrorReporting: false
);

$handler = $debug->registerHandler(
    errorTypes: E_WARNING
        | E_NOTICE
        | E_USER_WARNING
        | E_USER_NOTICE
);

$handler = $debug->registerHandler(
    errorTypes: E_ALL
);

$handler = $debug->registerHandler(
    captureFatalErrors: true
);

$handler = $debug->registerHandler(
    captureFatalErrors: false
);



declare(strict_types=1);

use Ivi\Debug\DebugManager;

$handler = $debug->registerHandler(
    reporter: static function (
        Throwable $exception,
        DebugManager $manager
    ): void {
        $output = $manager->renderHtml(
            $exception
        );

        echo $output;
    }
);

$handler = $debug->registerHandler(
    reporter: static function (
        Throwable $exception,
        DebugManager $manager
    ): void {
        if (!headers_sent()) {
            http_response_code(500);

            header(
                'Content-Type: '
                . $manager->contentType('json')
            );
        }

        echo $manager->renderJson(
            $exception
        );
    }
);

$handler = $debug->registerHandler(
    propagateExceptions: true
);



declare(strict_types=1);

use Ivi\Debug\Contracts\DebugCollectorInterface;

final class RuntimeCollector implements DebugCollectorInterface
{
    private float $startedAt;

    public function __construct()
    {
        $this->startedAt = microtime(true);
    }

    public function name(): string
    {
        return 'runtime';
    }

    public function collect(): array
    {
        return [
            'duration_ms' => (
                microtime(true)
                - $this->startedAt
            ) * 1000,
            'memory_bytes' => memory_get_usage(true),
            'peak_memory_bytes' => memory_get_peak_usage(true),
        ];
    }

    public function count(): int
    {
        return 1;
    }

    public function isEmpty(): bool
    {
        return false;
    }

    public function reset(): void
    {
        $this->startedAt = microtime(true);
    }
}

$debug->registerCollector(
    new RuntimeCollector()
);

$data = $debug->collect();

$runtime = $data['runtime'];

if ($debug->hasCollector('runtime')) {
    $collector = $debug->collector('runtime');
}

$collectors = $debug->collectors();

$names = $debug->collectorNames();

$debug->replaceCollector(
    new RuntimeCollector()
);

$debug->forgetCollector('runtime');

$count = $debug->count();

if ($debug->isEmpty()) {
    echo 'No debug information.';
}

$debug->reset();

$debug->reset(
    strict: true
);

Ivi\Debug\Exceptions\DebugException



declare(strict_types=1);

use Ivi\Debug\Exceptions\DebugException;

try {
    $output = $debug->render(
        'unsupported-format'
    );
} catch (DebugException $exception) {
    echo $exception->getMessage();

    $context = $exception->context();
}



declare(strict_types=1);

use Ivi\Debug\Debug;
use Ivi\Debug\DebugManager;

$debug = new Debug(
    new DebugManager()
);

$debug->registerHandler(
    reporter: static function (
        Throwable $exception,
        DebugManager $manager
    ): void {
        if (!headers_sent()) {
            http_response_code(500);

            header(
                'Content-Type: '
                . $manager->contentType('html')
            );
        }

        echo $manager->renderHtml(
            $exception
        );
    }
);

$debug->info(
    'Application started.',
    [
        'environment' => 'development',
    ],
    category: 'application'
);



declare(strict_types=1);

use Ivi\Debug\Debug;
use Ivi\Debug\DebugManager;

$debug = new Debug(
    new DebugManager()
);

$debug->registerHandler(
    reporter: static function (
        Throwable $exception,
        DebugManager $manager
    ): void {
        if (!headers_sent()) {
            http_response_code(500);

            header(
                'Content-Type: '
                . $manager->contentType('json')
            );
        }

        echo $manager->renderJson(
            $exception
        );
    },
    convertErrorsToExceptions: true,
    captureFatalErrors: true
);
text
[MAX_DEPTH]