use GiacomoMasseroni\PHPCleanArchitecture\Contracts\ControllerInterface;
public class YourController implements ControllerInterface
use GiacomoMasseroni\PHPCleanArchitecture\BaseUseCase;
use GiacomoMasseroni\PHPCleanArchitecture\Contracts\UseCaseInterface;
public class DoSomething extends BaseUseCase implements UseCaseInterface
{
public function handle(...$arguments): mixed
{
//
}
}
DoSomething::run($arg1, $arg2);
UseCaseExecutorInterface $executor
DoSomething::actingAs($user)->run($arg1, $arg2);
public function rollback(): void
{
}
\GiacomoMasseroni\PHPCleanArchitecture\Dispatcher::getInstance()->addListener(\GiacomoMasseroni\PHPCleanArchitecture\Events\UseCaseStartedEvent::class, function (\GiacomoMasseroni\PHPCleanArchitecture\Events\UseCaseStartedEvent $event): void {
// Just propagate the event to Laravel event system
\App\Events\UseCaseStarted::dispatch($event->useCase);
});
\GiacomoMasseroni\PHPCleanArchitecture\Dispatcher::getInstance()->addListener(\GiacomoMasseroni\PHPCleanArchitecture\Events\UseCaseCompletedEvent::class, function (\GiacomoMasseroni\PHPCleanArchitecture\Events\UseCaseCompletedEvent $event): void {
// Just propagate the event to Laravel event system
\App\Events\UseCaseCompleted::dispatch($event->useCase);
});