PHP code example of abdulsalam / laravel-operation-preview

1. Go to this page and download the library: Download abdulsalam/laravel-operation-preview 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/ */

    

abdulsalam / laravel-operation-preview example snippets


use Abdulsalam\OperationPreview\Facades\Operation;

$preview = Operation::preview(function () use ($player) {
    app(PlayerService::class)->deletePlayer($player);
});

return $preview->toArray();

$preview = Operation::named('player.delete')
    ->subject($player)
    ->watch([$player, $player->wallet])
    ->trackTables(['player_sessions', 'player_bonuses'])
    ->scenario(
        PreviewScenario::make()->http(
            'POST',
            'https://casino.example.com/*',
            status: 200,
            body: ['success' => true],
        )
    )
    ->preview(fn () => app(PlayerService::class)->deletePlayer($player));

$scenario = PreviewScenario::make()
    ->http('POST', 'https://provider.test/*', 200, ['ok' => true]);

Operation::impact('player.bonuses.cancel', ['count' => 2]);

$result = Operation::named('player.delete')
    ->watch([$player, $player->wallet])
    ->preview(fn () => $service->deletePlayer($player));

Operation::confirm($request->string('token')->toString(), function () use ($player, $service) {
    return $service->deletePlayer($player);
});

final class CasinoGatewayPreviewInterceptor implements Interceptor
{
    public function name(): string { return 'casino'; }
    public function install(PreviewSession $session): void { /* replace gateway binding */ }
    public function collect(PreviewSession $session): void { /* record effects */ }
    public function restore(PreviewSession $session): void { /* restore original */ }
}

$this->app->tag([
    CasinoGatewayPreviewInterceptor::class,
], 'operation-preview.interceptors');

'interceptors' => [
    // ...
    'casino' => true,
],

'database' => [
    'assume_no_manual_commit' => false,
],

'coverage' => [
    'assume_no_unmanaged_side_effects' => false,
],
bash
php artisan operation-preview:doctor
php artisan operation-preview:scan