Skip to main content
Version: 10.x

Tasks

Definition & Principles

Read Porto SAP Documentation (#Tasks).

Rules

  • All Tasks MUST extend from App\Ship\Parents\Tasks\Task.

Folder Structure

 - app
- Containers
- {section-name}
- {container-name}
- Tasks
- ConfirmUserEmailTask.php
- GenerateEmailConfirmationUrlTask.php
- SendConfirmationEmailTask.php
- ValidateConfirmationCodeTask.php
- SetUserEmailTask.php
- ...

Code Sample

Task

class FindUserByIdTask extends Task
{
private $userRepository;

public function __construct(UserRepository $userRepository)
{
$this->userRepository = $userRepository;
}

public function run($id)
{
try {
$user = $this->userRepository->find($id);
} catch (Exception $e) {
throw new UserNotFoundException();
}

return $user;
}
}

Task usage from an Action

class ValidateUserEmailByConfirmationCodeAction extends Action
{
public function run($userId, $code)
{
app(ValidateConfirmationCodeTask::class)->run($userId, $code);
$user = app(FindUserByIdTask::class)->run($userId);
app(ConfirmUserEmailTask::class)->run($user);
}
}