PHP code example of bensedev / request-bag

1. Go to this page and download the library: Download bensedev/request-bag 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/ */

    

bensedev / request-bag example snippets


use Bensedev\RequestBag\Facades\RequestBag;

// Add data
RequestBag::add('user_permissions', ['edit', 'delete', 'create']);
RequestBag::add('tenant_id', 123);

// Retrieve data
$permissions = RequestBag::get('user_permissions');
$tenantId = RequestBag::get('tenant_id');

// With default value
$theme = RequestBag::get('theme', 'light');

// Check if key exists and has value
if (RequestBag::has('user_permissions')) {
    // Key exists and is not empty
}

// Check if key exists (even if empty)
if (RequestBag::exists('theme')) {
    // Key exists
}

namespace App\Http\Middleware;

use Bensedev\RequestBag\Facades\RequestBag;
use Closure;

class LoadUserPermissions
{
    public function handle($request, Closure $next)
    {
        $permissions = auth()->user()->permissions->pluck('name')->toArray();

        // Store in RequestBag instead of adding to request
        RequestBag::add('user_permissions', $permissions);
        RequestBag::add('is_admin', auth()->user()->isAdmin());

        return $next($request);
    }
}

namespace App\Http\Controllers;

use Bensedev\RequestBag\Facades\RequestBag;

class PostController extends Controller
{
    public function store()
    {
        // No need to pass permissions around!
        if (RequestBag::has('user_permissions')) {
            $permissions = RequestBag::get('user_permissions');

            if (in_array('create_post', $permissions)) {
                // Create post
            }
        }
    }
}

namespace App\Http\Middleware;

use Bensedev\RequestBag\Facades\RequestBag;
use Illuminate\Http\Request;
use Inertia\Middleware;

class HandleInertiaRequests extends Middleware
{
    public function share(Request $request): array
    {
        return array_merge(parent::share($request), [
            'auth' => [
                'user' => $request->user(),
                // Pull from RequestBag populated earlier in middleware chain
                'permissions' => RequestBag::get('user_permissions', []),
                'is_admin' => RequestBag::get('is_admin', false),
            ],
            'tenant' => [
                'id' => RequestBag::get('tenant_id'),
                'name' => RequestBag::get('tenant_name'),
            ],
        ]);
    }
}

namespace App\Services;

use Bensedev\RequestBag\Facades\RequestBag;

class TenantService
{
    public function loadTenantContext(int $tenantId): void
    {
        $tenant = Tenant::with('settings')->find($tenantId);

        RequestBag::merge([
            'tenant_id' => $tenant->id,
            'tenant_name' => $tenant->name,
            'tenant_settings' => $tenant->settings->toArray(),
        ]);
    }
}

class InvoiceService
{
    public function createInvoice(array $data): Invoice
    {
        // Access tenant data without dependency injection
        $tenantId = RequestBag::get('tenant_id');
        $settings = RequestBag::get('tenant_settings');

        return Invoice::create([
            'tenant_id' => $tenantId,
            'currency' => $settings['default_currency'],
            // ...
        ]);
    }
}

// Add a single value
RequestBag::add(string $key, mixed $value): self

// Merge multiple values
RequestBag::merge(array $data): self

// Example
RequestBag::add('user_id', 123);
RequestBag::merge(['theme' => 'dark', 'locale' => 'en']);

// Get a value (with optional default)
RequestBag::get(string $key, mixed $default = null): mixed

// Get all data
RequestBag::all(): array

// Example
$userId = RequestBag::get('user_id');
$theme = RequestBag::get('theme', 'light');
$all = RequestBag::all();

// Check if key exists and is not empty
RequestBag::has(string $key): bool

// Check if key exists (even if empty)
RequestBag::exists(string $key): bool

// Example
if (RequestBag::has('user_id')) {
    // Key exists and has a value
}

if (RequestBag::exists('theme')) {
    // Key exists (might be empty)
}

// Remove a specific key
RequestBag::remove(string $key): self

// Clear all data
RequestBag::clear(): self

// Example
RequestBag::remove('temp_data');
RequestBag::clear();

RequestBag::add('key1', 'value1')
    ->add('key2', 'value2')
    ->merge(['key3' => 'value3'])
    ->remove('key1');

use Bensedev\RequestBag\RequestBag;

class MyService
{
    public function __construct(
        private RequestBag $bag
    ) {}

    public function doSomething(): void
    {
        $this->bag->add('key', 'value');
    }
}
bash
composer analyse