Skip to main content
Version: 11.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);    }}