PHP code example of devportolio / laravel-dump-viewer

1. Go to this page and download the library: Download devportolio/laravel-dump-viewer 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/ */

    

devportolio / laravel-dump-viewer example snippets


// Simple dump
dumpx($user);

// Dump with label
dumpx($user)->label('User Data');

// Dump multiple values
dumpx($user, $post, $comments);

// Multiple values with label
dumpx($a, $b, $c)->label('Debug Values');

// Label and stop
dumpx($data)->label('Final State')->stop();

Route::get('/test', function () {
    $user = User::first();
    
    // Dump the user
    dumpx($user)->label('First User');
    
    // Continue execution
    return view('test');
});

php artisan tinker

>>> $user = User::first()
>>> dumpx($user)->label('User from Tinker')
>>> dumpx(User::count())->label('Total Users')

class MyCommand extends Command
{
    public function handle()
    {
        $data = $this->fetchData();
        
        dumpx($data)->label('Command Data');
        
        $this->info('Data dumped to viewer!');
    }
}

$query = DB::table('users')
    ->where('active', true)
    ->toSql();

dumpx($query)->label('User Query');
// Automatically formats with syntax highlighting!

$user = User::with('posts', 'comments')->first();

dumpx($user)->label('User with Relations');
// Beautifully renders model attributes and relationships

$users = User::take(100)->get();

dumpx($users)->label('Users Collection');
// Smart rendering with expand/collapse

// config/dump-viewer.php

return [
    // Enable/disable the dump viewer
    'enabled' => env('DUMPX_ENABLED', true),
    
    // Route to access the viewer
    'route' => env('DUMPX_ROUTE', 'dump-viewer'),
    
    // Maximum dumps to store
    'storage_limit' => env('DUMPX_STORAGE_LIMIT', 500),
    
    // Storage driver (file, redis, database, etc.)
    'storage_driver' => env('DUMPX_STORAGE_DRIVER', 'file'),
    
    // Middleware for the viewer route
    'middleware' => ['web'],
];

// Organize related dumps
dumpx($query)->label('DB Query');
dumpx($result)->label('Query Result');
dumpx($processed)->label('Processed Data');

// Filter by label in the viewer

// All values get the same label
dumpx($var1, $var2, $var3)->label('Test Variables');

// Use ->stop() to dump and halt execution
dumpx($criticalData)->label('Critical Error')->stop();

// Or chain it
dumpx($data)->label('Before Error')->stop();

// Automatically truncates large collections
$users = User::all(); // 10,000 users

dumpx($users)->label('All Users');
// Shows warning and first 100 items

// Better approach:
dumpx(User::take(50)->get())->label('Sample Users');

public function store(Request $request)
{
    dumpx($request->all())->label('Request Data');
    
    $validated = $request->validate([...]);
    dumpx($validated)->label('Validated Data');
    
    $user = User::create($validated);
    dumpx($user)->label('Created User');
    
    return response()->json($user);
}

DB::listen(function ($query) {
    dumpx($query->sql)->label('Query: ' . $query->time . 'ms');
});

Event::listen('*', function ($event, $payload) {
    dumpx([
        'event' => $event,
        'payload' => $payload
    ])->label('Event: ' . $event);
});

class ProcessPodcast implements ShouldQueue
{
    public function handle()
    {
        dumpx($this->podcast)->label('Processing Podcast');
        
        // Process...
        
        dumpx($result)->label('Process Complete');
    }
}

// Disable in production
'enabled' => env('DUMPX_ENABLED', !app()->isProduction()),

// Or in .env
DUMPX_ENABLED=false

// config/dump-viewer.php
'middleware' => ['web', 'auth', 'admin'],

class DumpViewerAccess
{
    public function handle($request, Closure $next)
    {
        if (!app()->environment('local')) {
            abort(404);
        }
        
        return $next($request);
    }
}

// config/dump-viewer.php
'middleware' => ['web', DumpViewerAccess::class],

// Good: Organized and filterable
dumpx($query)->label('DB: User Query');
dumpx($result)->label('DB: Query Result');
dumpx($user)->label('User: Loaded');
dumpx($posts)->label('User: Posts');

// Bad: Hard to find and organize
dumpx($query);
dumpx($result);

// In your bootstrap or test setup
if (app()->environment('testing')) {
    app('dumpx')->clear();
}

// Keep viewer open in browser
// Run commands in Tinker
// Refresh browser to see dumps

// Dump for immediate visibility
dumpx($data)->label('Debug Point');

// Log for permanent record
Log::debug('Debug point', ['data' => $data]);

php artisan tinker
>>> config('dump-viewer.enabled')

>>> config('dump-viewer.storage_driver')
// Should be 'file' for Tinker

>>> Cache::store('file')->put('test', 'works', 60)
>>> Cache::store('file')->get('test')

>>> app('dumpx')->all()

>>> config('dump-viewer.route')
bash
php artisan vendor:publish --tag=dump-viewer-config
bash
php artisan vendor:publish --tag=dump-viewer-assets
bash
php artisan cache:clear
php artisan config:clear
bash
php artisan route:clear
bash
php artisan route:list | grep dump